DataGrid中删除分页最后一条记录时PageIndex错误的解决方法
我们的DataGrid完成后。编译和执行页,会看到一切都很顺利。不过,当跳转到最后一个页,开始删除页上的所有记录,删除到当页最后一行后,注意会发生什么。应该产生一个PageIndex错误。
解决的方法很简单!
首先,你需要知道在最后一页上有多少数据项。为此,需要对Item Count和Page Size使用Mod(取模)运算符。由于Mod运算符返回的只是余数,所以绝对不会有任何多余的数据需要处理。如果页上只余一项,那么占位符变量Result就等于1。
由于DataGrid的CurrentPageIndex属性是一个从0开始的索引,而PageCount属性从1开始,所以必须从页计数上减2(而不是1),才能在删除之后回退一页。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace XH3
public class XH : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgrd;
//我封装的数据库操作类,以下为引用语句
protected Config conn = new Config();
private void Page_Load(object sender, System.EventArgs e)
{
//数据绑定
DataBinds();
}
Web 窗体设计器生成的代码Web 窗体设计器生成的代码
private void dgrd_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//删除按扭
if(e.CommandName =="Delete")
{
//在分页状态下删除DATAGRID中的记录需要转换CurrentPageIndex值
//以避免当result值为1时出错
int result=dgrd.Items.Count%dgrd.PageSize;
if (result==1)
{dgrd.CurrentPageIndex = (dgrd.PageCount - 2);}
//读取该表主键字段
string rowToDelete1 = e.Item.Cells[1].Text;
string rowToDelete2 = e.Item.Cells[2].Text;
//从数据库中删除
string str="DELETE FROM DB where DB_1="+"'"+rowToDelete1+"'"+" and DB_2="+"'"+rowToDelete2+"'"+"";
conn.ExecuteNonQuery (str);
//重新绑定数据
DataBinds();
}
}
/// <summary>
/// 数据绑定
/// </summary>
private void DataBinds()
{ //检索数据库
string strSql="SELECT * FROM DB";
//得到数据集
dgrd.DataSource=conn.GetDs(strSql).Tables[0].DefaultView;
dgrd.DataBind();
}
/// <summary>
/// 翻页功能
/// </summary>
private void dgrd_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dgrd.CurrentPageIndex =e.NewPageIndex ;
dgrd.DataBind ();
}
}
}
解决的方法很简单!
首先,你需要知道在最后一页上有多少数据项。为此,需要对Item Count和Page Size使用Mod(取模)运算符。由于Mod运算符返回的只是余数,所以绝对不会有任何多余的数据需要处理。如果页上只余一项,那么占位符变量Result就等于1。
由于DataGrid的CurrentPageIndex属性是一个从0开始的索引,而PageCount属性从1开始,所以必须从页计数上减2(而不是1),才能在删除之后回退一页。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
{
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)