質問

グリッドをオーバーライドし、いくつかの顧客機能を追加しています。機能の1つは、ページサイズを調整するドロップダウンです。顧客サーバーコントロールを使用してグリッドを拡張していますが、これはこれまでに行った作業に最適です。しかし、今、動的に追加されたコントロールを取得してポストバックを実行するのに少し苦労しています。ポストバックを開始するJavaScriptが存在しません。

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>

では、これはコントロールを「注入」するときに関係しますか?コントロールを動的に追加する必要がありますか?

役に立ちましたか?

解決

私が最初に気づいたのは、これを見逃しているということです:

pageSizeDropdown.AutoPostBack = true

しかし、それが機能するために必要なのかどうかはわかりません

他のヒント

&quot; AutoPostBack&quot;を設定する必要がありますドロップダウンリストをポストバックするにはtrueに設定します。そうしないと、別のコントロールがフォームをポストバックする必要があります(ただし、その場合、SelectedIndexChangedイベントが発生します)。

ページのライフサイクルの早い段階でコントロールpageSizeDropdownを作成し、イベントをフックする必要があると思います。 http://msdn.microsoft.com/en-us/library/ms178472.aspx 。動的に追加されたコントロールは、ページのLoadCompleteイベントの前に作成して、そのコントロールイベントを起動できるようにする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top