我是用c#编程的新手。
所以我创建了包含列ID,PersonName,City的数据库表Info,并将其绑定到WinForms中的DataGridView。每当我更改单元格值或添加新单元格时,我希望它分别更新/插入到db表中。我的问题是我应该参加哪个活动?我试过CellEndEdit,CellValueChanged,CellLeave,似乎没有工作。
这是我的INSERT查询:
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Info([PersonName], [City]) Values (@personName, @city)";
cmd.Parameters.AddWithValue("@personName", dataGridView1.SelectedCells[0].Value.ToString());
cmd.Parameters.AddWithValue("@city", dataGridView1.SelectedCells[0].Value.ToString());
cmd.ExecuteNonQuery();
dataGridView1.ResetBindings();
conn.Close();
对于UPDATE查询
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
string updateQuery = "update Info set [PersonName]='" + dataGridView1.SelectedCells[0].Value + "', [City]='" + dataGridView1.SelectedCells[0].Value + "', where ID=" + dataGridView1.SelectedRows[0] + "";
cmd.CommandText = updateQuery;
cmd.ExecuteNonQuery();
conn.Close();
我知道对于CellLeave事件,它可能没有获得正确的单元格,但不知道为什么其他事件不起作用。
任何人都想分享任何t
答案 0 :(得分:0)
您正在使用正确的活动,但如下所示使用它。 SelectedCells可能无法返回正确的值。使用e.RowIndex,它将返回您正在编辑的精确Cell的值。
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
string Person = dataGridView1.Rows[e.RowIndex].Cells["Person"].Value.ToString();
string City = dataGridView1.Rows[e.RowIndex].Cells["City"].Value.ToString();
AddToDatabase(Person,City);
}