嗨,我有这样的网格视图。
<asp:DropDownList ID="triggerDropDown" runat="server" AutoPostBack="true" onselectedindexchanged="triggerDropDown_SelectedIndexChanged">
<asp:GridView ID="myGridView" run="server">
<Columns>
<asp:TemplateField HeaderText="Column 1">
<ItemTemplate>
<asp:DropDownList ID="myDropDown1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Column 2">
<ItemTemplate>
<asp:DropDownList ID="myDropDown2" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
现在,当我更改triggerDropDown
时,我想更改Column 1
内的所有DropDowns,我该怎么做?
protected void triggerDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
// what should I do here?
}
答案 0 :(得分:2)
在您的活动方法中,您应该访问位于DropDownList
每行中的GridView
。这样做可以将每个DropDownList绑定到您想要的任何数据。
此链接显示了如何执行此操作:
基本上:
迭代GridView的每一行;
使用以下内容查找DropDownList控件:
DropDownList mddl = GridView.Rows[2].FindControl("myDropDown1");
将新数据绑定到mddl。
答案 1 :(得分:0)
gridview很可能不是你想要的。更改行中包含的控件的值的方法通常是使用gridview的ItemDataBound事件中的e.Item.FindControl()来获取所需控件的句柄。
您的方法的问题在于您希望gridview(triggerDropDown)之外的控件与gridview的单行交互。您是否希望网格中每个项的第一个行,第一列,最后行,第一列或第一列?您可以更好地获取触发器下拉列表的目标并将其置于gridview之外并直接处理它。
如果你真的打算在网格中连续更改项目,请考虑在gridview的ItemDataBound事件中这样做,你会发现很多例子。
答案 2 :(得分:0)
实际上我可以使用GridViewRow
:)我只需要找到GridViewControl并获取Rows
属性GridViewRow
,现在我可以对每一行进行操作。
foreach (GridViewRow gridViewRow in (this.FindControl("myGridView") as GridView).Rows)
{
// I can see all elements of my row here as if I am traversing on GridViewEvents
}