2013-04-10 69 views
0

我有一個DropDownList()是在我隱藏渲染和填充通過MyView的ASP.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"屬性添加到上面的下拉列表。

我明白,Web服務器控件也在服務器上創建,它們需要runat =「server」屬性才能工作。

這可以做這個列表控制?

+1

注意您正在使用上面兩個不同的變量名稱(lbSearch + ddl)。我認爲這是一個錯字,不是嗎? – 2013-04-10 13:42:53

回答

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

謝謝...這就是最新 – 2013-04-10 13:53:50

+0

林不知道,但ListControl.SelectedIndexChanged事件是假設當選擇索引更改時觸發...當頁面加載我動態選擇一個項目(和事件觸發) ,並且我讓用戶可以根據在ddl中選擇的項目來選擇不同的項目(並觸發事件並填充ddl2)。我可能會錯過一些東西,但是當選定的索引被改變時應該發生改變。 – 2013-04-10 14:20:40

+0

@ChadSellers:ASP.NET中沒有事件是以編程方式觸發的。只有當用戶選擇了某個'SelectedIndexChanged'時纔會被觸發。這是期望的嗎?否則,你需要提供一個方法,比如'do_this_when_changed',你可以從事件處理程序(和其他地方)調用它。 – 2013-04-10 14:25:29

0

您可以使用此事件做...

ddl.SelectedIndexChanged