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

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

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

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

转载于:https://www.cnblogs.com/WuCountry/archive/2006/02/21/334518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值