在Web用户控件中以编程方式添加控件添加事件

时间:2012-07-18 12:15:11

标签: asp.net events webusercontrol

我试图把 - 看起来很简单 - 非常简单的网络用户控件

基本上我希望它基于属性呈现为下拉列表/ checkboxlist或radiolist 但也希望能够找出所选的内容

我正在尝试以下方法 - 但似乎无法解决如何附加到listcontrol的selectedindexchanged以便我可以设置选择的值(s) 它没有帮助我的VB不是很多,但我被迫在这种情况下使用它 它甚至没有给我这个活动的智力......

   Public Options As List(Of Options)
    Public ControlRenderType As ControlRenderType
    Public IncludeFreeOption As Boolean
    Public SelectedOptions As List(Of Options)

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

        Dim c As ListControl
        Select Case (ControlRenderType)
            Case STGLib.ControlRenderType.CheckBoxList
                c = New CheckBoxList()
            Case STGLib.ControlRenderType.DropdownList
                c = New DropDownList()
            Case STGLib.ControlRenderType.RadioButtonList
                c = New RadioButtonList()

            Case Else
                Throw New Exception("No Render Type Specified")
        End Select

        For Each opt In Options
            Dim li = New ListItem(opt.Description, opt.ID)
            c.Items.Add(li)
        Next

        c.SelectedIndexChanged += ..?? or something
        Page.Controls.Add(c)

    End Sub
任何人都可以解释一下 - 我当然很可能以完全错误的方式解决这个问题。

感谢

1 个答案:

答案 0 :(得分:1)

首先创建一个Sub或一个Function来处理动态创建的对象的IndexChange,并确保Sub的签名是这样的

Sub myOwnSub(ByVal sender As Object, ByVal e As EventArgs)
...
...  Handle your event here
...
End Sub

然后在创建对象后添加以下代码

Dim obj as ListBox
AddHandler obj.SelectedIndexChanged, AddressOf myOwnSub