Управление DropDownList в TemplateField

У меня есть выпадающий список внутри TemplateField, в GridView.

Я хотел бы динамически добавлять элементы списка и писать код для обработки при изменении индекса. Как мне манипулировать списком, поскольку я не могу напрямую ссылаться на DropDownList, когда он находится в TemplateField.

Вот мой код:

<asp:TemplateField HeaderText="Transfer Location" Visible="false">
   <EditItemTemplate>
      <asp:DropDownList ID="ddlTransferLocation" runat="server" ></asp:DropDownList>
   </EditItemTemplate>
 </asp:TemplateField>

1 ответ

Если я понимаю, что вы хотите сделать правильно, вы можете обработать добавление элементов в выпадающий список следующим образом:

foreach (GridViewRow currentRow in gvMyGrid.Rows)
{
    DropDownList myDropDown = (currentRow.FindControl("ddlTransferLocation") as DropDownList);
    if (myDropDown != null)
    {
        myDropDown.Items.Add(new ListItem("some text", "a value"));
    }
}

Затем, если вы имеете в виду обработку изменения индекса DropDownList, вам просто нужно добавить обработчик событий в ваш элемент управления:

<asp:DropDownList ID="ddlTransferLocation" runat="server" OnSelectedIndexChanged="ddlTransferLocation_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>

Тогда в этом обработчике событий вы можете использовать (sender as DropDownList) чтобы получить все, что вам нужно от него:

protected void ddlTransferLocation_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList myDropDown = (sender as DropDownList);
    if (myDropDown != null) // do something
    {
    }
}
Другие вопросы по тегам