2017-07-06 74 views
0

我有一个DataGridView控件和一个保存按钮。点击保存按钮后,我想通过DataAdapter Update()命令将对DataGridView所做的任何更改反映到我的数据库中。但是,点击保存按钮并重新加载表单后,更新不在那里。对DataGridView的更改没有反映在数据库中

这里是目前保存按钮全部代码:

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

你的代码中有几个问题:

  1. 你是不是在using声明封闭的SQLConnection。你应该总是使用这种模式,使得连接妥善处理:using(var connection = new SqlConnection(...)){ rest of statements here }

  2. btnSave_Click功能,你再从数据库中获取的数据 - 见的select * from tbl...代码和你再次填充数据表;因此,显然不会有任何反映。您需要做的是从页面读取Updated DataTable,并在btnSave_Click函数中使用它将更新推送到数据库。

  3. 你的问题是指DataGridView,我相信是一个用户控制WinForms,但你的问题被标记为ASP.NET。您是指GridView控制器吗?无论哪种方式,两个控件都应该有一个方法来获取绑定到它们的DataSource。您应该可以使用DataSource将更新推送到数据库。

我希望这个指针是有帮助的。鉴于您在问题中提供的代码,我不能更具体。

+0

感谢您的帮助。我正在使用Winforms和DataGridView,因此我相应地调整了我的标签。我也实现了一个'using'语句。但是,为了初始化DataAdapter,您需要指定一个'SELECT'命令。 –

相关问题