private void dgv_CellClick(object sender, DataGridViewCellEventArgs e) {
if (e.RowIndex < 0) return;
var row = dgv.Rows[e.RowIndex];
txtId.Text = row.Cells["Id"].Value?.ToString();
txtName.Text = row.Cells["Name"].Value?.ToString();
// ... 其他字段
}
private void btnUpdate_Click(object sender, EventArgs e) {
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand(
"UPDATE Users SET Name=@Name, Age=@Age WHERE Id=@Id", conn)) {
cmd.Parameters.AddWithValue("@Id", txtId.Text);
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@Age", int.Parse(txtAge.Text));
conn.Open();
cmd.ExecuteNonQuery();
}
RefreshGrid(); // 重新查詢綁定
}
txtId.ReadOnly = true。RowVersion 時間戳列,更新時 WHERE Id=@Id AND RowVersion=@OldVersion。將 DataGridView、TextBox 綁定到同一 BindingSource,修改自動同步,按鈕僅調用 TableAdapter.Update(),代碼量極少。