2011-11-18 3 views
0

"telephoneidLabel"というラベルに入力されたテキストの値を自分のコードビハインドファイルに持ってきて、sqlcommandオブジェクトのwhere節に値を設定しようとしています。 どうすればいいですか? edititemtemplateはformview内にあります。もしあればitemオブジェクトは、あなたのコードがどのように依存してあなたが得る(フォームビューの)edititemplateのラベル値をコードビハインドファイルに取得する方法は?

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"];