.net 4 DataGridView在添加,更新和删除行后不会更新数据库sqldatasource

时间:2012-09-26 16:17:28

标签: c# sql-server winforms datagridview sqldatasource

我正在开展一个大项目,没有太多时间来讨论每个问题,我正在使用Windows Forms,特别是DataGridView。我刚刚添加了一个数据源,可以查询数据库中的表。将检查启用添加,删除和编辑属性。我通过拖放和添加数据源创建了这个DataGridView。当我运行程序时,查询工作正常,表格出现在我的DataGridView上,我可以在DataGridView上添加,编辑和删除行,但是当我通过SQL Server Management Studio查询表时,表中的记录仍然存在相同。可能是什么问题呢?

4 个答案:

答案 0 :(得分:0)

数据源需要有insert / update / delete命令才能使gridview工作,听起来它只是一个select命令。

答案 1 :(得分:0)

不幸的是,您确实需要专门运行更新命令。

这是一个可能有用的链接: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand.aspx

这里讨论如何自动保存到SQL Server,如果这是相关的: http://www.codeproject.com/Articles/12846/Auto-Saving-DataGridView-Rows-to-a-SQL-Server-Data

这就是我喜欢Entity Framework / MVC的原因之一。非常简单的数据操作:D如果您有兴趣或有空闲时间,我建议您查看。

答案 2 :(得分:0)

如果在完成表后使用dbnavigator,则应单击dbnavigator上的“保存”按钮,因为在dbnavigator中单击“保存”按钮之前,添加,编辑和删除不会保存在数据库中。

答案 3 :(得分:0)

我找到了解决方案。我添加了一个名为“保存更改”的按钮。

首先我做了初始声明:

    private SqlDataAdapter da;
    private DataTable dt;
    private SqlCommandBuilder sqlCommandBuilder = null;
    private SqlConnection Con = new SqlConnection(@"Data Source=......");

这是用于加载填充它的DataGridView的代码:

     private void DataGridView_Load(object sender, EventArgs e)
    {

        Con.Open();
        da = new SqlDataAdapter(@"SELECT * FROM tbl", Con);
        sqlCommandBuilder = new SqlCommandBuilder(da);


        dt = new DataTable(); 
        da.Fill(dt);
        dataGridView1.DataSource = dt;
        Con.Close();
    }

这是“保存更改”按钮的代码:

private void button1_Click(object sender, EventArgs e)
    {
         SqlCommandBuilder local_SqlCommandBuilder = new SqlCommandBuilder(da);

                local_SqlCommandBuilder.ConflictOption = System.Data.ConflictOption.OverwriteChanges;

                da.UpdateCommand = local_SqlCommandBuilder.GetUpdateCommand();

                da.Update(((System.Data.DataTable)this.dataGridView1.DataSource));

                ((System.Data.DataTable)this.dataGridView1.DataSource).AcceptChanges();

    }