将datagrid删除的行提交到数据源时出现问题

时间:2013-08-02 03:26:56

标签: c# wpf database datagrid

我用这个小应用程序来玩DbConnection类。我的dbConnect类检索了一个DataTable对象,该对象通过合适的DataAdapter填充,通过参数化查询实现运行时生成的更新,插入和删除命令。然后,我将一个wpf DataGrid.DataContext绑定到这样的表以允许数据操作。用户可以删除,更新和/或插入任意数量的行,然后可以将更改提交到底层数据库,单击按钮控件(“更新”)。 我的问题是删除的行不会作为插入/修改的行反映在数据库中。这是一些代码:

Xaml Datagrid ItemSource绑定:

 <DataGrid Grid.Row="2" Name="dataGrid1" ItemsSource="{Binding Path=.}" ... />
代码背后的代码:

DataTable table = new DataTable();

if (!String.IsNullOrEmpty(tableName = cbox.SelectedItem as string))
{
    table = _dbc.getData( tableName );
    dataGrid1.Items.Refresh();
    dataGrid1.DataContext = table.DefaultView;
    table.DefaultView.ListChanged += new System.ComponentModel.ListChangedEventHandler(dataView_ListChanged);  // Needed to enable the 'Update' button to, well, update the Database

    if (table.Rows.Count == 0) warnMsg = "The selected table (" + tableName.ToUpper() + ") is empty.";
}

如果在按钮逻辑调用DbConnect类的公共方法(committChanges(DataRow []行)时对listgrid / datatable的行进行了更改,则listChanged事件处理程序只会启用/禁用“更新”按钮(_dbc,此处为)反过来简单地调用(DataAdapter)dapt.Update()方法。

请注意,在以前版本的dbConnect类中,我将DataTable的RowChanging和RowDeleting事件挂钩到committChanges方法,以便单行更新(添加,删除或修改),并且所有更改都成功反映到db中,因此逻辑本身应该没问题。任何输入都可以。感谢。

0 个答案:

没有答案