以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教目录树问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107326) |
-- 作者:13968559581 -- 发布时间:2017/9/26 8:46:00 -- 请教目录树问题 本人通过人员表,生成某加载树 Dim cmb1 As WinForm.ComboBox = e.Form.Controls("ComboBox1") Dim ryxxb As DataTable cmd.C cmd.CommandText="select * f rom v_OA_a01 where 部门名称 like \'TZXJ%\'" ryxxb=cmd.ExecuteReader Tables("员工表_ryxxb").DataSource =ryxxb cmb1.ComboList=ryxxb.GetComboListString("工号") Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildTree(ryxxb,"部门名称|姓名") trv.Nodes.Insert("全部",0) 想选取目录树某几行的时候,在表里选择相应的人员 For Each nd As WinForm.TreeNode In e.node.AllNodes \'同步子节点选中状态 If nd.FullPath.StartsWith(e.node.FullPath) Then nd.Checked = e.node.Checked End If Next If e.node.Checked = False Then \'如果本次操作为清除节点选中状态 Dim pd As WinForm.TreeNode = e.node.ParentNode \'获取父节点 Do While pd IsNot Nothing pd.Checked = False \'清除父节点选中状态 pd = pd.ParentNode \'继续获取上一层级的父节点 Loop End If Dim cmd As new SQLCommand Dim ryxxb As DataTable cmd.C Dim Filter As String Dim gh As String If e.node.Text = "全部" Then cmd.CommandText="select * f rom v_OA_a01 where 部门名称 like \'TZXJ%\'" Else Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") Dim dr As DataRow For Each nd As WinForm.TreeNode In trv.AllNodes dr=nd.DataRow If nd.Checked = True Then gh=gh & "\'" & dr("工号") & "\'," End If Next gh=gh.Trim(",") MessageBox.show(gh) If gh>"" Then cmd.CommandText="select * fr om v_OA_a01 where 工号 in (" & gh & ")" Else cmd.CommandText="select * fr om v_OA_a01" End If End If ryxxb=cmd.ExecuteReader Tables("员工表_ryxxb").AutoSizeCols Tables("员工表_ryxxb").DataSource =ryxxb 问题有二: 一、我这样设计是否合理 二、当我在目录树选择一个或几个人的时候,右边会出现相应的人员了,但是当我去掉所有选择的时候,报错 .NET Framework 版本:2.0.50727.5485 Foxtable 版本:2017.6.12.1 错误所在事件:窗口,员工表,TreeView1,AfterCheckNode 详细错误信息: 未将对象引用设置到对象的实例。 请指教
|
-- 作者:狐狸爸爸 -- 发布时间:2017/9/26 9:12:00 -- 设计思路有问题,生成一个目录树的时候就加载了所有数据,这样设计动态加载的意义何在? 你不如改成筛选树! 还有帮助文件的动态加载从来不会这样: ryxxb=cmd.ExecuteReader Tables("员工表_ryxxb").DataSource =ryxxb 你这样的设计是从哪里学来的? 帮助文件的动态加载简单快捷。 1、看看目录树是怎么生成的: 看看帮助是怎么生成目录树的? 用了distinct关键词,只加载生成目录树的列。 2、这段帮助虽然用的是主表作为例子,但是一样适用SQLTable,你采用SQLTable,Select语句改为:select * f rom v_OA_a01 where 部门名称 Where [主键列名] Is Null. 接下来就和帮助一样: ..... 合成条件的代码 DataTables("员工表_ryxxb").LoadFilter = 合成的条件 DataTables("员工表_ryxxb").Load() [此贴子已经被作者于2017/9/26 9:27:26编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/9/26 9:18:00 -- 如果报错,那就定位一下错误
http://www.foxtable.com/webhelp/scr/1485.htm
如果自己处理不了,就做个例子发上来 |
-- 作者:狐狸爸爸 -- 发布时间:2017/9/26 9:21:00 -- 如果你不想改动,继续一开始加载所有数据,那就弄成目录树筛选即可: http://www.foxtable.com/webhelp/scr/0917.htm
|
-- 作者:13968559581 -- 发布时间:2017/9/26 12:11:00 -- 再请教 此主题相关图片如下:日本报错.png 我窗口登录后显示,是想这个时候能显示全部人员啊 我在窗口中有两个控件,左边是目录树,右边是表 当我选择左边人员的时候,右边筛选出相应的人员,这种思路有问题? 再请教,谢谢
|
-- 作者:有点甜 -- 发布时间:2017/9/26 12:13:00 -- 如果报错,那就定位一下错误
http://www.foxtable.com/webhelp/scr/1485.htm
如果自己处理不了,就做个例子发上来 |