【问题标题】:ASP.NET - GridView - How to programmatically add and read new controls to the cell?ASP.NET - GridView - 如何以编程方式向单元格添加和读取新控件?
【发布时间】:2011-03-03 09:42:15
【问题描述】:

设置如下: 我使用 LINQ to SQL 查询以编程方式填充我的 gridview。然后我进入编辑模式,想用 DropDownLists 替换一些标准的 TextBox 控件,如下所示:

'摘自 GridView1_RowEditing

    Dim ddlist1 As New DropDownList
    Dim res1 = From items1 In mydb.Items
             Select items1.Col10

    ddlist1.DataSource = res1
    ddlist1.DataBind()

    GridView1.Rows.Item(0).Cells(1).Controls.Add(ddlist1)

此时我的 gridview 显示标准文本框控件和新的 DDList 控件(在第 1 列中)。 问题是——我无法在 RowUpdating 方法中从 DDList 读取值。似乎 DDList 控件不在 GridView1.Rows.Item(0).Cells(1).Controls 集合中。 RowUpdating 方法只看到标准的 TextBox 控件并且可以读取它的值。 欢迎任何建议。我只是不明白这里的东西:(

【问题讨论】:

    标签: asp.net gridview editing


    【解决方案1】:

    使用 TemplateField,然后您可以使用 FindControl 找到您的下拉菜单

    <asp:GridView ID="GridView1" runat="server">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList1" runat="server">
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    

    ...

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
    
        Dim ddl = CType(GridView1.Rows(e.RowIndex).Cells(1).FindControl("DropDownList1"), DropDownList)
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2011-04-17
      • 2015-04-27
      • 2014-10-16
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多