如何在gridview中获取编辑文本框的ID

时间:2013-12-06 08:50:50

标签: asp.net vb.net gridview

我想获取如下文本框的ID以添加验证器,客户端ID包含生成的字符串,也是唯一ID,但只有ID不包含任何内容,为什么?

Protected Sub GridView1_RowDataBound(ByVal sender As GridView, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

    'Manipulate only editing row.
    If e.Row.RowType = DataControlRowType.DataRow Then
        If sender.EditIndex = e.Row.RowIndex Then

            'Search textbox and add validators.
            For Each cell As TableCell In e.Row.Cells                
                If cell.Controls.Count = 1 AndAlso TypeOf (cell.Controls(0)) Is TextBox Then
                    Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox)

                    'txt.ID is nothing...why?
                    SetValidators(cell.Controls, txt.ID)
                End If
            Next
        End If
    End If
End Sub

3 个答案:

答案 0 :(得分:1)

这里有一个解决方法,如果适用于您的应用程序,

Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox)

                //'txt.ID is nothing...why?
                 // Here you can assign new ID to your control as per your logic

                    txt.ID = "newID"; 
                   SetValidators(cell.Controls, txt.ID)

答案 1 :(得分:1)

您可以尝试使用以下代码将验证器控件分配给gridview控件。 我不确定你使用SetValidators()函数做了什么。

Protected Sub GridView1_RowDataBound(ByVal sender As GridView, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

    'Manipulate only editing row.
    If e.Row.RowType = DataControlRowType.DataRow Then
        If sender.EditIndex = e.Row.RowIndex Then

            'Search textbox and add validators.
            For Each cell As TableCell In e.Row.Cells                
                If cell.Controls.Count = 1 AndAlso TypeOf (cell.Controls(0)) Is TextBox Then
                    Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox)

                    'txt.ID is nothing...why?
                    SetValidators(cell.Controls, txt.ClientID)
                End If
            Next
        End If
    End If
End Sub

答案 2 :(得分:1)

最后,我通过应用下面的解决方法解决了这个问题。

            Dim txt As TextBox = DirectCast(cell.Controls(0), System.Web.UI.WebControls.TextBox)

            'The ID is generated by to refer ClientID.
            Dim foo = txt.ClientID

            'Therefore, already txt.ID is not nothing.
            SetValidators(cell.Controls, txt.ID)

感谢您的合作。