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

.NET Framework 4.8中ADGV筛选器保存后重启应用,筛选面板选项缺失问题的解决求助

.NET Framework 4.8中ADGV筛选器保存后重启应用,筛选面板选项缺失问题的解决求助

大家好,我目前在用.NET Framework 4.8开发桌面应用,搭配NuGet的Advanced DataGridView(ADGV)组件,遇到了一个筛选器保存后重启应用的异常问题,想请各位帮忙支招。

我的需求很明确:保存用户上次使用的筛选条件,下次打开应用时自动恢复这个筛选状态,但筛选面板里的所有可选值(比如"Assigned By"列的A、B、C、D、E)必须始终保持可见,不管之前选了哪个,用户随时能重新勾选其他值。

当前实现的代码逻辑

数据加载与筛选恢复代码

bindingSourceAssignments.DataSource = ConvertToDataTable(cachedAssignments);
dgvAssignments.DataSource = bindingSourceAssignments;

string lastFilter = Properties.Settings.Default.LastFilter;
bindingSourceAssignments.Filter = lastFilter;

筛选变更时的保存代码

private void dgvAssignments_FilterStringChanged(object sender, EventArgs e)
{
    this.bindingSourceAssignments.Filter = this.dgvAssignments.FilterString;
    Properties.Settings.Default.LastFilter = this.dgvAssignments.FilterString;
    Properties.Settings.Default.Save();
}

具体的异常现象

一开始加载全量数据和正常筛选都没问题:比如我在"Assigned By"列的筛选面板里只勾选"A",此时B、C、D、E依然在面板里,只是变成未勾选状态。但重启应用后,诡异的情况出现了——B、C、D、E直接从筛选面板里消失了,只剩"A"可选,完全不符合我要的效果。

重启前的正常筛选面板(所有选项都可见,部分未勾选):
Before

重启后的异常状态(仅保留之前选中的选项):
After

调试时我发现,如果把bindingSourceAssignments.Filter设为空字符串,所有选项会立刻重新显示;但加载保存的筛选条件时,这个筛选字符串是(Convert([AssignedByID], System.String) IN ('27')),一应用这个筛选,数据源就只剩符合条件的记录,导致ADGV的筛选面板只能从当前可见数据里生成选项,自然就看不到其他值了。

我想请教的问题

有没有办法让ADGV的筛选面板始终基于原始全量数据源来生成可选值,而不是过滤后的数据集?或者有没有其他正确的方式来保存和恢复筛选条件,同时保证筛选面板的所有选项不丢失?


备注:内容来源于stack exchange,提问作者ilterhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 03:40:27