项目中是这样的:根据目录树生成table,如果在table中增加行,自动给相关的字段写上目录树项目内容。这样,新增加的行以后也就可以跟目录树建立关联了。
现在有个问题,点击目录树、生成table时,
DataRowAdded事件总是报错。我简单做了个例子:
有个奇怪的现象需要说明一下:同样在
DataRowAdded中设置了事件代码,fill生成table时,有时报错,有时不报错,实在找不到原因在哪?
为什么在用fill加载数据时也要执行
DataRowAdded事件呢?
我也知道可能是因为在Fill前、字段名称不存在导致的。但为什么这个例子没做任何判断却能正常通过?既然这个代码能通过,说明字段就是存在的:
请老六解释一下原因,我百思不得其解。。
[此贴子已经被作者于2009-11-2 16:02:01编辑过]
以下是引用狐狸爸爸在2009-11-2 16:04:00的发言:
能理解的,一个写一个读嘛。
晕,一楼的例子明明是说“字段A”不存在才导致的错误嘛。但4楼的例子却表明,它事实上是存在的。
而且,同样的DataRowAdded事件代码,不同级别的目录树项目打开时,有的正常,有的提示错误。
很想弄清楚这里面的流程,避免以后再出错。
可以看看这个窗口里的事件,只要全局变量为“价格体系”时就出错,其它就正常。而事件代码都是一样的:
[此贴子已经被作者于2009-11-2 16:15:30编辑过]
不是列从是否存在的问题,而是Foxtable是否已经读取表结构的问题。
写要触发一系列的事件,必须在表已经完全生成,相关准备工作已经完成才行。
而读只是简单的返回值。
[此贴子已经被作者于2009-11-2 16:16:44编辑过]
以下是引用狐狸爸爸在2009-11-2 16:14:00的发言:
写要触发一系列的事件,读只是简单的返回值。
建议fill时,不要执行DataRowAdded事件(因为这并不是真正意义上的增加行,只是加载而已)。
用RowState也无法判断,都是Added。
以下是引用狐狸爸爸在2009-11-2 16:14:00的发言:
写要触发一系列的事件,必须在表已经完全生成,相关准备工作已经完成才行。
请再看看6楼的例子,为什么唯独当全局变量为“价格体系”时就出错,其它正常。
也就是说,“区域”和“媒体名称”可以正常写,写到“起”时,就提示字段不存在了。
在Fill的时候,不执行DataRowAdded事件算了。