无法在动态控件上的 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>

之后,如果需要,您可以找到文本框并从后面的代码切换其可见性。