C # Как получить доступ к выпадающему списку в listview?
-
05-07-2019 - |
Вопрос
У меня есть 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");
Если ваши элементы управления привязаны к данным, обязательно попробуйте получить доступ к их потомкам после привязки данных.Я также могу помочь просто проверить объекты в отладчике перед этой строкой.