无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount

 
思路:
        
当删除数据库中数据并在数据绑定之前,判断是否需要翻页,以纠正 CurrentPageIndex 的错误。

实现:
        
DataGrid_Delete 方法中,添加如下代码:
       
        //
正常删除数据库中的数据
      

        
        
// 判断
        if( DataGrid1.Items.Count == 1 && DataGrid1.CurrentPageIndex > 0 )
        {
                DataGrid1.CurrentPageIndex--;
        }
        
        //
重新绑定数据
        BindGrid();

情况二(变种):
        
可能我们没有使用 DataGrid 内建的删除方式,可能通过 CheckBox 使得每次可以删除多条记录。

思路:
        
其实思路差不多,只不过要获取一次一共删除多少记录,并保存于一个变量中,然后将 DataGrid1.Items.Count 和其比较,正如上面的 DataGrid1.Items.Count == 1 ,这样就能判断是否需要翻页了。

实现:
       
 // 获取删除记录的总数
        int count = 0;
        foreach( DataGridItem item in DataGrid1.Items )
        {
                if( item.ItemType == ListItemType.Item || item.ItemType  == ListItemType.AlternatingItem )
                {
                        CheckBox ckbox = item.FindControl(“CheckBox1“ ) as CheckBox;
                        if( ckbox != null && ckbox.Checked )
                                ++ count;
                }
        }

        // 判断
        if( count == DataGrid1.Items.Count && DataGrid1.CurrentPageIndex > 0 )
        {
                -- DataGrid1.CurrentPageIndex;
        }
        
// 重新绑定数据
        BindGrid();

情况三(变种):
        
在我们的一个 Page 中,可能是根据某一条件进行筛选,然后再显示在 DataGrid 内。当 DataGrid 允许分页,也会出现类似的问题。即:当某一个条件筛选出的结果大于 1 页,并且我们浏览到第 2 ,或更后面的页,然后我们改变筛选的参数,重新获取结果并填充 DataGrid ,那么该错误提示又将出现!

思路:
        
思路就是,在改变筛选条件,进行筛选之前,我们应该判断 CurrentPageIndex 是否为第一页,即 CurrentPageIndex 应该等于 0 。如果不是则将其设置为 0

实现:
        
我们用一个 DropDownList 来实现筛选,在 SelectedIndexChanged 事件处理函数中,我们原来是这么写的:

private void lstProject_SelectedIndexChanged(object sender, System.EventArgs e)
{
       ShowData( lstProject.SelectedValue );
}

现在应该改为:
  private void lstProject_SelectedIndexChanged(object sender, System.EventArgs e)
  {
           if( viewAllWorkItem.CurrentPageIndex > 0 )
           {
                    viewAllWorkItem.CurrentPageIndex = 0;
           }

           ShowData( lstProject.SelectedValue );
  }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值