привет, у меня теперь есть такой вид сетки.
<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
, я хочу изменить также все DropDowns внутри столбца 1
, как я могу это сделать?
protected void triggerDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
// what should I do here?
}
На самом деле я могу использовать 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
}
Внутри метода события вы должны получить доступ к DropDownList
, который находится в каждой строке GridView
. Таким образом вы можете привязать каждый DropDownList к любым нужным вам данным.
Эта ссылка показывает, как это сделать:
В основном:
Итерировать по каждой строке вашего GridView;
Найдите элемент управления DropDownList примерно так:
DropDownList mddl = GridView.Rows [2] .FindControl ("myDropDown1");
Привязать новые данные к mddl.
Скорее всего, gridview - это не то, что вам нужно. Способ изменения значения элемента управления, содержащегося в строке, обычно заключается в захвате хэндла нужного элемента управления с помощью e.Item.FindControl() из события ItemDataBound гридвью.
Проблема с вашим подходом заключается в том, что вы хотите, чтобы элемент управления вне gridview (triggerDropDown) взаимодействовал с одной строкой gridview. Вы хотите получить первую строку, первый столбец, последнюю строку, первый столбец или первый столбец для каждого элемента в гриде? Возможно, будет лучше, если вы возьмете цель выпадающего триггера, поместите его за пределы grid-вида и будете работать с ним напрямую.
Если вы действительно собираетесь менять элементы в ряду в гриде, подумайте о том, чтобы делать это в событии ItemDataBound грид-просмотра, и вы найдете множество примеров.