2013-04-10 3 views
0

У меня есть DropDownList(), который визуализируется в моем коде и населенную MyViewASP.NET 2.0 динамически добавлять OnSelectedIndexChanged

Dim ddl As New DropDownList() 
ddl.ID = "ddlV_" & dtrw("col_id") & "_" & fixDisplayName(dtrw("display_name")) 
ddl.DataSource = myView 
ddl.DataTextField = "DDLTEXT" 
ddl.DataValueField = "DDLVALUE" 
ddl.AutoPostBack="true" 

ddl.DataBind() 

Я хотел бы добавить OnSelectedIndexChanged ="do_this_when_changed" атрибут в вышеприведенном списке.

Я понимаю, что элементы управления веб-сервера также созданы на сервере, и для их работы требуется атрибут runat = "server".

Можно ли это сделать для этого контроля списка?

+1

Обратите внимание, что вы используете два разных имени переменных выше (lbSearch + ddl). Я предполагаю, что это опечатка, не так ли? –

ответ

3

Вы можете добавить обработчик событий программно с AddHandler:

Dim ddl As New DropDownList() 
' ... ' 
AddHandler ddl.SelectedIndexChanged, AddressOf do_this_when_changed 

В этом классе:

Private Sub do_this_when_changed(sender As Object, e As EventArgs) 
    Dim ddl = DirectCast(sender, DropDownList) ' here it is' 
End Sub 
+0

спасибо ... вот что до –

+0

Я не уверен, но ListControl.SelectedIndexChanged Событие должно срабатывать при изменении индекса выбора ... когда страница загружается, я динамически выбираю элемент (и срабатывает событие) , и я даю пользователю возможность выбрать другой элемент (и запустить событие и заполнить ddl2) на основе того, какой элемент выбран в ddl. Я мог бы что-то упустить, но это изменение должно произойти, когда выбранный индекс изменен. –

+0

@ChadSellers: Никакие события в ASP.NET не запускаются программно. Только когда пользователь выбирает что-то, срабатывает 'SelectedIndexChanged'. Желательно? В противном случае вам необходимо предоставить метод, например 'do_this_when_changed', который вы можете вызвать из обработчика события (и из другого места). –

0

Вы можете сделать это с помощью этого события ...

ddl.SelectedIndexChanged 
Смежные вопросы