У меня есть приложение для выставления счетов с Windows Forms.У меня есть datagridview: Datagridview с столбцами
И когда я набираю номер в первый столбец (Tuotekoodi / код продукта на английском языке), например, на картинке я набрал номер 1 в первый столбец,а затем он автоматически заполняет столбцы «Nimike» и «Hinta» из базы данных.
Так что моя проблема в том, что я больше не могу редактировать столбцы «Nimike» или «Hinta».Я могу, но когда я перехожу к следующему столбцу, он читает те же значения обратно в столбцы.Итак, как я могу редактировать значения в столбцах «Nimike» и «Hinta» после того, как он считывает значения из базы данных в эти столбцы?
А вот мои коды, в которых есть событие cellValueChanged:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return;
DataGridViewTextBoxCell cb = (DataGridViewTextBoxCell)dataGridView1.Rows[e.RowIndex].Cells[0];
if (cb.Value != null)
{
con = new SqlConnection(connectionString);
con.Open();
SqlCommand command = new SqlCommand("SELECT name, price FROM product where productID=@pid", con);
command.Parameters.AddWithValue("pid", cb.Value.ToString());
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
dataGridView1.CurrentRow.Cells["productName"].Value = reader["name"];
dataGridView1.CurrentRow.Cells["productPrice"].Value = reader["price"];
}
}
con.Close();
}
}
И событие CurrentCellDirtyStateChanged, которое немедленно вносит изменения в столбцы при вводе в первый столбец.
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
Приветствия
Тема