从组合框中过滤数据 [英] Filter data from comboboxs

查看:81
本文介绍了从组合框中过滤数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在C#中有一个带有几个组合框的winforms应用程序。这些组合框显示来自SQL数据库的数据。我可以让组合框在listview中显示数据,但我想要的是过滤数据。例如,用户选择combobox1中的值并显示结果,但是当他在组合框2中选择一个值时,将仅显示具有来自combobox1的规则的相应值。这就像创建一个过滤器,但我无法弄清楚我如何在组合框之间进行交互。我的代码是:



我尝试过:



编辑:

I have a winforms app in C# with several comboboxes. these comboboxes display data from an SQL database. I can get the comboboxes to display the data in a listview, but what I want is to filter the data. For example, the user selects a value in combobox1 and the results appear, but when he selects a value in combobox 2 only the corresponding values with the rules from combobox1 will be displayed. it´s like creating a filter, but I cant figure out how I can interact between the comboboxes. The code I have is:

What I have tried:


string combo1value = desempenho.Text;
            string combo2value = valu.Text;
            string combo3value = fsolar.Text;
            string combo4value = select.Text;
            string combo5value = compo.Text;


            string query = "select [desc],[enchimento],[compo] from vidros  ";

            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;

            if (combo1value != "")
            {
                query += " where desempenho = @emp ";
                cmd.Parameters.Add("@emp", SqlDbType.NVarChar).Value = combo1value;
            }
            if (combo2value != "")
            {
                if (combo2value == "") query += " where valu = @emp2 ";
            
                    query += " and  valu = @emp2 ";
                cmd.Parameters.Add("@emp2", SqlDbType.NVarChar).Value = combo2value;
            }
            if (combo3value != "")
            {
                if (combo3value == "") query += " where fs = @emp3 ";
               
                    query += " and  fs = @emp3 ";
                cmd.Parameters.Add("@emp3", SqlDbType.NVarChar).Value = combo3value;
            }
            if (combo4value != "")
            {
                if (combo4value == "") query += " where sel = @emp4 ";
        
                    query += " and  sel = @emp4 ";
                cmd.Parameters.Add("@emp4", SqlDbType.NVarChar).Value = combo4value;
            }
            if (combo5value != "")
            {
                if (combo5value == "") query += " where fs = @emp5 ";
                else
                    query += " and  compo = @emp5 ";
                cmd.Parameters.Add("@emp5", SqlDbType.NVarChar).Value = combo5value;
            }
            cmd.CommandText = query;
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);


            DataTable DTT = new DataTable();
            sda.Fill(DTT);
            listView1.Items.Clear();
            for (int i = 0; i < DTT.Rows.Count; i++)
            {
                DataRow dr = DTT.Rows[i];
                ListViewItem listitem = new ListViewItem(dr["desc"].ToString());
                listitem.SubItems.Add(dr["enchimento"].ToString());
                listitem.SubItems.Add(dr["compo"].ToString());
                listView1.Items.Add(listitem);
            }
        }

推荐答案

试试这个



try this

private void desempenho_SelectedIndexChanged(object sender, EventArgs e)
        {
            FillData();
        }

       
        private void valu_SelectedIndexChanged(object sender, EventArgs e)
        {
            FillData();
        }

        private void FillData()
        {
            string combo1value = desempenho.Text;
            string combo2value = valu.Text;
            string query = "select [desc],[enchimento],[compo] from vidros  ";
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand.Connection = con;

            if (combo1value != "")
            {
                query += " where desempenho = @emp ";
                sda.SelectCommand.Parameters.Add("@emp", SqlDbType.NVarChar).Value = combo1value;


            }
            if (combo2value != "")
            {
                if (combo2value == "") query += " where valu = @emp2 ";
                else
                    query += " and  valu = @emp2 ";
                sda.SelectCommand.Parameters.Add("@emp2", SqlDbType.NVarChar).Value = combo2value;
            }
            sda.SelectCommand.CommandText = query;

            DataTable DTT = new DataTable();

            sda.Fill(DTT);
            listView1.Items.Clear();
            for (int i = 0; i < DTT.Rows.Count; i++)
            {
                DataRow dr = DTT.Rows[i];
                ListViewItem listitem = new ListViewItem(dr["desc"].ToString());
                listitem.SubItems.Add(dr["enchimento"].ToString());
                listitem.SubItems.Add(dr["compo"].ToString());
                listView1.Items.Add(listitem);
            }
        }


这篇关于从组合框中过滤数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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