在datagridview组合框中将查询结果显示为默认项

35g0bw71  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(421)

我有一个从mysql数据库加载数据到datagridview的查询,但是在同一个datagridview中我有一个组合框。正在从另一个查询填充项列表。当用户第一次保存数据时,他从组合框中选择一个项目并手动填充其他列。然后使用插入查询保存该行。我想做的是显示以前保存在datagridview中的内容,包括combobox选项。如何在组合框中显示以前保存为默认项的列表项?
以下是保存代码:

  1. public void SaveOperations()
  2. {
  3. // create new row in project_operations with datagridview operations
  4. ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
  5. MySqlConnection con = new MySqlConnection(conSettings.ToString());
  6. 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);
  7. con.Open();
  8. foreach (DataGridViewRow row in operation_dataGridView.Rows)
  9. {
  10. try
  11. {
  12. if (row.IsNewRow) continue;
  13. cmd.Parameters.AddWithValue("@products_product_id", product_id.Text);
  14. cmd.Parameters.AddWithValue("@operation_name", row.Cells["combo"].Value);
  15. cmd.Parameters.AddWithValue("@operation_description", row.Cells["Description"].Value);
  16. cmd.ExecuteNonQuery();
  17. cmd.Parameters.Clear();
  18. }
  19. catch (Exception ex)
  20. {
  21. MessageBox.Show(ex.Message);
  22. }
  23. }
  24. MessageBox.Show("Operation Sauvegardé");
  25. con.Close();
  26. }

这是装载代码。这会将数据加载到除组合框之外的行中的其他单元格。当我尝试加载操作名时,它会创建一个新列,但我希望操作名在组合框中。我怎样才能做到这一点?

  1. private void LoadData()
  2. {
  3. // fill textbox columns
  4. MessageBox.Show("load operations data textboxes");
  5. ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
  6. MySqlConnection con = new MySqlConnection(conSettings.ToString());
  7. DataTable dt = new DataTable();
  8. DataSet ds = new DataSet();
  9. MySqlDataAdapter adapter = new MySqlDataAdapter();
  10. MySqlCommand cmd;
  11. 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);
  12. try
  13. {
  14. con.Open();
  15. cmd.Parameters.AddWithValue("@product_id", product_id.Text);
  16. cmd.ExecuteNonQuery();
  17. adapter.SelectCommand = cmd;
  18. adapter.Fill(ds);
  19. dt = ds.Tables[0];
  20. operation_dataGridView.DataSource = dt;
  21. cmd.Parameters.Clear();
  22. }
  23. catch (Exception ex)
  24. {
  25. MessageBox.Show(ex.Message);
  26. }
  27. con.Close();
  28. }
hrirmatl

hrirmatl1#

我想在设置完数据源之后,我会像下面这样做(对于combo或check):

  1. //ADD COLUMNS
  2. var comboBox = new DataGridViewComboBoxColumn();
  3. comboBox.HeaderText = "Header title";
  4. comboBox.Name = "combo box";
  5. var dataRow = new ArrayList();
  6. foreach(var dr in dt.Rows)
  7. dataRow.Add(dr["fieldName"].ToString()); // this will be the combo box data from database
  8. // add data to combobox
  9. comboBox.Items.AddRange(dataRow.ToArray());
  10. // finally add the combo box to dgv
  11. dataGridView1.Columns.Add(comboBox);
  12. }
展开查看全部

相关问题