我对c语言编程相当陌生。
因此,我创建了带有id、personname、city列的数据库表info,并将其绑定到winforms中的datagridview。无论何时更改单元格值或添加新单元格,我都希望它分别更新/插入到db表中。我的问题是我应该告诉你哪件事?我试过cellendedit、cellvaluechanged、cellleave,但似乎都没用。
这是我的插入查询:
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();
对于更新查询
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事件,它可能没有得到正确的单元格,但不知道为什么其他事件不起作用。
有人想和我分享吗
1条答案
按热度按时间w51jfk4q1#
您正在使用正确的事件,但请按以下方式使用它。selectedcells可能无法返回正确的值。使用e.rowindex,它将返回您正在编辑的精确单元格的值。