日期:2014-05-17  浏览次数:21126 次

datagridview分页跳转保持Checkbox选中状态问题
小弟用数组保存选中的行的ID,在翻页后对比数组中保存的ID,然后将已选中的行的CheckBox设置为选中状态。
但是我在翻页之后,只要选中的行是在该页第一行,这一行的CheckBox就不会打勾,然后点击datagridview的
任意一个单元格这一行才会显示为选中状态。

这是一开始选中的截图


下面是跳转回该页时的截图。注:这时点击任意单元格,就会跟上图一样了。另外我没有做点击行选中CheckBox。


有没有大神遇到过这种情况啊?或者有没有更好的记住CheckBox状态的方法?
datagridview checkbox 分页

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

我用的是三层,这是dal层的方法:
[code=csharp]public static DataTable GetTable2(int nowPage, int records)
       {
           string sql =string.Format( @"SELECT TOP " + records + " BianH,XingM FROM RenCaiC WHERE(BianH NOT IN(SELECT TOP  " + --nowPage * records + "  BianH FROM RenCaiC))");
           DataTable dt = DBHelper.GetDataSet(sql);
           return dt;
       }


Quote: 引用:

Quote: 引用:

还有一种情况:通过全选checkbox,选中当前页全部行,再翻页就不会出现上面的情况。


看下你的代码




看代码也没什么问题,你换成方式选中checkbox看下, ,用CellFormatting事件

也不行啊,把上面的ShowChecked()方法放到CellFormatting事件中,还是一样

那你这个ShowChecked 方法就得改改了 



private void dataGridView1_CellFormatting(object sender, 
        System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
    {
        if (dgdFBDX.Columns[e.ColumnIndex].Name.Equals("dgdCheckBox"))
        {
??string?bianH?=?dgdFBDX.Rows[e.RowIndex].Cells["bianH"].Value.ToString();
????????????????if?(checkDic.ContainsKey(bianH))
????????????????{
???????????????????e.Value?=?true;
????????????????}
        }
}


[/code]