将绑定的datagridview的更改应用回SQL Server CE

时间:2012-07-19 00:49:52

标签: c# datagridview sql-server-ce

所以我一直在关注这个SQL Server CE的优秀指南: http://weblogs.asp.net/scottgu/archive/2011/01/11/vs-2010-sp1-and-sql-ce.aspx

对于WinForms而不是ASP.NET。我将datagridview绑定到本地数据库源,可以很好地查看我的虚拟信息。

问题在于我正在尝试写回表或修改现有单元格的内容。我无法保存更改。我怎么写回桌子?在CellEndEdit之后我需要一个活动吗?在其他网站上有一些很好的例子吗?

表单加载事件只包含这个加载datagridview所以我不确定它是否真的“绑定”。

this.productsTableAdapter.Fill(this.testDBDataSet2.Products);

3 个答案:

答案 0 :(得分:1)

刚刚处理了类似的问题,我学到了一些东西。首先,在验证单元格之前,您对DataGridView所做的更改不会提交到数据库。使用数据绑定的DataGridView,单元格在行级别进行验证,直到您将焦点从正在编辑的行更改为止,除非您使用CellChangeEvent强制对行进行验证,否则不会提交更改类似于以下内容:

    if (e.ColumnIndex > 9 && e.RowIndex >= 0)
    {
        if (dataGridView.Rows[e.RowIndex].Cells[0].Value is DBNull)
        {
            //do nothing
        }
        else
        {
            this.Validate();
        }
    }

如果您尝试让dataGridView显示您对底层数据库所做的更改,则需要刷新表适配器,如上所述。如果在提交更改之前进行填充,则会丢失更改。

答案 1 :(得分:0)

哇所以我们在这里: productsTableAdapter.Update(testDBDataSet2);

答案 2 :(得分:0)

这通常在您使用开发环境时发生。在使用SQLCE时,您可能已在项目中创建了db文件。 Visual Studio还将在bin文件夹中制作数据库的副本。现在,您所做的数据库事务将影响驻留在bin文件夹中的本地数据库副本。因此,尝试使用SQL Management studio或visual studio附加该bin数据库。这将明确显示您最近插入的数据。