以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]加入了代码之后,右键新增行,新增行不在最后一行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68110)

--  作者:chnfo
--  发布时间:2015/5/10 12:40:00
--  [求助]加入了代码之后,右键新增行,新增行不在最后一行
请教各位有没有遇到一个问题
我在表中加了一些事件,比如datacolchanged,datacolchanging,drcell,currentchanged,beforadddatarow等。

新问题出来了:
我在表中空白处连续右键>新增行,这时候有奇怪的现象:新增的第一行排在第一行,新增的第二行排在第三行,新增的第三行排在第五行,再往后甚至是随机的。

请教各位狐神:什么事件会导致这个问题?如何解决呢?

我的目的很简单,就是希望新增的行总显示在最末一行。
[此贴子已经被作者于2015/5/10 13:23:40编辑过]

--  作者:大红袍
--  发布时间:2015/5/10 14:50:00
--  

1、表格是否空值了排序?排序肯定不可能在最后一行。

 

2、找不到问题,就一个事件一个事件的注释掉代码,看哪里有问题;

 

3、再找不问题所在,就上传小例子


--  作者:chnfo
--  发布时间:2015/5/13 19:35:00
--  
有时候注释掉部分代码,增加行时在最后一行。
但是压缩项目,删除bin文件夹后,重启,增加行时又是随机出现位置。
要崩溃了……
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新增行时不能出现在最后一行.zip

[此贴子已经被作者于2015/5/13 19:35:55编辑过]

--  作者:狐狸爸爸
--  发布时间:2015/5/13 20:08:00
--  
你的主键是文本型,将逐渐改为自动增量型。
--  作者:大红袍
--  发布时间:2015/5/13 20:20:00
--  

 你这样弄不对。你的ID列不要弄成主键列,SysID弄成主键列就行了。自动增量列必须做主键。

 

 又或者是给 _Sortkey列赋值为一个表里最大的值 如 e.DataRow("_Sortkey") = 99999


--  作者:chnfo
--  发布时间:2015/5/13 21:49:00
--  
不用_identify做主键,是有原因的,因为要导出项目数据,再导入。如果用_identify做主键,导入的数据肯定会乱的。毕竟涉及到多表关联。
所以,只能用文本列作为主键
而用帮助里的自动生成编号的方法,效率非常之低,局域网应用完全不可接受,实际测试过,就算导入100行数据的EXCEL表,至少也要2.5分钟,这种效率肯定不行啊



[此贴子已经被作者于2015/5/13 21:50:46编辑过]

--  作者:大红袍
--  发布时间:2015/5/13 21:53:00
--  

那你的id列不需要设置成主键啊


--  作者:chnfo
--  发布时间:2015/5/13 21:53:00
--  
不设主键就不会有问题了?
--  作者:大红袍
--  发布时间:2015/5/13 21:55:00
--  
 你想一下,平常,自增的列是主键,如果 _Identify。那其它列你随便怎么改会不会有问题?
--  作者:chnfo
--  发布时间:2015/5/13 22:01:00
--  
想不出来有会有什么问题。现在修改的不是identify这一列,它的作用只是辅助形成ID,仅此而已。
因为如果表中原来有数据的话,新增的行,不论其它列如何变化,identify(也就是这个表中的sysid)是不会发生变化的。
[此贴子已经被作者于2015/5/13 22:03:42编辑过]