无法在动态控件上的 GridView 中找到控件
Can't Find Controls in GridView on Dynamic Controls
我有一个 gridview,我在运行时向每个单元格添加文本框。但是,我似乎无法使用 findcontrol
访问这些控件
以下是我将文本框添加到网格视图的方法:
If e.Row.RowType = DataControlRowType.DataRow Then
For i = 1 To e.Row.Cells.Count - 1
Dim txtSchedule As New TextBox()
txtSchedule.ID = "txtSchedule" & i.ToString
e.Row.Cells(i).Controls.Add(txtSchedule)
Next
End If
当我去找控件时,它说它们什么都没有:
GridView1.Rows(0).Cells(cellindex).FindControl("txtSchedule" & cellindex.ToString)
编辑
问题是,在填充文本框后,它会重新创建文本框,因为我在行中创建了它们
在您添加控件的行的单元格中使用 FindControl:
GridView1.Rows(0).Cells(cellindex).FindControl("txtSchedule" & cellindex.ToString)
动态添加的文本框实际上并不存在。因此,您无法访问或找到它。您可以将文本框物理添加到网格 TemplateField 中并将其 visibility 设置为 false 就像代码段一样以下:
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Visible="False"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
之后,如果需要,您可以找到文本框并从后面的代码切换其可见性。
我有一个 gridview,我在运行时向每个单元格添加文本框。但是,我似乎无法使用 findcontrol
以下是我将文本框添加到网格视图的方法:
If e.Row.RowType = DataControlRowType.DataRow Then
For i = 1 To e.Row.Cells.Count - 1
Dim txtSchedule As New TextBox()
txtSchedule.ID = "txtSchedule" & i.ToString
e.Row.Cells(i).Controls.Add(txtSchedule)
Next
End If
当我去找控件时,它说它们什么都没有:
GridView1.Rows(0).Cells(cellindex).FindControl("txtSchedule" & cellindex.ToString)
编辑 问题是,在填充文本框后,它会重新创建文本框,因为我在行中创建了它们
在您添加控件的行的单元格中使用 FindControl:
GridView1.Rows(0).Cells(cellindex).FindControl("txtSchedule" & cellindex.ToString)
动态添加的文本框实际上并不存在。因此,您无法访问或找到它。您可以将文本框物理添加到网格 TemplateField 中并将其 visibility 设置为 false 就像代码段一样以下:
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Visible="False"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
之后,如果需要,您可以找到文本框并从后面的代码切换其可见性。