0

並べ替えたいリストビューがあります。私の問題は、並べ替え列をクリックすると、ページロード時にデータを再度バインドしたときにのみ Onsorting イベントが発生することです。これは、すべてのページロードで、最初にデータをバインドする必要があることを意味します。次に、OnBinding イベントをキャッチし、その後でデータを再度バインドできます。これを行うより良い方法はありますか。基本的に私が欲しいのは、オンソートイベントでのみデータをバインドすることです

<asp:ListView ID="TempList" runat="server" OnSorting="TempList_sorting">
    <LayoutTemplate>
        <table >
            <tr>
                <th >
                    <asp:LinkButton runat="server" ID="btnSortVoorletters2" CommandName="Sort" Text="Voorletters"
                        CommandArgument="Voorletters" OnClick="btnSortVoorletters_Click" />
                </th>
            </tr>
              <tr runat="server" id="itemPlaceholder">
            </tr>
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <asp:Label ID="EmpIDLabel" runat="server" Text='<%# Eval("Naam") %>'/>
            </td>
        </tr>
    </ItemTemplate>
    <EmptyDataTemplate> 
    <p>Empty text that will be displayed.</p> 
</EmptyDataTemplate>
4

1 に答える 1

0

PageLoad以前に提供された注文が失われるように、常にバインドしていることをお勧めします。IsPostbackが false の場合にのみバインドします。EnableViewState(ListViewをデフォルト値である true に設定する必要があります)。

 if(!IsPostback)
 {
   // do the binding
 }

ユーザーが [並べ替え] ボタンをクリックすると、イベントが発生し、それに応じてイベントがデータを並べ替えてバインドします。

ページがリロードされ、再バインドしない場合は、PageLoadこれで十分です。

ただし、何らかの理由で本当に に再バインドする必要がある場合PageLoadは、並べ替えを に格納するViewStateHiddenFieldSessionそこから値を取得して にバインドする前にデータを並べ替えることができますPageLoad

ソートして新しいメソッドにバインドするコードを取得し、Sort とPageLoadイベントの両方から呼び出す必要があります。

于 2012-05-14T10:22:20.560 に答える