以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在不同用户加载不同行后 加载树无法用?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58563)

--  作者:hawkgo
--  发布时间:2014/10/19 22:43:00
--  在不同用户加载不同行后 加载树无法用?
在 项目属性  loadusersetting 加入:

If User.Type = UserTypeEnum.Administrator Or User.Type = UserTypeEnum.Developer Then
   DataTables("合同管理_主列表").LoadFilter = ""
Else  
 DataTables("合同管理_主列表").LoadFilter = "销售姓名 = \'" & User.Name & "\'"
End If
DataTables("合同管理_主列表").Load()

在合同管理_主列表 的 treeview1 控件上 无法显示 加载树?为什么?

这是表的主窗口  afterload的代码:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("合同管理_主列表", "大区|销售姓名|客户单位|客户姓名|合同编号")
trv.Nodes.Insert("显示所有行",0)

我试过 发现按照  销售员的名字登录是无法显示的,而 开发者登录的话,在“应用窗口”中可以显示加载树。

哪位大神来解答,不甚感激!

--  作者:有点甜
--  发布时间:2014/10/19 22:49:00
--  
 是不是没有对应的数据?必须有数据才会生成树的。
--  作者:hawkgo
--  发布时间:2014/10/20 8:33:00
--  在不同用户加载不同行后 加载树无法用?
谢谢有点甜。
通过加载过滤后的的 table,应该 “大区”和“销售员” 是相同的。其他的“客户单位”,“合同编号“是不同的
但是treeview1 里面的buildtree,应该针对的是 datatable的,是不是这个出了问题?



--  作者:hawkgo
--  发布时间:2014/10/20 8:39:00
--  在不同用户加载不同行后 加载树无法用?
@有点甜
      在 配合不同用户登录,显示自己建立的行时,前面在 beforeloadinnertable 需要加入
If e.DataTableName = "合同管理_主列表" Then
    e.Filter = "[_Identify] Is Null"
End If

这样”合同管理_主列表“就不会自动加载,

转到loadusersetting 按条件加载
是否这个和 加载树冲突?
[此贴子已经被作者于2014-10-20 8:41:54编辑过]

--  作者:Bin
--  发布时间:2014/10/20 8:49:00
--  
不加载,就没内容,自然就没东西可生成
--  作者:hawkgo
--  发布时间:2014/10/20 8:56:00
--  
刚才试着
注释掉:项目属性中 beforeloadinnertable 里面的

If e.DataTableName = "合同管理_主列表" Then
    e.Filter = "[_Identify] Is Null"
End If

后,果然 加载树可以正常显示,但是显示的是 datatable,即没有经过任何筛选的datatable的所有数据,
表中,afterload 的 代码:

 Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("合同管理_主列表", "大区|销售姓名|客户单位|客户姓名|合同编号")
trv.Nodes.Insert("显示所有行",0)

buildtree ,是否可以加入 筛选条件,  果然可以! 哈哈

trv.BuildTree("合同管理_主列表", "大区|销售姓名|客户单位|客户姓名|合同编号","销售姓名=\' "& user.name & " \' " )

这样目录树显示和主表加载同步了。

谢谢各位!

--  作者:有点甜
--  发布时间:2014/10/20 9:04:00
--  

 回复楼上,如果你用1楼的代码,是不会出现你那种问题的。

 

 如果有问题,就肯定是你哪里有改变了loadFilter和Load了


--  作者:hawkgo
--  发布时间:2014/10/20 9:08:00
--  
出现新的问题,发现 节点双击会出现如下错误:

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2014.9.23.1
错误所在事件:窗口,合同管理,TreeView1,NodeMouseDoubleClick
详细错误信息:
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据


图片点击可在新窗口打开查看此主题相关图片如下:20141020090358.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2014/10/20 9:23:00
--  

 当你把生成目录树的表格重新load一次的时候,就不能再使用e.node.datarow了,因为那一行已经丢失了。

 

 具体问题,请上传例子


--  作者:hawkgo
--  发布时间:2014/10/20 10:08:00
--  
嗯,我整理一下,是上传附件吗?
另外,我估计要实现这个功能,需要全部load,然后设置“不可见”逻辑上会更容易。下午看看。

谢谢!