我有个问题,界面如上,一个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 也不熟悉。
A:contextmenustrip绑定事件
已经实现了单选功能。 这个程序是webform 的没有contmenu 菜单控件可以啊
判断选中节点是什么类型
可以在添加节点时为TreeNode的Tag属性赋特定值标识
右键时获取右击的控件来源得到TreeNode的tag什么的保存在公有变量
然后依据具体右键的选项来做相应处理
想实现单选就不要显示复选框嘛,然后在treeview控件的SelectedNodeChanged事件中获取用户选择的项
已经实现了单选功能。
@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 () 增加一行代码,用以实现单选功能。
TreeView1.Attributes.Add ( "onclick ", "OnClientTreeNodeChecked(event) " );
没多研究过,先关注下
关注一下