首页 新闻 会员 周边 捐助

关于Treeview 控件的使用。

0
悬赏园豆:100 [已关闭问题] 关闭于 2012-05-29 14:01

我有个问题,界面如上,一个treeview 控件  A /B 代表公司名称,公司下面有部门,部门下面可能还有部门,部门下面可能直接是岗位。

我想实现一个功能:

1.treeview 的单选功能 ,网上很多办法,还没有搞出来。

2. treeview 的右键菜单功能.

    A . 右键点击公司节点的时候,弹出右键菜单,可选择“新建子公司“或者”新建部门“,选择对应的菜单项后,tree的右侧出现对应的录入框,同时需要记录录入的子公司或者部门的上级节点ID 是该公司的节点ID 。

   B. 右键点击部门节点的时候,弹出右键菜单,可以选择“新建部门”或者“新建岗位”,选择对应菜单项目后,tree 的右侧出现对应的录入框,同时需要记录 新建的部门或者岗位的上级节点ID 是该被部门的ID.

   C .右键点击岗位节点的时候,弹出右键菜单,可以选择“新建人员” ,选择菜单后,右侧出现人员选择的列表框,添加选择人员到该岗位。

 

另外,功能就是,如何在菜单中增加,“变更上级” 的菜单,这样,整个部门或者整个岗位就可以调整上级部门ID。

 

这个功能太复杂了,我想的头大,那位大侠有经验,可以指点指点思路。 如果判断某个节点是公司,部门、子部门,岗位的节点类型?

问题补充:

我已经实现了每个节点的类型绑定到节点的ToolTip 属性,例如公司,部门,岗位 ,这样我选择每个节点的时候,知道该节点的ID ,Tooltip 属性,通过tooltip 属性可以知道到那个表去找到ID 为该节点ID 的记录。这样就知道该部门的上级部门ID,或者该岗位所属的部门的ID 。

那么在树的右侧放置机构按钮,分别是“新建部门” ,新建“岗位”,“编辑部门”,“编辑岗位”,“岗位增加人员” 等等按钮,放在VIEW1,然后对应的根据选择的节点类型,激活对应的按钮。

点击按钮对应的显示对应的VIEW 来编辑数据。

不知道这样的思路是否可以? 如果实在不行就只能用Silverlight 来做这些功能,然后插入到这个页面内了。可是silverlight 也不熟悉。

figofeng的主页 figofeng | 初学一级 | 园豆:5
提问于:2012-04-11 16:06
< >
分享
所有回答(5)
0

A:contextmenustrip绑定事件

live in finally | 园豆:208 (菜鸟二级) | 2012-04-11 16:16

已经实现了单选功能。 这个程序是webform 的没有contmenu 菜单控件可以啊

支持(0) 反对(0) figofeng | 园豆:5 (初学一级) | 2012-04-12 10:21
0

判断选中节点是什么类型

可以在添加节点时为TreeNode的Tag属性赋特定值标识

右键时获取右击的控件来源得到TreeNode的tag什么的保存在公有变量

然后依据具体右键的选项来做相应处理

ERS | 园豆:728 (小虾三级) | 2012-04-11 17:46
0

想实现单选就不要显示复选框嘛,然后在treeview控件的SelectedNodeChanged事件中获取用户选择的项

psforever | 园豆:461 (菜鸟二级) | 2012-04-11 21:06

已经实现了单选功能。

支持(0) 反对(0) figofeng | 园豆:5 (初学一级) | 2012-04-12 10:20

@figofeng: 

function getTargetElement(evt) {
    var elem
    if (evt.target) {
        elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target
    }
    else {
        elem = evt.srcElement
    }
    return elem
}

var lastC = null;
function OnClientTreeNodeChecked(evt) {
    evt = (evt) ? evt : ((window.event) ? window.event : " ");
    if (evt == " ") {
        return;
    }
    var obj = getTargetElement(evt);
    var hasTreeNode = false;
    if (obj.tagName) {
        if (obj.tagName == "INPUT" && obj.type == "checkbox") {
            if (lastC) lastC.checked = false
            lastC = obj;
            obj.checked = true;

        }
    }
}

该页面的 load_page () 增加一行代码,用以实现单选功能。

View Code
  TreeView1.Attributes.Add ( "onclick ", "OnClientTreeNodeChecked(event) " );
支持(0) 反对(0) figofeng | 园豆:5 (初学一级) | 2012-04-12 13:09
0

没多研究过,先关注下

无之无 | 园豆:5095 (大侠五级) | 2012-04-12 10:43
0

关注一下

xiufang1989 | 园豆:280 (菜鸟二级) | 2012-04-13 11:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册