C # Как получить доступ к выпадающему списку в listview?

StackOverflow https://stackoverflow.com/questions/1001548

Вопрос

У меня есть listview.В моем listview у меня есть выпадающий список, который я хочу заполнить на своей странице codebehind.Только дело в том, что я не знаю, как получить доступ к этому webcontrol.Следующее не работает:

DropDownList ddl = (DropDownList)lvUserOverview.Controls[0];

Я знаю, что индекс равен 0, потому что выпадающий список - это единственный элемент управления в listview (также, когда я пробую index 1, я получаю исключение index out of range).

Кто-нибудь может сказать мне, как я могу получить доступ к выпадающему списку?На моей задней странице я хочу добавить элементы списка.

ASPX - код :

<asp:DropDownList ID="ddlRole" onload="ddlRole_Load" runat="server">
</asp:DropDownList>

Кодовая Привязка:

protected void ddlRole_Load(object sender, EventArgs e)
{
  DropDownList ddl = (DropDownList)lvUserOverview.FindControl("ddlRole");
  if (ddl != null)
  {
      foreach (Role role in roles)
          ddl.Items.Add(new ListItem(role.Description, role.Id.ToString()));
  }
}
Это было полезно?

Решение

Чтобы получить дескриптор выпадающего списка внутри собственного обработчика события загрузки, все, что вам нужно сделать, это привести sender в качестве выпадающего списка.

DropDownList ddlRole = sender as DropDownList;

Другие советы

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

Возможно, вы захотите использовать событие ItemDataBound для доступа к e.Item.FindControl("NameOfDropDownList"), которое позволит вам выполнять итерации по каждому созданному выпадающему списку.

Если вы создаете только один...почему это находится в ListView?

Попробуй это:

DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList");

Если ваши элементы управления привязаны к данным, обязательно попробуйте получить доступ к их потомкам после привязки данных.Я также могу помочь просто проверить объекты в отладчике перед этой строкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top