使用多个控件过滤datagridview [英] Filtering datagridview using multiple controls

查看:79
本文介绍了使用多个控件过滤datagridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Sqllite数据库并使用五个组合框过滤datagridview并且其工作正常但我的问题是当我在任何组合框中没有选择值时它无法工作因为我正在使用AND而且如果我将使用OR它不会给我想要的结果因为我想使用组合框中的所有选定值进行过滤。我的代码如下:

I am using Sqllite database and filtering a datagridview using five comboboxes and its working fine but my problem is when I dont select value in any of the combobox it does''nt work coz I am using AND and if I''ll use OR it''ll not give me desired result coz I want to filter using all the selected values in the combobox. My code is as follows:

DataView dv = new DataView();
        string voterlist = "select * from voters";
        DataTable dt = Database.myAdapter(voterlist);
        dv = dt.DefaultView;
        dataGridView1.DataSource = dv;
        dv.RowFilter = string.Format("consname= ''{0}'' AND area = ''{1}'' AND pollingstn = ''{2}'' AND wardno = ''{3}'' AND policestn = ''{4}''", combo_consname.SelectedItem, combo_Area.SelectedItem, combo_Polling.SelectedItem, combo_Ward.SelectedItem, combo_Police.SelectedItem);

推荐答案

稍微考虑一下:

Just be a little more thoughtful about it:
    StringBuilder sb = new StringBuilder();
    bool join = false;
    join = AddFilterData(sb, "cosname", combo_cosname.SelectedItem, join);
    ...
    dv.RowFilter = sb.ToString();
    ...

private bool AddFilterData(StringBuilder sb, string field, object value, bool join)
    {
    if (value != null)
        {
        string s = value.ToString();
        if (!string.IsNullOrEmpty(s))
            {
            if (join)
                {
                sb.Append(" AND ");
                }
            sb.AppendFormat("{0}='{1}' ", field, s);
            join = true;
            }
        }
    return join;
    }


这篇关于使用多个控件过滤datagridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆