排序列表视图

本文关键字:视图 列表 排序 | 更新日期: 2023-09-27 18:34:00

我有一个列表视图,我想排序。我的问题是,当我单击排序列时,Onsort 事件仅在我再次绑定页面加载数据时触发。这意味着在每个页面加载中,我首先必须绑定数据,然后我可以捕获 OnBinding 事件,然后我可以再次重新绑定数据。有没有更好的方法可以做到这一点。基本上我想要的是仅在onsort事件中绑定数据

<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>

排序列表视图

表明您始终在PageLoad中绑定,因此先前提供的订单会丢失。仅当IsPostback为假时才绑定。(需要将列表视图EnableViewState设置为 true,这是默认值)。

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

当用户单击"排序"按钮时,将触发事件,并且您的事件将相应地对数据进行排序和绑定。

如果页面被重新加载,并且您没有重新绑定它PageLoad这就足够了。

但是,如果由于某种原因您确实需要在 PageLoad 中重新绑定,您所要做的就是将排序存储在 ViewState ,一个HiddenFieldSession,以便您可以从那里获取值以在PageLoad中绑定数据之前对数据进行排序。

应获取排序并绑定到新方法的代码,并从 Sort 和 PageLoad 事件中调用它。