日期:2014-05-17  浏览次数:20473 次

asp.net gridview 获取选定行所在页的问题
girdview的相关代码:
<asp:GridView ID="gvinfo" runat="server" AutoGenerateColumns="False" 
  Width="680px" AllowPaging="True" HorizontalAlign="Center" 
  onpageindexchanging="gvinfo_PageIndexChanging" 
  onrowcancelingedit="gvinfo_RowCancelingEdit" 
  onrowdatabound="gvinfo_RowDataBound" onrowdeleting="gvinfo_RowDeleting" 
  onrowediting="gvinfo_RowEditing" onrowupdating="gvinfo_RowUpdating">
  <Columns>
  <asp:BoundField DataField="iID" HeaderText="序号" />
  <asp:BoundField DataField="name" HeaderText="名称" />
  <asp:BoundField DataField="len" HeaderText="长度(米)" />
  <asp:BoundField DataField="width" HeaderText="宽度(米)" />
  <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
  <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
  </Columns>
  </asp:GridView>
  protected void gvinfo_PageIndexChanging(object sender, GridViewPageEventArgs e)
  {
  gvinfo.PageIndex = e.NewPageIndex;
  page = e.NewPageIndex;
  this.BindGridView();
  }

 protected void gvinfo_RowDeleting(object sender, GridViewDeleteEventArgs e)
  {
  int i = page * 10 + e.RowIndex;
  PointList.RemoveAt(i);

  this.BindGridView();
  }

我在gridview中设定了自动分页 每页10条数据,现在遇到一个问题就是:如何获取选中行所在的页数(page),之前我是用gvinfo_PageIndexChanging {gvinfo.PageIndex = e.NewPageIndex;}获取页数,但是这样达不到我的效果,因为如果用户不点击页码 就不会响应PageIndexChanging事件,page值就不会改变:比如数据一共4页,用户一直在最后点击gridview中的删除,把第四页的数据全部删除后,数据就会自动跳转到第三页,在点击第三页的数据时就会出错,因为此时page的值还是之前的数据3(应该是2才对,应为此时最后一页的数据已经没有了),这样在执行gvinfo_RowDeleting 时会出现异常,所以请教大家 如何获取正确获取选择数据的所在的页数

------解决方案--------------------
你能获取当前行所在总记录中的Index么?

如果能,那么当前页就是

page = index/页大小>0?index/页+1:index/页



page = index/10>0?index/10+1:index/10;
------解决方案--------------------
删除完成后 重新绑定一遍数据源 包括重新计算总页数等等……
------解决方案--------------------
protected void gvinfo_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int i = page * 10 + e.RowIndex;
PointList.RemoveAt(i);

this.BindGridView();
}

哥们 你这个是 假性删除吧!数据库中还是有数据的是吧??