如何在网格视图单元格中动态添加下拉列表
本文关键字:动态 添加 下拉列表 单元格 视图 网格 | 更新日期: 2023-09-27 18:25:10
我有一个网格视图,如果数据库为特定列返回null,我想插入一个从数据库填充的下拉列表。
这是我必须识别的代码。列为null,并且工作正常。
protected void viewThemeTypeAssociationsGridView_OnRowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells[1].Text == " ")
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//fill current rows cell with a dropdown list
}
}
此外,一旦我填充了行,当有多个版本的下拉列表时,我如何知道具体使用的是哪个下拉列表?
将可能填充的下拉列表作为行模板的一部分。默认情况下,使下拉列表不可见,然后仅当使用数据库中的数据填充时才使其可见。
在没有看到您的代码的情况下,我猜您正在使用TemplateField
来定义网格视图中的列,如下所示:
<asp:GridView id="viewThemeTypeAssociationsGridView" ruant="server" OnRowDataBound="viewThemeTypeAssociationsGridView_OnRowDataBound">
<Columns>
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<ItemTemplate>
<asp:DropDownList id="DropDownList1" runat="server" Visible="False">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
现在,对于网格视图中的每一行,当您处于RowDataBound
事件中时,您可以找到下拉列表,如下所示:
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Find the drop down list by name
DropDownList theDropDownList = (DropDownList)e.Row.FindControl("DropDownList1");
// Go get data from database and populate the drop down list
// Change visibility of drop down list here
theDropDownList.Visible = true;
}
注意:在网格视图的每一行中都会有一个名为DropDownList1
的控件,FindControl()
方法会为您正在处理的行获取"正确的控件"。