GridView中某列为DropDownList,每行的DropDownList的数据源是由每行另一列的值决定
时间: 2024-04-29 19:23:47 浏览: 13
,可以通过GridView的RowDataBound事件来实现。具体步骤如下:
1. 在GridView的列中添加一个TemplateField,将该列的ItemTemplate设置为一个DropDownList控件。
2. 在GridView的RowDataBound事件中获取当前行的数据,并根据其中一列的值来设置DropDownList的数据源和选中项。
代码示例:
```
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// 获取当前行的数据
DataRowView dataRow = (DataRowView)e.Row.DataItem;
// 获取DropDownList控件
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
// 根据另一列的值设置DropDownList的数据源和选中项
string value = dataRow["ColumnName"].ToString();
if (value == "Value1")
{
ddl.DataSource = GetDataForValue1();
ddl.SelectedValue = dataRow["OtherColumnName"].ToString();
}
else if (value == "Value2")
{
ddl.DataSource = GetDataForValue2();
ddl.SelectedValue = dataRow["OtherColumnName"].ToString();
}
// 其他情况...
ddl.DataBind();
}
}
// 获取DropDownList的数据源
private DataTable GetDataForValue1()
{
// TODO: 返回数据源
}
private DataTable GetDataForValue2()
{
// TODO: 返回数据源
}
// 在aspx中添加以下代码:
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<!-- 其他列... -->
</Columns>
</asp:GridView>
```