代码之家  ›  专栏  ›  技术社区  ›  oglester

动态添加的控件不执行回发

  •  1
  • oglester  · 技术社区  · 16 年前

    Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
        Dim pageSizePanel As New Panel
        ...
        Dim countList As List(Of String) = GetCountList()
        Dim pageSizeDropdown As New DropDownList()
        pageSizeDropdown.ID = "pageSizeDropdown"
        pageSizeDropdown.DataSource = countList
        pageSizeDropdown.DataBind()
    
        AddHandler pageSizeDropdown.SelectedIndexChanged, _
                   AddressOf HandlePageSizeChange
    
        pageSizePanel.Controls.Add(pageSizeDropdown)
        ...
        MyBase.Controls.AddAt(0, pageSizePanel)
        MyBase.OnPreRender(e)
    End Sub
    

    HTML是

    <select name="tab$grid1Tab$RadGrid1$pageSizeDropdown" 
        id="tab_grid1Tab_RadGrid1_pageSizeDropdown">
            <option selected="selected" value="10">10</option>
            <option value="20">20</option>
            <option value="40">40</option>
            <option value="80">80</option>
            <option value="All">All</option>
    
        </select>
    

    那么,这是否与我“注射”控件有关?它是否与控件的动态添加有关?

    3 回复  |  直到 11 年前
        1
  •  2
  •   John    16 年前

    我注意到的第一件事是你会错过这个:

    pageSizeDropdown.AutoPostBack = true
    

        2
  •  1
  •   FlySwat    16 年前

    您需要将“AutoPostBack”设置为true,以便使用下拉列表进行回发。否则,另一个控件将不得不将表单发回(但是,发生时将触发SelectedIndexChanged事件)。

        3
  •  1
  •   PhilHoy    16 年前

    http://msdn.microsoft.com/en-us/library/ms178472.aspx . 需要在pages LoadComplete事件之前创建动态添加的控件,以便触发其控件事件。

    推荐文章