Если я привязываю DataGridView (dgv) к адаптеру, dgv автоматически заполняется содержимым таблицы. Однако один из столбцов, который теперь представлен как текст, я хочу изменить его на ComboBox.DataGridView с адаптером и combobox
Этот код готовит адаптер данных:
MySqlDataAdapter awardsAdapter, spendingsAdapter;
DataSet cachedData = new DataSet();
MySqlDataAdapter PrepareSpendingsAdapter() {
try {
MySqlDataAdapter adapter;
adapter = new MySqlDataAdapter("select * from spendings", connection);
adapter.TableMappings.Add("Table", "spendings");
adapter.UpdateCommand = new MySqlCommand(
"UPDATE spendings SET [email protected], [email protected] WHERE [email protected];",
connection);
adapter.UpdateCommand.Parameters.Add("@id", MySqlDbType.Int32, 10, "ID");
adapter.UpdateCommand.Parameters.Add("@category", MySqlDbType.Int32, 10, "Category");
adapter.UpdateCommand.Parameters.Add("@points", MySqlDbType.Int32, 10, "Points");
adapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
adapter.InsertCommand = new MySqlCommand(
"INSERT INTO spendings VALUES (@id,@category,@points);",
connection);
adapter.InsertCommand.Parameters.Add("@id", MySqlDbType.Int32, 10, "ID");
adapter.InsertCommand.Parameters.Add("@category", MySqlDbType.Int32, 10, "Category");
adapter.InsertCommand.Parameters.Add("@points", MySqlDbType.Int32, 10, "Points");
adapter.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
adapter.DeleteCommand = new MySqlCommand(
"DELETE FROM spendings WHERE [email protected];", connection);
adapter.DeleteCommand.Parameters.Add("@id", MySqlDbType.Int32, 10, "ID");
adapter.DeleteCommand.UpdatedRowSource = UpdateRowSource.None;
return adapter;
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
return null;
}
Этот код добавляет дополнительный столбец с информацией мне нужно
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
MySqlDataAdapter adapterSpendCategory = new MySqlDataAdapter("select category,details from spendcategory", connection);
adapterSpendCategory.TableMappings.Add("Table", "spendcategory");
adapterSpendCategory.Fill(cachedData);
cmb.DataSource = cachedData.Tables["spendcategory"];
cmb.DisplayMember = "details";
cmb.ValueMember = "category";
//Put the missing piece of the puzzle here
Этот код заполнит DataGridView:
spendingsAdapter = PrepareSpendingsAdapter();
spendingsAdapter.Fill(cachedData);
dgvPointsSpent.DataSource = cachedData.Tables["spendings"];
Вместо этого добавив этот дополнительный столбец, я хочу, чтобы столбец категории изменился и выглядел как дополнительный co lumn
Я не использую дизайнер. Можно ли использовать конструктор с mySQL? –