我有一个DataGridView控件和一个保存按钮。单击“保存”按钮时,我希望对DataGridView所做的任何更改都通过DataAdapter Update()命令反映在我的数据库中。但是,在点击保存按钮并重新加载表单后,更新不存在。
以下是“保存”按钮的所有代码:
private void btnSave_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=addtool.database.windows.net;Initial Catalog=AddToolToInventoryDB;User id=kanerbw; Password=Rabaraba!11;");
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter("select * from ToolTB", con);
SqlCommandBuilder myBuilder = new SqlCommandBuilder(adapter);
con.Open();
SqlCommandBuilder scb = new SqlCommandBuilder(adapter);
myBuilder.GetUpdateCommand();
adapter.UpdateCommand = myBuilder.GetUpdateCommand();
adapter.Update(dt);
con.Close();
}
编辑:我忘了将DGV的数据源设置为数据表。这是工作代码:
private void btnSave_Click(object sender, EventArgs e)
{
using (var con = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter("select * from ToolTB", con);
SqlCommandBuilder myBuilder = new SqlCommandBuilder(adapter);
dgvProductInfo.DataSource = dt;
adapter.UpdateCommand = myBuilder.GetUpdateCommand();
adapter.Update(dt);
dt.Clear();
adapter.Fill(dt);
}
}
答案 0 :(得分:0)
您的代码有几个问题:
您没有在using
语句中包含SQLConnection。您应该始终使用此模式,以便正确处理连接:using(var connection = new SqlConnection(...)){ rest of statements here }
在btnSave_Click
函数上,您将从数据库中再次获取数据 - 请参阅select * from tbl...
代码 - 然后再次填充DataTable;因此,很明显不会有任何变化反映出来。您需要做的是从页面读取更新的DataTable并在btnSave_Click
函数内使用它来将更新推送到数据库。
DataGridView
我认为是WinForms
上的用户控制,但您的问题被标记为ASP.NET
。你指的是GridView
控制吗?无论哪种方式,两个控件都应该有一种方法让DataSource
绑定到它们。您应该能够使用DataSource
将更新推送到数据库。我希望这些指针很有帮助。鉴于您在问题中提供的代码,我无法更具体。