.NET Gridview SetPageIndex无法按预期工作

时间:2014-04-03 09:50:32

标签: c# asp.net events gridview indexing

SetPageIndex的MS documentation和工具提示

  

设置System.Web.UI.WebControls.GridView控件的页面索引   通过使用行索引

我有一个每行40行10行的GridView。传递行索引0按预期呈现第一页。传递行索引39再次按预期呈现最后一页。

传递14的行索引应该渲染第二页,它没有显示最后一页。传递行索引为1应该选择第一页,它显示第二页。

1 个答案:

答案 0 :(得分:2)

原来MS文档与行为不符。当GridView分页脚触发PageIndexChanging事件时,GridViewPageEventArgs的NewPageIndex属性的范围小于GridView.PageCount

当通过调用SetPageIndex触发PageIndexChanging时,NewPageIndex的值与传入的行索引相同。该值未按文档建议的那样进行更改。

解决方案是在调用SetPageIndex之前从自己的行索引计算页面索引。

if (rowIndex <= 0)
pageIndex = 0;
else
 {
   pageIndex = (int)Math.Floor((double)rowIndex / (double)myGridView.PageSize);
 }
myGridView.SetPageIndex(pageIndex);