Foxtable(狐表)用户栏目专家坐堂 → 当我在某表格插入一行时,提示:DATATABLE内部索引已损坏“5”。请问如何解决?


  共有3281人关注过本帖树形打印复制链接

主题:当我在某表格插入一行时,提示:DATATABLE内部索引已损坏“5”。请问如何解决?

帅哥哟,离线,有人找我吗?
jinzhengbe
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1062 积分:9781 威望:0 精华:0 注册:2012/3/13 5:23:00
当我在某表格插入一行时,提示:DATATABLE内部索引已损坏“5”。请问如何解决?  发帖心情 Post By:2015/8/26 0:45:00 [只看该作者]


 

微信菜单,输入客户名 点添加 的时候就会 出现这个,提示

 

还有串货那个菜单,也会出,请问该怎么解决, 麻烦各位多指点下 

 

就差这个收尾了 谢谢!!!

 

 

本来以为是系统不兼容的问题 ,后来换了系统 发现问题还在, 所以可以排除系统 问题了

[此贴子已经被作者于2015/8/26 13:45:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhengbe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1062 积分:9781 威望:0 精华:0 注册:2012/3/13 5:23:00
  发帖心情 Post By:2015/8/26 0:46:00 [只看该作者]

感觉应该是这个原因 ,但是不会处理,请各位指点!!!

 

一般我们会使用DataTable.Select()方法来筛选数据,而DataTable会在执行Select()方法的时候系统会默认创建一个DataView,而DataView创建的时候会创建内部索引,如果这个时候数据被操作(添加,删除),那么内部索引就会被破坏,从而出错。大概是这个意思吧,不知道有没有说错。所以解决的方法也很简单,就是新建一个DataView,并在创建DataView的时候锁定DataTable。
DataView myDV;
lock(myTable)
{
    myDV=new DataView(myTable,"过滤","排序",DataViewRowState.CurrentRows);

    //数据操作
}


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/26 9:55:00 [只看该作者]

测试了一下,你要把 BeforeSelChange 的代码删除,也就是

 

If e.OldRange.RowSel <> e.NewRange.RowSel '如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
        r.Save() '保存之
    End If
End If

如果要保存,你可以在DataRowAdding事件写

 

e.DataTable.Save


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhengbe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1062 积分:9781 威望:0 精华:0 注册:2012/3/13 5:23:00
  发帖心情 Post By:2015/8/26 13:04:00 [只看该作者]

太感谢了!!!! 已经解决了~~~


 回到顶部