2009-06-16 2 views
2

У меня есть список. В моем списке у меня есть dropdownbox, который я хочу заполнить на моей странице кода. Только дело в том, что я не знаю, как получить доступ к этому webcontrol. Ниже не работает:C# Как получить доступ к выпадающему меню в списке?

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

Я знаю, индекс 0, потому что DropDownList является единственным элементом управления на ListView (также, когда я пытаюсь индекс 1 я получаю индекс из исключения диапазона).

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

ASPX Код:

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

Codebehind:

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())); 
    } 
} 
+0

Можете ли вы показать свой полный код страницы ASPX ... или вы можете отправить мне по электронной почте .. Я думаю, что есть что-то на странице ASPX, которая создает проблему ?? –

ответ

1

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

DropDownList ddlRole = sender as DropDownList; 
+0

Thnx. Можно ли отправить дополнительный параметр? Может быть, так что eventArgs получает дополнительную собственность? что-то вроде этого: и в коде в событии загрузки: e.id Надеюсь, вы поняли, что я имею в виду. – Martijn

0

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

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

Идентификатор моего раскрывающегося списка установлен в ddlRole. Когда я использую DropDownList ddl = (DropDownList) lvUserOverview.FindControl ("ddlRole"); он не работает. – Martijn

+0

Опубликуйте свой код ASPX для ListView, возможно, с ним возникла проблема. –

+0

Посмотреть мой стартовый стол – Martijn

2

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

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

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

+0

Посмотреть мой стартовый стол – Martijn

0

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