以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 这种情况怎么处理?(DataRowAdded事件的问题) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4853) |
||||
-- 作者:reachtone -- 发布时间:2009/11/2 15:41:00 -- 这种情况怎么处理?(DataRowAdded事件的问题) 项目中是这样的:根据目录树生成table,如果在table中增加行,自动给相关的字段写上目录树项目内容。这样,新增加的行以后也就可以跟目录树建立关联了。 现在有个问题,点击目录树、生成table时,DataRowAdded事件总是报错。我简单做了个例子:
|
||||
-- 作者:reachtone -- 发布时间:2009/11/2 15:45:00 -- 有个奇怪的现象需要说明一下:同样在DataRowAdded中设置了事件代码,fill生成table时,有时报错,有时不报错,实在找不到原因在哪? 为什么在用fill加载数据时也要执行DataRowAdded事件呢? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/11/2 15:55:00 -- Dim r as DataRow = e.DataRow If e.DataTable.Datacols.ConTains("A") Then r("A") = "新增A" r("B") = "新增B" r("C") = "新增C" r("D") = "新增D" End If |
||||
-- 作者:reachtone -- 发布时间:2009/11/2 16:01:00 -- 我也知道可能是因为在Fill前、字段名称不存在导致的。但为什么这个例子没做任何判断却能正常通过?既然这个代码能通过,说明字段就是存在的:
请老六解释一下原因,我百思不得其解。。 [此贴子已经被作者于2009-11-2 16:02:01编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/11/2 16:04:00 -- 能理解的,一个写一个读嘛。 |
||||
-- 作者:reachtone -- 发布时间:2009/11/2 16:05:00 -- 以下是引用狐狸爸爸在2009-11-2 16:04:00的发言:
能理解的,一个写一个读嘛。 晕,一楼的例子明明是说“字段A”不存在才导致的错误嘛。但4楼的例子却表明,它事实上是存在的。
[此贴子已经被作者于2009-11-2 16:15:30编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/11/2 16:14:00 -- 不是列从是否存在的问题,而是Foxtable是否已经读取表结构的问题。 写要触发一系列的事件,必须在表已经完全生成,相关准备工作已经完成才行。 而读只是简单的返回值。 [此贴子已经被作者于2009-11-2 16:16:44编辑过]
|
||||
-- 作者:reachtone -- 发布时间:2009/11/2 16:21:00 -- 以下是引用狐狸爸爸在2009-11-2 16:14:00的发言:
写要触发一系列的事件,读只是简单的返回值。 建议fill时,不要执行DataRowAdded事件(因为这并不是真正意义上的增加行,只是加载而已)。 |
||||
-- 作者:reachtone -- 发布时间:2009/11/2 16:24:00 -- 以下是引用狐狸爸爸在2009-11-2 16:14:00的发言:
写要触发一系列的事件,必须在表已经完全生成,相关准备工作已经完成才行。 请再看看6楼的例子,为什么唯独当全局变量为“价格体系”时就出错,其它正常。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/11/2 16:29:00 -- 在Fill的时候,不执行DataRowAdded事件算了。 |