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();
}
哥们 你这个是 假性删除吧!数据库中还是有数据的是吧??