You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保存DevExpress GridView中的复选框选中状态?

DevExpress GridView 复选框选中状态保存方案

默认情况下,OptionsLayout.StoreAllOptions 仅保存布局相关配置(如列宽、排序规则),并不会存储行的选中状态——哪怕开启了CheckBoxRowSelect模式也没用。要实现关闭窗体后保留选中状态,需手动处理选中行的保存与恢复:

1. 保存选中行状态

选择行数据的唯一标识字段(如主键ID),在窗体关闭或需要触发保存的时机,收集选中行的标识并持久化(可存在配置文件、数据库或应用Settings中):

// 示例:将选中行ID保存到应用Settings
var selectedRowIds = gridView1.GetSelectedRows()
    .Select(rowHandle => gridView1.GetRowCellValue(rowHandle, "ID").ToString())
    .ToList();

Properties.Settings.Default.GridSelectedIds = string.Join(",", selectedRowIds);
Properties.Settings.Default.Save();

2. 加载时恢复选中状态

在GridView数据绑定完成后(比如窗体Load事件或数据源绑定后的回调),读取保存的标识列表,匹配行数据并设置选中:

// 示例:从Settings读取ID并恢复选中
if (!string.IsNullOrEmpty(Properties.Settings.Default.GridSelectedIds))
{
    var savedIds = Properties.Settings.Default.GridSelectedIds.Split(',').ToList();
    for (int rowIndex = 0; rowIndex < gridView1.RowCount; rowIndex++)
    {
        var currentRowId = gridView1.GetRowCellValue(rowIndex, "ID").ToString();
        if (savedIds.Contains(currentRowId))
        {
            gridView1.SelectRow(rowIndex);
        }
    }
}

注意事项

  • 必须在数据绑定完成后执行恢复操作,否则无法正确匹配行数据。
  • 若使用分页模式,需额外处理跨分页的选中状态保存与恢复(比如保存所有分页的选中ID,切换分页时自动选中对应行)。
  • 服务器模式下,避免直接依赖行句柄,需通过数据源主键匹配,防止行句柄失效。

内容的提问来源于stack exchange,提问作者weboshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:45:33