Заполните комбинированный список несколькими наборами данных из одного столбца базы данных одновременно - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть выпадающий список, который заполняется из базы данных условно, сняв один из 10 флажков.Каждый из 10 флажков содержит приведенный ниже код, который выбирает часть column на основе значения в column2.

private void Check1_CheckedChanged(object sender, EventArgs e)

    {
        if (Check1.CheckState == CheckState.Checked)
        {
            // SQL Server connection
            SqlConnection conn = new SqlConnection(@"Server = Server; Database = DB; Integrated Security = True");
            DataSet ds = new DataSet();
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT [Column1] FROM [DB].[dbo].[Table1] WHERE [Column2] = 50", conn);
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                da.Fill(ds);
                combo1.DisplayMember = "Column1";
                combo1.ValueMember = "ID";
                combo1.DataSource = ds.Tables[0];
            }
            catch (Exception ex)
            {
                //Exception Message
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }

        if (Check1.CheckState == CheckState.Unchecked)
        {
            combo1.DataSource = null;
        }

. Поэтому довольно просто заполнить комбинированный список каждым отдельным условием,Что я хочу сделать, так это то, что я не уверен в подходе, однако, это то, что, когда установлено несколько флажков, комбинированный список будет отображать данные из каждого флажка сразу (все эти данные будут из одного столбца),Кроме того, когда один флажок затем не отмечен, я хочу, чтобы он только удалял свой собственный набор данных из списка, а не все.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы можете использовать for loop для итерации полученных значений и добавления значения поля со списком.Пример:

 comboBox.Items.Clear(); // <-- Declare this at initialization of the page or whatever scenario you have

    private void Check1_CheckedChanged(object sender, EventArgs e)

        {
            if (Check1.CheckState == CheckState.Checked)
            {
                // SQL Server connection
                SqlConnection conn = new SqlConnection(@"Server = Server; Database = DB; Integrated Security = True");
                DataSet ds = new DataSet();
                try
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand("SELECT [Column1] FROM [DB].[dbo].[Table1] WHERE [Column2] = 50", conn);
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    da.Fill(ds);

// Using loop to iterate the values and append the combo box
                    for(int i=0;i<da.Rows.Count;i++)
                   {
                         combo1.Items.Add(da[i]["Column1"].ToString());
                        combo1.Items[combo1.Itemx.Count-1].Text=da[i]["Column1"].ToString();
                        combo1.Items[combo1.Itemx.Count-1].Value=da[i]["Column1"].ToString();
                   }



                }
                catch (Exception ex)
                {
                    //Exception Message
                }
                finally
                {
                    conn.Close();
                    conn.Dispose();
                }
            }

            if (Check1.CheckState == CheckState.Unchecked)
            {
                combo1.DataSource = null;
            }

Это всего лишь пример, надеюсь, вы можете понять идею

0 голосов
/ 21 февраля 2019

Я думаю, что это возможно, если у вас есть 1 набор данных, а затем вы динамически создаете свой SQL-запрос.Установите переменную для столбцов, которые вы хотите вернуть, на основе всех выбранных комбинированных списков.

Используйте 1 метод для всех ваших событий после обновления в комбинированных списках, чтобы сделать его проще и удобнее в обслуживании.

С точки зрения отображения столбцов динамики в раскрывающиеся списки, я не работаю с Winform, поэтому я не уверен, но надеюсь, что это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...