отображение результата запроса в качестве элемента по умолчанию в поле со списком данных - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть запрос, который загружает данные из базы данных MySQL в представление данных, но в этом же представлении данных у меня есть комбинированный список. Список элементов заполняется из другого запроса. Когда пользователь впервые сохраняет данные, он выбирает элемент из выпадающего списка и вручную заполняет другие столбцы. Строка затем сохраняется с запросом вставки. То, что я хочу сделать, это отобразить то, что было ранее сохранено в сетке данных, включая выбор в выпадающем списке. Как мне показать элемент списка, который ранее был сохранен как элемент по умолчанию в выпадающем списке?

вот код сохранения:

public void SaveOperations()
    {
        // create new row in project_operations with datagridview operations
        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());
        MySqlCommand cmd = new MySqlCommand(@"insert into shopmanager.project_operations (products_product_id, operation_name, operation_description) values (@products_product_id, @operation_name, @operation_description)", con);
        con.Open();


        foreach (DataGridViewRow row in operation_dataGridView.Rows)
        {
            try
            {
                if (row.IsNewRow) continue;
                cmd.Parameters.AddWithValue("@products_product_id", product_id.Text);
                cmd.Parameters.AddWithValue("@operation_name", row.Cells["combo"].Value);
                cmd.Parameters.AddWithValue("@operation_description", row.Cells["Description"].Value);
                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        MessageBox.Show("Operation Sauvegardé");
        con.Close();
    }

Вот код загрузки. Это загружает данные в другие ячейки в строке, кроме выпадающего списка. Когда я пытаюсь загрузить имя_операции, создается новый столбец, но я хочу, чтобы имя операции было в поле со списком. Как я могу этого достичь?

private void LoadData()
    {
        // fill textbox columns
        MessageBox.Show("load operations data textboxes");
        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());
        DataTable dt = new DataTable();
        DataSet ds = new DataSet();
        MySqlDataAdapter adapter = new MySqlDataAdapter();
        MySqlCommand cmd;
        cmd = new MySqlCommand(@"select operation_description as 'Description', operation_start_date as 'Début', operation_finish_date as 'Fin', users_employee_number as 'Employé' from shopmanager.project_operations where products_product_id = @product_id", con);

        try
        {
            con.Open();
            cmd.Parameters.AddWithValue("@product_id", product_id.Text);
            cmd.ExecuteNonQuery();
            adapter.SelectCommand = cmd;
            adapter.Fill(ds);
            dt = ds.Tables[0];

            operation_dataGridView.DataSource = dt;
            cmd.Parameters.Clear();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        con.Close();

    }

1 Ответ

0 голосов
/ 10 сентября 2018

Я думаю, что после установки источника данных, я сделаю, как показано ниже (для комбо или проверки):

//ADD COLUMNS
var comboBox = new DataGridViewComboBoxColumn();
comboBox.HeaderText = "Header title";
comboBox.Name = "combo box";

var dataRow = new ArrayList();

foreach(var dr in dt.Rows)
   dataRow.Add(dr["fieldName"].ToString()); // this will be the combo box data from database

// add data to combobox
comboBox.Items.AddRange(dataRow.ToArray());

// finally add the combo box to dgv
dataGridView1.Columns.Add(comboBox);

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