以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 新版对AddNew的处理方法似乎变了,明显不合理了 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3917) |
||||
-- 作者:reachtone -- 发布时间:2009/8/18 21:50:00 -- 新版对AddNew的处理方法似乎变了,明显不合理了 在老版中,用AddNew新增行、然后引发当前表的CurrentChanged事件。在CurrentChanged事件中,以下代码是可以正常通过的: If e.Table.Current IsNot Nothing MessageBox.Show("当前Table共 " & e.Table.Rows.Count & "行! ") dim r as Integer = e.Table.Current.Index \'当前行 e.Table.Select(r,0) \'选择当前行第一列 End If 但用了今天的新版以后,上面的代码就出错了。经认真分析发现,新版在执行了AddNew以后,Table的新增行已经产生,count也发生了变化,但这时该行并未加载进table,反而是先执行CurrentChanged事件,然后才加载行。 老版的执行顺序是:先新增行、然后加载该行、再执行CurrentChanged事件; 新版则是:先新增行、然后执行CurrentChanged事件、再加载该行。
按新版的这种处理方法,上述代码只能改成这样。这样的代码看起来实在别扭: If e.Table.Rows.Count > 1 dim r as Integer = e.Table.Current.Index \'当前行 e.Table.Select(r,0) \'选择当前行第一列 End If 期望老六还能改回原来的那种处理方式! [此贴子已经被作者于2009-8-18 21:54:34编辑过]
|
||||
-- 作者:czy -- 发布时间:2009/8/18 23:01:00 -- 奇怪,我没发现问题。 在两个版本中执行操作结果都是一样的。 |
||||
-- 作者:mr725 -- 发布时间:2009/8/18 23:04:00 -- 这样不会有问题了:但也不会提示了~ If e.Table.position >= 0 then If e.Table.Current IsNot Nothing MessageBox.Show("当前Table共 " & e.Table.Rows.Count & "行! ") dim r as Integer = e.Table.Current.Index \'当前行 必须时可见的行 e.Table.Select(r,0) \'选择当前行第一列 End If End If [此贴子已经被作者于2009-8-18 23:15:56编辑过]
|
||||
-- 作者:reachtone -- 发布时间:2009/8/19 8:18:00 -- 加个position的判断确实是个好办法。 但我还是觉得,新版的这个变化有点没有道理。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/8/19 8:30:00 -- 呵呵,我抽空看看,不过有些变化我也没有办法控制的. |
||||
-- 作者:reachtone -- 发布时间:2009/8/19 10:53:00 -- 问题大了,连BeforeAddDataRow事件设置都有问题。看来这个AddNew还要老六认真对待一下,我现在关键的录入模块都出错了。 请老六看看这个例子:
|
||||
-- 作者:mr725 -- 发布时间:2009/8/19 12:44:00 -- 6楼的问题存在~ |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/8/19 13:02:00 -- 下次更新可以了 |