【发布时间】:2010-09-20 22:59:48
【问题描述】:
使用标准 ASP.NET ListView 并启用 LinqDataSource 并启用分页(使用 DataPager),默认显示最后一页结果的最佳方式是什么?
【问题讨论】:
标签: asp.net listview pagination
使用标准 ASP.NET ListView 并启用 LinqDataSource 并启用分页(使用 DataPager),默认显示最后一页结果的最佳方式是什么?
【问题讨论】:
标签: asp.net listview pagination
我从来没有这样做过,但是有几个地方我会查看是否可以进行您想要的更改:数据源的 OnSelecting 处理程序、ListView 的 OnPreRender 或 OnDataBinding 以及 DataPager 的 OnPreRender。本质上,您希望以特殊方式处理!IsPostBack 的情况。我可能会先查看 DataPager,看看您是否可以找出有多少页并将其设置为最后一页。将页面设置为所需的页面后,您可能需要重新绑定数据源。之后,我会考虑为 ListView 添加一个 OnDataBinding 处理程序,看看你可以在那里做什么。我怀疑 PreRender 发生得太晚,ListView 没有任何效果,而 OnSelecting 虽然很适合通过基于表的函数进行过滤,但在这种情况下可能不会有多大好处。
【讨论】:
您需要知道总记录数和页面上显示的记录数。
This 有用的帖子向您展示了如何获取记录数:
private LinqDataSourceSelectEventArgs args;
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
args = e;
e.Result = new Database().Table.Whatever...
}
protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
this.label1.Text = args.Arguments.TotalRowCount + " records";
}
那里有进一步的讨论,听起来与你的情况相似。
【讨论】:
将当前页面索引设置为页数 - 1。
【讨论】: