BK网络学院

首页搜索登录
首页业界网页平面多媒体程序数据库办公工具服务器系统网络安全站长认证壁纸
加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

如何解决DataGrid中删除记录后分页错误

[日期:2006-05-24] 作者: 来源: [字体: ]
经常遇到这样的问题,就是在DataGrid中删除了几条记录后,总页数已经改变,但当前所在的页并没有变,这时很有可能出现所在页小于总页数的可能,于会得到一个错误:当前页数不能小于0且不能大于总页数。

这个问题往往在设计时被忽略,而且在测试时也很容易忽略掉,因为如果只是一条一条的删除记录,那么在最后一页上只有一条记录,以及正好删除这条记录的机率很小,所以可能被忽略掉。如果这样,可以在删除记录的代码后添加这样语句子防止错误:
            if(this.DataGrid1.CurrentPageIndex>0&&e.Item.ItemIndex==0)
            {
                this.DataGrid1.CurrentPageIndex
--;
            }
上面条的条件正好是最后一页只有一条且要删除的。。。。

还有一种情况,就是在一页中一次删除了多条记录,这时候就要记录删除的总数量,并计算总页数以及当前页数用来区分是否要回一页。
        private void LinkButton1_Click(object sender, System.EventArgs e)
        {
            CheckBox m_checkBox;
            
int m_deleted        = 0;
            foreach(DataGridItem m_record in DataGrid1.Items)
            {
                m_checkBox        
= m_record.Cells[0].Controls[1as CheckBox;
                
long m_mailID    =0;
                
if(m_checkBox!=null&&m_checkBox.Checked)
                {
                    m_mailID    
= Convert.ToInt64(DataGrid1.DataKeys[m_record.ItemIndex]);
                    WaveMessages.DeleteMessagesByID(m_mailID);
                    m_deleted
++;
                }
            }
            
if((this.DataGrid1.Items.Count-m_deleted)/this.DataGrid1.PageSize<=this.DataGrid1.CurrentPageIndex)
            {
                
if(this.DataGrid1.CurrentPageIndex>0) this.DataGrid1.CurrentPageIndex--;
            }
            this.LoadMessagesData();
        }
其中最后两个IF就是用来判断是否满足条件并回滚一页。

关键词:错误 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (0)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款