以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 授权求助 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142472)
|
-- 作者:cd_tdh
-- 发布时间:2019/10/28 14:30:00
-- 授权求助
老师,麻烦看看我以下代码授权,为什么加都集合有两个26,没有2,代码如下:
If Tables("用户管理").rows.Count=0 Then Return Dim s As String = Nothing \'加入到可见集合 Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView3") For Each nd As WinForm.TreeNode In tr1.AllNodes \'同步子节点选中状态 If nd.Checked=True Then Dim dr As DataRow = DataTables("导航").Find("分类 = \'" & nd.name & "\' Or 分组 = \'" & nd.name & "\' or 名称 = \'" & nd.name & "\'") If dr IsNot Nothing Then If s<>Nothing Then s=s & "," s=s & dr("编号") End If End If Next Tables("用户管理").Current("菜单可见集合")=s
导航表结构和加载到集合结果如下:
此主题相关图片如下:导航表结构.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2019-10/2019102814295088069.png)
此主题相关图片如下:集合.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2019-10/2019102814295080612.png)
[此贴子已经被作者于2019/10/28 14:30:06编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/10/28 14:45:00
--
nav26字符串包含nav2,建议把nav2改为nav02
|
-- 作者:cd_tdh
-- 发布时间:2019/10/28 14:57:00
--
测试了02也是这种情况,1和11都可以,应该不是这个问题,2和26应该也行才对啊
|
-- 作者:有点蓝
-- 发布时间:2019/10/28 15:13:00
--
Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView3") For Each nd As WinForm.TreeNode In tr1.AllNodes \'同步子节点选中状态 If nd.Checked=True Thenmsgbox("分类 = \'" & nd.name & "\' Or 分组 = \'" & nd.name & "\' or 名称 = \'" & nd.name & "\'") Dim dr As DataRow = DataTables("导航").Find("分类 = \'" & nd.name & "\' Or 分组 = \'" & nd.name & "\' or 名称 = \'" & nd.name & "\'") If dr IsNot Nothing Then msgbox(dr("编号")) 查询到nav26的时候,上面显示什么条件 If s<>Nothing Then s=s & "," s=s & dr("编号") End If End If Next
|
-- 作者:cd_tdh
-- 发布时间:2019/10/28 15:19:00
--
显示第一个26前:
此主题相关图片如下:qq截图20191028151741.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2019-10/201910281519262674.png) 显示第二个26前:
此主题相关图片如下:qq截图20191028151810.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2019-10/201910281519756945.png)
我后面的分类也是这种情况。
[此贴子已经被作者于2019/10/28 15:20:22编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/10/28 15:34:00
--
查询条件的问题,使用的是or查询,也就是2和26都符合上面2个条件,默认取第一个。nav26的_sortkey或者_Identify应该比nav2小,所有都取nav26
|
-- 作者:cd_tdh
-- 发布时间:2019/10/28 15:51:00
--
请教老师怎么修改?
|
-- 作者:有点蓝
-- 发布时间:2019/10/28 16:08:00
--
我也不知道,这个是您的业务逻辑问题。自己把流程搞清楚。
|
-- 作者:cd_tdh
-- 发布时间:2019/11/1 10:18:00
--
老师,我发现这个问题是因为有相同的名称造成的,相同名称不能避免,这个怎么来解决呢?
就是查询条件问题,还得请老师指点怎么来写这个条件,我分类、分组、名称的表结构如下:
此主题相关图片如下:qq截图20191101101713.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2019-11/20191111018278769.png)
[此贴子已经被作者于2019/11/1 10:19:36编辑过]
|
-- 作者:有点蓝
-- 发布时间:2019/11/1 10:24:00
--
那就不要偷懒了,判断一下节点level,如果是第一级,
Dim dr As DataRow = DataTables("导航").Find("分类 = \'" & nd.name & "\' and 分组 is null")
第二级 Dim dr As DataRow = DataTables("导航").Find("分类 = \'" & nd.parnetnode.name & "\' and 分组 = \'" & nd.name & "\' and 名称 is null")
第三级 Dim dr As DataRow = DataTables("导航").Find("分类 = \'" & nd.parnetnode.parnetnode.name & "\' and 分组 = \'" & nd.parnetnode.name & "\' and 名称 = \'" & nd.name & "\'")
|