簡體   English   中英

C#使用組合框過濾SQL數據

[英]c# use comboboxes to filter sql data

我在C#中有一個帶有幾個comboboxes的winforms應用程序。 這些組合框顯示來自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);
            }

這僅適用於兩個組合框,但是當我獲得一個組合框時,其余的將很簡單。

提前致謝,

這應該做您所需要的。 它的偽代碼和未經測試的代碼,但是將遍歷表單上的每個組合框,然后您可以使用列表中的值執行所需的操作

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM