2011-11-18 4 views
0

"telephoneidLabel"레이블에 입력 된 텍스트 값을 내 코드 숨김 파일에 가져 와서 sqlcommand 객체의 where 절에서 값을 설정하려고합니다. 어떻게해야합니까? edititemtemplate이 formview 내에 있습니다. 당신이 경우 item 개체가, 당신의 코드는 방법에 따라 달라집니다 당신이 얻을(formview의) edititemplate에있는 label 값을 코드 숨김 파일에 저장하는 방법은 무엇입니까?

var myLabel = item.FindControl("telephoneidLabel") as Label; 

if(myLabel != null) 
{ 
    var myText = myLabel.Text; 
} 

방법 : 올바른 항목을 잡아 한 번

<EditItemTemplate > 
     telephoneid: 
     <asp:Label ID = "telephoneidLabel" runat="server" Text='<%# Bind ("telephoneid")%>' /> 

답변

1

는이 같은 FindControl 항목의 방법, 뭔가를 사용할 수 있습니다 전체 formview 컨트롤에 루프를 수행하거나 editItem 또는 selectedItem 등을 얻습니다. 그러나 FindControl과 그 사용법은 항상 동일합니다.

+0

고맙습니다 다비드 var에 telLabel = form1.FindControl ("telephoneidL abel ") 레이블로; 문자열 strtel = telLabel.Text; 그것은 일했다! – debutante

0

이 작업은 매우 간단합니다. GridView의 데이터 소스로 사용하는 SqlDataSource에서 가정하면 양방향 바인딩이 자동으로 수행됩니다.

Protected Sub dgProviders_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles dgProviders.RowCommand 
    Select e.CommandName 
     Case "Search" 
      Dim strProvName As String = CType(Me.dgProviders.HeaderRow.FindControl("txtSearchName"), TextBox).Text 
      If strProvName = String.Empty Then 
       Me.lblResults.Text = "<span style=""color:maroon"">You have to enter a search term: part of the name to do a search.</span><br />" 
      Else 
       Me.sqlProvList.SelectParameters.Clear() 
       If strProvName <> String.Empty Then 
        Me.sqlProvList.SelectCommand = "SELECT provID, provname, addr, tele FROM prov WHERE [provname] LIKE '%' + @username + '%' ORDER BY [provname]" 
        Me.sqlProvList.SelectParameters.Add("username", DbType.String, strProvName) 
       End If 
       Me.dgProviders.PageIndex = 0 
       Session("Select") = Me.sqlProvList.SelectCommand 
      End If 
    End Select 
End Sub 
: 당신이 다음 approproate 이벤트 처리기에서, 당신은 예를 들어 다음과 같은 코드를 사용할 수 있습니다, 라벨 객체에 도착하려면,

UpdateCommand="UPDATE [prov] SET [email protected], [email protected], [email protected] WHERE [email protected] " >  
    <UpdateParameters> 
     <asp:ControlParameter ControlID="dgProviders" Name="provID" PropertyName="SelectedValue" /> 
     <asp:Parameter Name="login" /> 
     <asp:Parameter Name="password" /> 
     <asp:Parameter Name="username" /> 
     <asp:Parameter Name="contact_email" /> 
     <asp:Parameter Name="bar_number" /> 
    </UpdateParameters> 

이제 : 저는 여기의 SqlDataSource에있는 일부 코드입니다

데이터 그리드의 머리글 행에있는 텍스트 상자의 값을 가져 오는 "검색"단추에서 가져온 것입니다. ,

//the row that's being edited 
GridViewRow row = GridView1.Rows[0]; 

if (row.RowState == DataControlRowState.Edit) 
{ 
    Label lblCtrl = row.FindControl("Label1") as Label; 
    if (lblCtrl != null) 
    { 
     string text = lblCtrl.Text; 
    } 
} 

는 이것에 대한 datakey를 사용하는 것이 더 좋을 수도 만약 내가 궁금하네요 :

+0

맨 아래에 크고 거대한 서식없는 코드가 있습니다. –

0

행이 편집 모드에 있음을 가정하면,이 같은 컨트롤에서 값을 얻을 수 있어야합니다 하지만 :

<asp:GridView ID="GridView1" runat="server" DataKeyNames="SomeColumn" ...> 

코드 숨김

string someValue = (string)GridView1.DataKeys[0]["SomeColumn"]; 
관련 문제