排序列表视图
本文关键字:视图 列表 排序 | 更新日期: 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
,一个HiddenField
或Session
,以便您可以从那里获取值以在PageLoad
中绑定数据之前对数据进行排序。
应获取排序并绑定到新方法的代码,并从 Sort 和 PageLoad
事件中调用它。