急急!!DataGrid在分页状态下删除纪录的问题 是不是某个地方把CurrentPageIndex指向-1了?跟踪 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 删除后重新绑定,当绑定时判断if (DataGrid1.CurrentPageIndex > 0) DataGrid1.CurrentPageIndex = 1; using System.Text.RegularExpressions;-----------别忘了//数据绑定 private void BindGrid() { dataoperate dp = new dataoperate("ConnStrNetBar"); string cmStr = "SELECT MemID, UserName, NickName, RegTime, "+ "CASE WHEN Validate = '1' THEN '已通过审查' WHEN Validate = '0' THEN '未通过审查' "+ "END AS Validate "+ "FROM flash_member "+ "ORDER BY RegTime DESC"; SqlDataAdapter da = new SqlDataAdapter(cmStr,dp.Cn); DataSet ds = new DataSet(); da.Fill(ds, "members"); DG_Report.DataSource = ds.Tables["members"].DefaultView; DG_Report.DataBind(); TotalRecord.Text = ds.Tables["members"].Rows.Count.ToString(); PageFooter(); } //页数、第几页统计显示 private void PageFooter() { TotalPage.Text="共:"+DG_Report.PageCount+"页"; PageNo.Text="当前第: "+((int)DG_Report.CurrentPageIndex+1)+" 页"; } //上一页 private void Back_Click(object sender, System.EventArgs e) { if(DG_Report.CurrentPageIndex <= 0) Response.Write("<script>alert('已是第一页!');</script>"); else { DG_Report.CurrentPageIndex -= 1; BindGrid(); int PageNum = this.DG_Report.CurrentPageIndex + 1; this.JumpPage.Text = PageNum.ToString(); } } //下一页 private void Next_Click(object sender, System.EventArgs e) { if(DG_Report.CurrentPageIndex >= DG_Report.PageCount-1) Response.Write("<script>alert('已到最后一页!');</script>"); else { DG_Report.CurrentPageIndex += 1; BindGrid(); int PageNum = this.DG_Report.CurrentPageIndex + 1; this.JumpPage.Text = PageNum.ToString(); } } //转到第几页 private void Jump_Click(object sender, System.Web.UI.ImageClickEventArgs e) { Regex digitregex = new Regex(@"^[0-9]\d*[.]?\d*$"); if (!digitregex.IsMatch(JumpPage.Text)) { JumpPage.Text=""; Response.Write("<script>alert('只能输入数字!');</script>"); } else { int js; js=Convert.ToInt32(JumpPage.Text.ToString())-1; if (js>DG_Report.PageCount-1) { Response.Write("<script>alert('输入的数值要在总页数范围之内!');</script>"); } else if(js<0) { Response.Write("<script>alert('输入的数值要在总页数范围之内!');</script>"); } else { DG_Report.CurrentPageIndex=js; BindGrid(); } } } //绑定 private void DG_Report_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if(e.Item.ItemIndex > -1) e.Item.Cells[2].Text = Convert.ToString(Convert.ToInt32(DG_Report.CurrentPageIndex)*15 + e.Item.ItemIndex + 1); e.Item.Cells[7].Attributes.Add("onclick", "if(confirm('您确信要删除吗?')){}else{return false}"); } //删除用户 private void DG_Report_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { Member m = new Member(); int flag = m.MemberDel(Convert.ToInt32(e.Item.Cells[1].Text)); if(flag > 0 ) { Response.Write("<script>alert('删除成功!');</script>"); BindGrid(); } else Response.Write("<script>alert('删除失败!');</script>"); } 如果删除最后一页(刚好一条记录)时候,这时你还是从ViewState 中绑定数据源,可想而知,这是分页时候的一个典型bug,就是在你帮定数剧源的时候,从新判定一下CurrentPageIndex 得值是否超过了最大的页数。很简单的,祝你好运哟 请教一个类型转化的问题 对保存到数据库的数据加密解密 如何在datagridview中指定的单元格输入数字 关于listview和datagridview的问题.. 在Remoting中,如何判断一个远程对象有无断开呢? C#+SQL SERVER2000连接池原理是什么?什么时候,怎么使用连接池 莫明其妙的问题,折腾了一天没好,紧急求救,各位高手快来指点迷津 请问抽象类中没有抽象方法,那么在现实中,抽象类和普通类还有什么区别吗 如何实现把对象从剪切板粘贴? 問一個關於switch語句的問題 关于XMl的错误 求查找下一个TreeNode的思路!!!
DataGrid1.CurrentPageIndex = 1;
//数据绑定
private void BindGrid()
{
dataoperate dp = new dataoperate("ConnStrNetBar");
string cmStr = "SELECT MemID, UserName, NickName, RegTime, "+
"CASE WHEN Validate = '1' THEN '已通过审查' WHEN Validate = '0' THEN '未通过审查' "+
"END AS Validate "+
"FROM flash_member "+
"ORDER BY RegTime DESC";
SqlDataAdapter da = new SqlDataAdapter(cmStr,dp.Cn);
DataSet ds = new DataSet();
da.Fill(ds, "members");
DG_Report.DataSource = ds.Tables["members"].DefaultView;
DG_Report.DataBind();
TotalRecord.Text = ds.Tables["members"].Rows.Count.ToString();
PageFooter();
} //页数、第几页统计显示
private void PageFooter()
{
TotalPage.Text="共:"+DG_Report.PageCount+"页";
PageNo.Text="当前第: "+((int)DG_Report.CurrentPageIndex+1)+" 页";
} //上一页
private void Back_Click(object sender, System.EventArgs e)
{
if(DG_Report.CurrentPageIndex <= 0)
Response.Write("<script>alert('已是第一页!');</script>");
else
{
DG_Report.CurrentPageIndex -= 1;
BindGrid();
int PageNum = this.DG_Report.CurrentPageIndex + 1;
this.JumpPage.Text = PageNum.ToString();
}
} //下一页
private void Next_Click(object sender, System.EventArgs e)
{
if(DG_Report.CurrentPageIndex >= DG_Report.PageCount-1)
Response.Write("<script>alert('已到最后一页!');</script>");
else
{
DG_Report.CurrentPageIndex += 1;
BindGrid();
int PageNum = this.DG_Report.CurrentPageIndex + 1;
this.JumpPage.Text = PageNum.ToString();
}
} //转到第几页
private void Jump_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
Regex digitregex = new Regex(@"^[0-9]\d*[.]?\d*$");
if (!digitregex.IsMatch(JumpPage.Text))
{
JumpPage.Text="";
Response.Write("<script>alert('只能输入数字!');</script>");
}
else
{
int js;
js=Convert.ToInt32(JumpPage.Text.ToString())-1;
if (js>DG_Report.PageCount-1)
{
Response.Write("<script>alert('输入的数值要在总页数范围之内!');</script>");
}
else if(js<0)
{
Response.Write("<script>alert('输入的数值要在总页数范围之内!');</script>");
}
else
{
DG_Report.CurrentPageIndex=js;
BindGrid();
}
}
} //绑定
private void DG_Report_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemIndex > -1)
e.Item.Cells[2].Text = Convert.ToString(Convert.ToInt32(DG_Report.CurrentPageIndex)*15 + e.Item.ItemIndex + 1);
e.Item.Cells[7].Attributes.Add("onclick", "if(confirm('您确信要删除吗?')){}else{return false}");
} //删除用户
private void DG_Report_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Member m = new Member();
int flag = m.MemberDel(Convert.ToInt32(e.Item.Cells[1].Text));
if(flag > 0 )
{
Response.Write("<script>alert('删除成功!');</script>");
BindGrid();
}
else
Response.Write("<script>alert('删除失败!');</script>"); }
这时你还是从ViewState 中绑定数据源,可想而知,
这是分页时候的一个典型bug,就是在你帮定数剧源的时候,
从新判定一下CurrentPageIndex 得值是否超过了最大的页数。很简单的,祝你好运哟