0

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

4

4 回答 4

0

数据源需要有插入/更新/删除命令才能使网格视图工作,听起来它只有一个选择命令。

于 2012-09-26T16:20:48.270 回答
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 如果您有兴趣/有空闲时间,我建议您检查一下。

于 2012-09-26T16:37:04.440 回答
0

如果您在完成表格后使用 dbnavigator,您应该单击 dbnavigator 上的保存按钮,因为添加、编辑和删除不会保存在数据库中,直到您单击 dbnavigator 中的保存按钮。

于 2012-09-26T18:17:42.727 回答
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();

    }
于 2012-09-30T06:14:48.803 回答