我是C#的新手。我正在编写一个小型GUI数据库应用程序,它使用数据网格来显示表数据。当我在网格中编辑一行时,按下update按钮,将调用tableadapter的update函数,并将更改传播回DB。然后,我实现了一个用于行更改事件的处理程序,该处理程序将调用tableadapter的update函数。但这一次,当一些值被更改并按下Enter键时,将调用处理程序并引发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);
}数据网格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"/>发布于 2012-12-24 16:03:20
正如异常所说,您应该首先关闭读取器。您没有提供足够的信息,我不能解释更多;但请参阅此link。我想这会对你有帮助的。
https://stackoverflow.com/questions/14017513
复制相似问题