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

.Net技术 码拜 9年前 (2015-11-08) 1108次浏览
一个内存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不会自动刷新(手动刷新可以)
解决方案:50分
这异常OutOfRangeException  应该是你设置了rowFilter之后,集合里面没有符合条件的记录了吧,所以报错,其他暂时看不出来
解决方案:50分
加个 断点 F5  调试看看 drs 到底有数据没

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Datable.DefaultView应用了RowFilter之后,更新行异常
喜欢 (0)
[1034331897@qq.com]
分享 (0)