以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教,关于目录树根据条件判断,复选框自动选择  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=5954)

--  作者:baoxyang
--  发布时间:2010/2/8 14:28:00
--  请教,关于目录树根据条件判断,复选框自动选择
关于目录树来一个表数据,如果有一列为复选框为是否选中列值(true为自动选中,false为不选),请教加载目录树时如果根据表列来判断?
--  作者:yangming
--  发布时间:2010/2/8 16:51:00
--  
没明白楼主的意思,是否是根据复选框的内部来选择加载目录树?最好做个示例
--  作者:mr725
--  发布时间:2010/2/8 16:52:00
--  
图片点击可在新窗口打开查看不是有加载条件嘛:

BuildDataTree(DataTable, Filter, Column1, Column2, Column3...)

DataTableName: 数据表名
DataTable:    数据表
Filter:        过滤条件
Column1,Column3,Column3:数据列名称,用这些列的数据生成目录树,可以指定多列。

实例:


--  作者:baoxyang
--  发布时间:2010/2/9 8:58:00
--  

Sorry!没有说清楚,误解。在目录树中,知道目录名称变量,如何判断此目录树中具有相同名称的那项来被选中?谢了!不知是否说清楚没。


--  作者:baoxyang
--  发布时间:2010/2/9 9:44:00
--  
如果变量名称为节点名称为“6602=管理费用\\6602.06=社会保险费\\6602.06.01=养老”时,查找节点路径等于变量名称时,此节点设为选中状态,如何实现?本人对目录集合还不是很清楚,请各位帮忙下。谢谢!!
图片点击可在新窗口打开查看此主题相关图片如下:11.jpg
图片点击可在新窗口打开查看

--  作者:mr725
--  发布时间:2010/2/10 0:35:00
--  
狐表的这框框有些怪, 从逻辑上说,下级勾选了,上级的框框一定有勾选才是(否则在关闭展开状态时,就不知道下级是否有被勾选的了) ......

不知道大家的逻辑是怎样的~~~~    
--  作者:reachtone
--  发布时间:2010/2/10 1:16:00
--  
可以在事件中设置代码:当下级勾选时,同时将上级节点勾选。
--  作者:mr725
--  发布时间:2010/2/10 11:52:00
--  
这个用代码麻烦啊~   我得试一试。。。。。。
--  作者:mr725
--  发布时间:2010/2/10 12:07:00
--  

这个是针对二级的目录树(大家可以试一试) :  多级的还没想通啊~  呵呵      请高手赐教::::::::
Dim n as integer = e.Node.FullPath.Split("\\").length
Dim Vals() As String = e.Node.FullPath.Split("-:special:1:-)
Dim tr As WinForm.TreeView
tr = Forms("窗口2").Controls("TreeView1")
for i as integer = 0 to tr.Nodes.count-1
    if tr.Nodes(i).text = Vals(0)   
        n = i+1
exit for
    end if
next


If e.Node.Level > 0 
    for ii as integer = 0 to tr.Nodes(n-1).Nodes.count-1         
    if tr.Nodes(n-1).Nodes(ii).checked = true \'
            if tr.Nodes(n-1).checked = false
                tr.Nodes(n-1).checked = true
                exit for
            else
                return
            end if
        else
            if tr.Nodes(n-1).checked = true
                tr.Nodes(n-1).checked = false
            end if
        end if
    next
end if

说明: 一级复选框打勾对二级无效, 二级复选框只要有一个打勾,一级框自动勾上,当二级框全部取消后,一级框也自动取消。  


--  作者:reachtone
--  发布时间:2010/2/10 12:22:00
--  

不用这么复杂,5行代码就够了:

If e.Node.Checked and e.Node.Level > 0 Then
      If e.Node.ParentNode.Checked = False Then
          e.Node.ParentNode.Checked = True
      End If
End If

[此贴子已经被作者于2010-2-10 12:23:39编辑过]