datagridview中的更改没有被保存在数据库中
问题描述:
我有这种形式,当我给它一些ID并单击突出显示的按钮时,向我显示从数据库中获取的datagridview中的一些信息。 First Formdatagridview中的更改没有被保存在数据库中
按钮的代码是在这里:
private void kerkoButton_Click(object sender, EventArgs e)
{
try
{
Konektimi();
string query = "SELECT * FROM Vizita WHERE [email protected]";
using (SqlCommand command = new SqlCommand(query, conn))
{
command.Parameters.AddWithValue("@pacientiId",pacientiTextBox.Text);
conn.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
DataTable dt = new DataTable();
dt.Load(reader);
forma.vizitaDataGridView.DataSource = dt;
forma.ShowDialog();
}
else
{
MessageBox.Show("Nuk ka të dhëna për këtë pacient");
}
}
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Suposing我们从数据库中得到的东西,我们得到这样的: Second Form,with the results
这是将点击后打开的新形式kerkoButton。
现在,问题是这样的:当我编辑一行(或某些行)时,如果单击保存,更改将不会保存在数据库中。 我该怎么办? 我可以在这个数据网格中做一个SaveButton吗?如果是的话,怎么样?
答
看看“how to update row in DataGridView?”
您可以使用您的DataGridView的财产CurrentRow
像这样访问编辑行:
DataRowView dataRowView = yourDataGridView.CurrentRow.DataBoundItem as DataRowView;
DataRow[] rowsToUpdate = new DataRow[] { dataRowView.Row };
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Vizita", con);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(rowsToUpdate);
另外,如果你想在更新所有编辑的行一旦您使用PropertyChanged
事件更改属性,您必须创建一个标志并将其设置为true
。
单击“保存”时,遍历所有行并将编辑的行添加到rowsToUpdate
。
如果正确使用数据绑定,则DataTable将跟踪其自身的更改,并且您只需在适配器上调用Update即可。如果你正在迭代网格行,你做错了。 – Crowcoder