Измените значение элемента управления внутри шаблона поля шаблона вида сетки

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

<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?
}
1
задан rob waminal 20 August 2010 в 03:04
поделиться

3 ответа

На самом деле я могу использовать 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
}
0
ответ дан 2 September 2019 в 21:58
поделиться

Внутри метода события вы должны получить доступ к 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.

2
ответ дан 2 September 2019 в 21:58
поделиться

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

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

Если вы действительно собираетесь менять элементы в ряду в гриде, подумайте о том, чтобы делать это в событии ItemDataBound грид-просмотра, и вы найдете множество примеров.

0
ответ дан 2 September 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: