如何获取edititemplate(formview)中的标签值到文件后面的代码?

时间:2011-11-18 15:56:25

标签: asp.net sql-server-2008 webforms

我正在尝试将标签“telephoneidLabel”中输入的文本值带到我的代码隐藏文件中,以便在我的sqlcommand对象的where子句中设置值。 我该怎么做? edititemtemplate在formview中。

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

3 个答案:

答案 0 :(得分:1)

一旦你找到了正确的项目,你可以使用项目的FindControl方法,如下所示:

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

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

获取item对象的方式取决于代码的方式,如果您在整个formview控件上执行循环,或者获得editItem或{{1}等等......但selectedItem及其用法始终相同。

答案 1 :(得分:0)

这很容易做到 - 现在双向绑定应该自动为你做这个,假设你在SqlDataSource上用作GridView的数据源。这是我在SqlDataSource上的一些代码:

UpdateCommand="UPDATE [prov] SET provname=@provname, addr=@addr, tele=@tele WHERE provID=@provID "   >      
    <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>

现在,如果您想要访问label对象,那么在approproate事件处理程序中,您可以使用以下代码作为示例:

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

这是来自我的“搜索”按钮,从数据网格标题行的文本框中获取值。

答案 2 :(得分:0)

假设该行处于编辑模式,您应该能够从控件中获取值,如下所示:

//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;
    }
}

我想知道为此使用数据密钥是否更好:

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

代码隐藏:

string someValue = (string)GridView1.DataKeys[0]["SomeColumn"];