是不是某个地方把CurrentPageIndex指向-1了?跟踪

解决方案 »

  1.   

    删除后重新绑定,当绑定时判断if (DataGrid1.CurrentPageIndex > 0)
         DataGrid1.CurrentPageIndex = 1;
      

  2.   

    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>"); }
      

  3.   

    如果删除最后一页(刚好一条记录)时候,
    这时你还是从ViewState 中绑定数据源,可想而知,
    这是分页时候的一个典型bug,就是在你帮定数剧源的时候,
    从新判定一下CurrentPageIndex 得值是否超过了最大的页数。很简单的,祝你好运哟