2013-04-10 67 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