1

グリッドをオーバーライドして、いくつかの顧客機能を追加しています。機能の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>

それで、これは私がコントロールを「注入」しているときと関係がありますか?コントロールの動的な追加と関係がありますか?

4

3 に答える 3

2

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

pageSizeDropdown.AutoPostBack = true

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

于 2008-11-17T19:03:23.697 に答える
1

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

于 2008-11-17T19:02:25.633 に答える
1

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

于 2008-11-17T19:17:34.277 に答える