Foxtable(狐表)用户栏目专家坐堂 → 遍历的疑问,望精通者释惑


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

主题:遍历的疑问,望精通者释惑

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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
遍历的疑问,望精通者释惑  发帖心情 Post By:2013/5/9 6:52:00 [只看该作者]

1、将所有表的审核列设置为:如果已经审核,则不允许修改

For Each dt As DataTable In DataTables '遍历所有表
    For Each dc As Datacol In dt.Datacols ‘遍历所有列
      if e.datacols.name = "审核" then ’如果是审核列
         if e.datacols("审核")= true then ‘如果已经审核
              e.datarow("审核").AllowEdit = True  则锁定该行,此行不允许修改
         end if
     end if
  next
next 

    疑问:1、此句对不对?
                2、此句是不是设定在datatablechanging中
              3、这种嵌套遍历是不是会很慢?

如果想把所有表设置为当前行为突出显示呢,又如何做?

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/5/9 8:31:00 [只看该作者]

DataColChanging

 

If e.DataCol.Name = "审核" AndAlso e.DataRow("审核") = True then

   e.Cancel = True

End If

[此贴子已经被作者于2013-5-9 8:55:17编辑过]

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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(lsy)DataColChanging?If e.DataCol...  发帖心情 Post By:2013/5/9 12:39:00 [只看该作者]

不起作用,你这个只能针对某个表事件吧,在全局表中的pe或锁定行中设置,提示不是其中的成员。

[此贴子已经被作者于2013-5-9 12:47:30编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/5/9 12:41:00 [只看该作者]

表事件

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/5/9 13:56:00 [只看该作者]

以下是引用zerov在2013-5-9 12:39:00的发言:
不起作用,你这个只能针对某个表事件吧,在全局表中的pe或锁定行中设置,提示不是其中的成员。

[此贴子已经被作者于2013-5-9 12:47:30编辑过]

小伙子,学艺不精啊。


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/5/9 14:32:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:童狐 帖子:268 积分:2227 威望:0 精华:0 注册:2013/2/4 11:02:00
  发帖心情 Post By:2013/5/9 15:03:00 [只看该作者]

  e.datarow("审核").AllowEdit = false  则锁定该行,此行不允许修改

遍历所有表所有列,很慢吧。。。

我遍历所有表是否haschange都觉得慢了。。。。

[此贴子已经被作者于2013-5-9 15:06:24编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/5/9 15:24:00 [只看该作者]

以下是引用zerov在2013-5-9 6:52:00的发言:
1、将所有表的审核列设置为:如果已经审核,则不允许修改

For Each dt As DataTable In DataTables '遍历所有表
    For Each dc As Datacol In dt.Datacols ‘遍历所有列
      if e.datacols.name = "审核" then ’如果是审核列
         if e.datacols("审核")= true then ‘如果已经审核
              e.datarow("审核").AllowEdit = True  则锁定该行,此行不允许修改
         end if
     end if
  next
next 

    疑问:1、此句对不对?
                2、此句是不是设定在datatablechanging中
              3、这种嵌套遍历是不是会很慢?

如果想把所有表设置为当前行为突出显示呢,又如何做?

For Each dt As DataTable In DataTables '遍历所有表
    If dt.DataCols.Contains("审核") Then
        Dim cmd As new SQLCommand
        cmd.CommandText = "update {" & dt.Name & "} set [_Locked] = true where [审核] = true "

        cmd.ExecuteNonQuery
        dt.Load
    End If
Next

只要设置一个按钮执行就行了,不需要放到表事件里,而且这个只需要执行一次,不需要每次启动执行,锁定行是永久性的


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6800 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2013/5/9 19:04:00 [只看该作者]

PrepareEdit

If e.Table.Cols.Contains("审核") Then

    If e.Row("审核") = True Then

        e.Cancel = True

    End If

End If




然后在项目事件Initialize加入代码:

For Each dt As DataTable In DataTables
    dt.GlobalHandler.
PrepareEdit True
Next

[此贴子已经被作者于2013-5-9 19:06:24编辑过]

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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
回复:(nblwar)PrepareEditIf e.Table.Cols.Contain...  发帖心情 Post By:2013/5/10 10:32:00 [只看该作者]

谢谢,解决

 回到顶部