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

如何在C#中实现DataGridViewCheckBoxColumn三种状态过滤?

实现DataGridView复选框列的三种视图过滤需求

我来帮你完善这个过滤逻辑,核心思路是利用BindingSource的Filter属性实现数据筛选,这种方式比手动控制行的显示隐藏更高效,也更贴合数据绑定的设计规范。

先看你的原有代码框架:

private void listBoxBehandeld_SelectedValueChanged(object sender, EventArgs e) 
{ 
    string listBoxValue = "Alle"; 
    listBoxValue = listBoxBehandeld.GetItemText(listBoxBehandeld.SelectedItem); 
    switch (listBoxValue) 
    { 
        case "Alle": 
            //Show checked and unchecked 
            break; 
        case "Ja": 
            //show checked 
            break; 
        case "Nee": 
            //show unchecked 
    } 
    break; 
} 
dataGridView.DataSource = meldingenBindingSource;

下面是补充完整过滤逻辑后的代码,请把代码里的IsChecked替换成你实际绑定到复选框列的数据源字段名:

private void listBoxBehandeld_SelectedValueChanged(object sender, EventArgs e) 
{ 
    string listBoxValue = listBoxBehandeld.GetItemText(listBoxBehandeld.SelectedItem);
    // 处理空选择的情况,默认显示全部
    if(string.IsNullOrEmpty(listBoxValue)) listBoxValue = "Alle";

    switch (listBoxValue) 
    { 
        case "Alle":
            // 清空过滤条件,显示所有数据
            meldingenBindingSource.Filter = string.Empty;
            break;
        case "Ja":
            // 筛选出复选框被勾选的行(替换IsChecked为你的实际字段名)
            meldingenBindingSource.Filter = "IsChecked = true";
            break;
        case "Nee":
            // 筛选出复选框未被勾选的行(替换IsChecked为你的实际字段名)
            meldingenBindingSource.Filter = "IsChecked = false";
            break;
    }
}

关键说明:

  • 新增了空值判断,避免列表无选中项时出现异常
  • BindingSource.Filter支持类SQL WHERE子句的语法,直接通过字段值就能完成筛选
  • 务必确保IsChecked是你数据源中对应复选框列的真实字段名,比如如果你的复选框绑定的是Behandeld字段,就改成Behandeld = true

另外要确认meldingenBindingSource已经正确绑定数据源,且DataGridView的复选框列已和对应字段完成绑定,这样过滤才能正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:55:38