对Datable.DefaultView应用了RowFilter之后,更新行出现异常
一个内存datatable,一个datagridview
datagridview 的dataSource为内存table的defaultview
出问题的代码片段:
#region 更新用户试卷ID
string sFilter = string.Format("UID={0}", cr.UID);
DataRow[] drs = userStatusTable.Select(sFilter);
if (drs.Length == 1)
{
if (locker_userTable.TryEnterWriteLock(1000))
{
try
{
//string sDVFilter = userStatusTable.DefaultView.RowFilter;---这里,
drs[0]["试卷ID"] = nTpid;
drs[0]["IP"] = getRemoteIPPort(session);
}
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
finally
{
locker_userTable.ExitWriteLock();
}
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
userStatusTable.DefaultView.RowFilter如果设置过rowfilter,
这两行:
drs[0]["试卷ID"] = nTpid;
drs[0]["IP"] = getRemoteIPPort(session);
就会出现异常:
systemOperationException
或OutOfRangeException
但是,数据依然可以更改
只是datagridview不会自动刷新(手动刷新可以)
求解