对Datable.DefaultView应用了RowFilter之后,更新行出现异常

xhzxlqt 2015-11-06 10:59:40
一个内存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不会自动刷新(手动刷新可以)

求解
...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhzxlqt 2015-11-07
  • 打赏
  • 举报
回复
已解决 线程与UI的问题
u010868852 2015-11-06
  • 打赏
  • 举报
回复
这异常OutOfRangeException 应该是你设置了rowFilter之后,集合里面没有符合条件的记录了吧,所以报错,其他暂时看不出来
exception92 2015-11-06
  • 打赏
  • 举报
回复
加个 断点 F5 调试看看 drs 到底有数据没

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧