C # заменить текстовое поле по умолчанию в DataGridView с помощью Combobox
Я все еще довольно новичок в C #, но я работаю над приложением WinForms, которое извлекает данные из базы данных Access. В настоящее время я работаю над формой, которая загружает содержимое из таблицы в DataGridView динамически, используя DataAdapter и DataSet.
Пока что форма работает как положено. В настоящее время, чтобы добавить новую запись, вы должны ввести данные в каждую ячейку подряд. Что я хочу сделать, это заменить пару столбцов (текстовое поле) со списком. Другими словами, вместо ручного ввода данных, используйте выпадающий список и выберите запись из списка. Я также хочу сгенерировать элементы данных комбинированного списка из SQL, но если это слишком много, я могу просто вручную кодировать каждый элемент.
Я могу добавить комбинированный список в таблицу данных во время выполнения, но это не то, что я пытаюсь сделать. И поскольку столбцы создаются во время выполнения с помощью кода, я не уверен, как изменить столбец, следуя этому методу.
Так, например, я хочу заменить ячейки текстового поля для «Рейтинг» на элементы комбинированного списка, такие как «R», «PG-13», «PG» и т. Д.
public partial class frmBulkInsert : Form
{
OleDbConnection conn;
OleDbDataAdapter da;
DataSet ds;
OleDbCommandBuilder cmdbl;
public frmBulkInsert()
{
InitializeComponent();
}
private void frmBulkInsert_Load_1(object sender, EventArgs e)
{
// Load all records from the table into the datagridview.
try
{
dataConnectionSettings();
}
catch (Exception ex)
{
MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void ConnectToDatabase()
{
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ronniejones.JONES\Documents\Access Projects\Movie_2013.mdb";
}
private void btnUpdateRecords_Click(object sender, EventArgs e)
{
try
{
//DataSet changes = (ds).GetChanges();
cmdbl = new OleDbCommandBuilder(da);
//da.Update(ds, "Movie_2013");
int numRows = da.Update(ds, "Movie_2013");
MessageBox.Show(numRows + " Record(s) Updated", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void dataConnectionSettings()
{
//DataGridViewComboBoxColumn cboColumn;
conn = new OleDbConnection();
ConnectToDatabase();
conn.Open();
da = new OleDbDataAdapter("SELECT ID, Title, [Minutes], Rating, Category, Format, Actor1, Actor2, Actor3, Actor4, [Status] FROM [Movies] ORDER BY ID", conn);
ds = new DataSet();
da.Fill(ds, "Movie_2013");
dataGridView1.DataSource = ds.Tables[0];