WPF datagrid更新数据库

时间:2012-12-24 05:42:17

标签: c# wpf database datagrid updates

我是C#的新手。我正在编写一个小型GUI数据库应用程序,它使用数据网格来显示表数据。当我在网格中编辑一行时,按下更新按钮,调用tableadapter的更新功能,并将更改传播回DB。然后我为行更改事件实现了一个处理程序,它又调用tableadapter的更新函数。但是这次当某个值被更改并按下回车键时,调用处理程序并引发InvalidOperationException,并显示消息“已经有一个与此命令关联的打开的DataReader,必须先关闭它”。但无论如何数据库都会改变。如何阻止引发异常。我在连接字符串中将多个活动结果集设置为true。

构造函数

public WSim(MainWindow h)
{
   InitializeComponent();

   //database connection with strongly typed dataset
   usersAdapter = new testDBDataSetTableAdapters.usersTableAdapter();
   users = usersAdapter.GetUsers();

   users.usersRowChanged +=new testDBDataSet.usersRowChangeEventHandler(users_usersRowChanged);

   this.DataContext = users.DefaultView;
}

行更改了事件处理程序

private void users_usersRowChanged(object sender, testDBDataSet.usersRowChangeEvent e) 
{
    output.Content = "Row Modified";
    usersAdapter.Update(users);
}

datagrid xaml

<DataGrid Height="200" HorizontalAlignment="Left" Margin="26,249,0,0" Name="userGrid" VerticalAlignment="Top" Width="381" AutoGenerateColumns="True"
              SelectionMode="Extended" SelectionUnit="FullRow"  ItemsSource="{Binding}"
              CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserSortColumns="True"
              CanUserAddRows="True" CanUserDeleteRows="True"/>

1 个答案:

答案 0 :(得分:0)

正如例外情况所说,你应该先关闭读者。你没有提供足够的信息,我无法解释更多;但请参阅此link。我认为它会对你有帮助。