Изменить значение элемента управления внутри шаблона поля gridview - PullRequest
1 голос
/ 20 августа 2010

привет, у меня есть такой вид сетки.

<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 внутри Column 1, как я могу это сделать?

protected void triggerDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    // what should I do here?
}

Ответы [ 3 ]

2 голосов
/ 20 августа 2010

Внутри вашего метода события вы должны получить доступ к DropDownList, который находится в каждой строке GridView. Делая это, вы можете привязать каждый DropDownList к любым данным, которые вы хотите.

Эта ссылка показывает вам, как это сделать:

http://www.velocityreviews.com/forums/t191319-need-help-with-accessing-a-control-within-a-template-field.html

В основном:

  • Итерация по каждой строке вашего GridView;

  • Найдите элемент управления DropDownList, например:

    DropDownList mddl = GridView.Rows[2].FindControl("myDropDown1");

  • Привязать новые данные к mddl.

0 голосов
/ 23 августа 2010

На самом деле я могу использовать GridViewRow :) Мне просто нужно найти GridViewControl и получить его атрибут Rows, который является GridViewRow, и теперь я могу сделать foreach для каждой строки.

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
}
0 голосов
/ 20 августа 2010

Вид сетки, скорее всего, здесь не тот, который вам нужен.Чтобы изменить значение элемента управления, содержащегося в строке, обычно используется захват дескриптора нужного элемента управления с помощью e.Item.FindControl () из события ItemDataBound в gridview.

Проблема с вашимподход заключается в том, что вы хотите, чтобы элемент управления вне gridview (triggerDropDown) взаимодействовал с одной строкой gridview.Вы хотите, чтобы первый ряд , первый столбец, последний ряд , первый столбец или первый столбец для каждого элементов в сетке?Вероятно, лучше взять цель раскрывающегося списка триггера и поместить ее за пределы сетки и работать с ней напрямую.

Если вы действительно хотите изменить элементы в строке в сетке, подумайте об этом в событии ItemDataBoundиз сетки, и вы найдете много примеров там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...