【问题标题】:c# use comboboxes to filter sql datac# 使用组合框过滤sql数据
【发布时间】:2017-06-28 21:11:24
【问题描述】:

我有一个 C# 中的 winforms 应用程序,其中包含多个 comboboxes。这些组合框显示来自 SQL 数据库的数据。我可以让组合框在listview 中显示数据,但我想要的是过滤数据。 例如,用户在combobox1 中选择了一个值,结果就会出现,但是当他在combobox 2 中选择一个值时,只会显示具有combobox1 规则的对应值。 这就像创建一个过滤器,但我不知道如何在组合框之间进行交互。 我的代码是:

 private void desempenho_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlDataAdapter sda = new SqlDataAdapter(@"select [desc],[enchimento],[compo] from vidros where desempenho = @emp", con);
            sda.SelectCommand.Parameters.Add("@emp", SqlDbType.NVarChar).Value = desempenho.Text;
            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);
            }
        }
        private void valu_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlDataAdapter SDA2 = new SqlDataAdapter(@"select [desc],[enchimento],[compo] from vidros where valu = @emp2", con);
            SDA2.SelectCommand.Parameters.Add("@emp2", SqlDbType.NVarChar).Value = valu.Text;
            DataTable DTT2 = new DataTable();
            SDA2.Fill(DTT2);
            listView1.Items.Clear();
            for (int i = 0; i < DTT2.Rows.Count; i++)
            {
                DataRow dr = DTT2.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);
            }

这仅适用于其中两个组合框,但是当我让这个组合框工作时,剩下的就很简单了。

提前致谢,

【问题讨论】:

标签: c# sql listview combobox


【解决方案1】:

这应该可以满足您的需要。它的伪代码和未经测试的代码,但会遍历表单上的每个组合框,然后你可以用列表中的值做你想做的事情

void Main()
{
var cb1 = new ComboBox()
var cb2 = new ComboBox()
var frm = new Form()

var selectedItemAndValue = new List<selectedItem>();

foreach (Control ctrl in frm.Controls)
{
    if (ctrl.GetType() == typeof(ComboBox)
    {
        var cb = ctrl as ComboBox
        selectedItemAndValue.Add(new selectedItem {
        Idx = cb.SelectedIndex, 
        Text = cb.SelectedText, 
        Value = cb.SelectedValue.ToString()})

    }

    //the above code will then give you a list of everything that is selected in each of your combo boxes
}
}

public class selectedItem
{

public int Idx { get; set; }
public string Text { get; set; }
public string Value {get; set;}
}



// Define other methods and classes here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2016-04-05
    相关资源
    最近更新 更多