1、加載樹,2、無限制節點,3、反鍵菜單
效果圖:
2、 //加載數據完畢後閉合樹結構
3、 function collapseAll() {
4、 tree.collapseAll();
5、 }
6、 function getKnowledgeTree(){
7、 treeManager = $("#tree1").ligerTree({
8、 url : "knowledgeclassify!showtree.action",
9、 nodeDraggable: false,
10、 idFieldName : "classid",
11、 parentIDFieldName : "parentid",
12、 textFieldName : "name",
13、 checkbox:false,
14、 onAfterAppend:collapseAll,//樹默認摺疊
15、 onSelect : function(node){
17、 },
18、 single : true,
19、 onContextmenu:
20、 function (node, e)
21、 {
22、 actionNodeID = node.data.classid;
23、 actionPID = node.data.parentid;
24、 menu.show({ top: e.pageY, left: e.pageX });
25、 menu2.hide();
26、 [d2]
27、 return false;
28、 }
29、
30、 });
31、 tree = $("#tree1").ligerGetTreeManager();
32、 }
33、 function inittree(){
34、 getKnowledgeTree();
35、 menu = $.ligerMenu({ top: 100, left: 100, width: 120, items:[
36、 { id : '1',text: '增加子節點', click: f_menuitemclick, icon: 'add' },
37、 { id : '4',text: '增加同級節點', click: f_menuitemclick, icon: 'add' },
38、
39、 { id : '2',text: '修改', click: f_menuitemclick },
40、
41、 { line: true },
42、
43、 { id : '3',text: '刪除', click: f_menuitemclick }
44、
45、 ]
46、
47、 });
48、 menu2 = $.ligerMenu({ top: 100, left: 100, width: 120, items:
49、 [
50、 { text: '增加一級分類', click: addroot, icon: 'add' }
51、 ]
52、 });
53、 $("#leftdiv").bind("contextmenu", function (e)
54、 {
55、 menu2.show({ top: e.pageY, left: e.pageX });
56、 menu.hide();
57、
58、 return false;
59、 });
60、 }[d3]
61、 //工具條按鈕響應事件
62、 function f_menuitemclick(item,i)
63、 {
64、 if(item.id)
65、 {
66、 switch (item.id)
67、 {
68、 case "1":
69、 f_openWindow('business/knowledgeclassify!input.action?parentid='+actionNodeID, '添加知識分類', 460, 250);
70、 return;
71、 case "4":
72、 f_openWindow('business/knowledgeclassify!input.action?parentid=' + actionPID, '增加同級分類', 460, 250);
73、 return;
74、 case "2":
75、 f_openWindow('business/knowledgeclassify!input.action?classid=' + actionNodeID, '修改知識分類', 460, 250);
76、 return;
77、 case "3":
78、 $.ligerDialog.confirm('您確定要刪除該分類嗎?', function (y)
79、 {
80、 if (!y) return;
81、 // var rowsdata = treeManager.getChecked();
82、
83、 //if (!rowsdata.length)
84、 //{
85、 // $.ligerDialog.alert('請先選擇要刪除的節點!');
86、
87、 // return;
88、 //}
89、 //var idStr = "";
90、 //$(rowsdata).each(function (i, item)
91、 //{
92、 // idStr += this.data.classid;
93、
94、 // if (i < rowsdata.length - 1) idStr += ",";
95、 //});
96、 //通過節點ID 判斷是否有子節點有子節點的先進行刪除子節點的驗證
97、 if(treeManager.hasChildren(treeManager.getDataByID(actionNodeID))){
98、 $.ligerDialog.alert('請先刪除子節點');
99、 return;
100、 }else{
101、 $.post("knowledgeclassify!checkKnowledgeclassidIsUse.action","classids="+actionNodeID,function(msg){
102、 if(msg!= ""){
103、 $.ligerDialog.alert('該分類下還關聯知識點,不可刪除');
104、 }else{
105、 $.ligerDialog.waitting("正在刪除中...");
106、 $.ajax({
107、 type: "POST",
108、 url: "knowledgeclassify!delete.action",
109、 data: "classids="+actionNodeID,
110、 success: function(msg){
111、 $.ligerDialog.success(msg);
112、 $.ligerDialog.closeWaitting();
113、 refreshtree();
114、 }
115、 });
116、 }
117、 });
118、 }
119、 });
120、 }
121、 }
122、 }[d4]
var treebaroptions = {};
$(function (){
$("#layout1").ligerLayout({ leftWidth: 200});
//知識點分類列表搜索框
$("#treetoolbar").ligerToolBar(treebaroptions);
$("#treetoolbar").before("<div style='margin-top:1px' class='l-toolbar-item'><table><tr>"+
"<td><input type='text' name='classcodeorname' id='classcodeorname' value='搜索:簡碼、名稱' οnkeydοwn='keyDown(event);' οnblur=\"if(this.value=='') value='搜索:簡碼、名稱';\" οnfοcus=\"if(this.value=='搜索:簡碼、名稱') value='';\" style='' /></td>"+
"<td> </td><td><input type='image' name='imgbuton' src='${ctx}/js/ligerUI/skins/icons/search.gif' border=0 οnfοcus=this.blur(); style='cursor:pointer' οnclick='submitTreeByName();'/></td>"+
"</tr></table></div>");
$("#classcodeorname").ligerTextBox({Width:130,Height:5});
123、 });
124、 function refreshtree(){
125、 treeManager.clear();
126、 treeManager.loadData(null,'knowledgeclassify!showtree.action',null);
127、 }
$("#nodeinfo").attr("src",'knowledgeclassify!listnode.action?classid='+node.data.classid);
//document.all("nodeinfo").src="knowledgeclassify!listnode.action?classid="+node.data.classid;
128、 }
Action:
public String showtree() throws Exception{
List<PropertyFilter> filters = PropertyFilter.buildFromHttpRequest(Struts2Utils.getRequest());
// classcode = Struts2Utils.getRequest().getParameter("classcode");
// filters = genFilterList(filters, "LIKES", "classcode", classcode);
// List<KnowledgeClassify> lRet = manager.listclass(filters);
// 判斷用戶知識分類權限
String codename=Struts2Utils.getRequest().getParameter("codename");
SysUser user = getCurrentSysUser();
//獲得搜索name參數
String str = "";
List<KnowledgeClassify> resultList = null;
if(codename!=null && !codename.equals("")){
str=new String(codename.getBytes("iso-8859-1"), "utf-8");
//按參數查詢
resultList = manager.searchKnowledge(filters, user,str);
}else{
resultList = manager.getKnowledgeClassByUser(filters, user);
}
JsonConfig config = new JsonConfig();
config.setExcludes(new String[] {"subsysid","memo","creator","createtime","lastmodify","updater","orders","roleIds","updateuser","createuser","handler","hibernateLazyInitializer"});
JSONArray jsonArray = JSONArray.fromObject(resultList,config);
Struts2Utils.renderText(jsonArray.toString());
returnNONE;
}
//查看明細
public String listnode()throws Exception {
prepareModel();
Struts2Utils.getRequest().setAttribute("model", model);
return"listnode";
}
@Override
protectedvoid prepareModel() throws Exception {
model = new KnowledgeClassify();
else
model = manager.getclass(classid);
}
Service:
/**
* 根據條件查詢知識分類
* @param filters
* @param user
* @param name
* @return
*/
@SuppressWarnings("unchecked")
public List<KnowledgeClassify> searchKnowledge(List<PropertyFilter> filters, SysUser user,String name) {
List<KnowledgeClassify> kcList=new ArrayList<KnowledgeClassify>();
// 管理員查詢知識權限
String hql = "select kc from KnowledgeClassify kc where 1=1";
if (user.getUserid() == 1||Integer.parseInt(user.getTypeid().toString()) == UserType.SEAT) {
if(name!=null && !"".equals("name")){
hql += " and (kc.name like '%" + name
+ "%' or kc.classcode like '%" + name + "%')";
}
kcList=classdao.find(hql);
}
// 其它用戶查詢知識權限
else {
//有權限的父節點 此處沒有對子節點加權限
kcList=getKnowledgeClassPowerByUser(user);
List<KnowledgeClassify> sonList=new ArrayList<KnowledgeClassify>();
List<KnowledgeClassify> parentList=new ArrayList<KnowledgeClassify>();
HashSet<KnowledgeClassify> parentSet=new HashSet<KnowledgeClassify>();
//不同用戶不同權限查詢樹信息
if(name!=null){
//過濾查詢父節點此處沒用
//parentSet=getAllParentNodesByName(kcList);
//全部子節點
sonList=getAllSonNodes(kcList);
//子節點按條件過濾
sonList=getAllSonNodesByName(kcList,sonList,name);
//父節點按條件過濾
parentList=getKnowledgeClassPowerByUserByName(user,name);
if(parentList!=null){
parentList.addAll(sonList);
return parentList;
}else{
return sonList;
}
}else{
//取所有父節點
parentSet=getAllParentNodes(kcList);
//取所有子節點
sonList=getAllSonNodes(kcList);
if(parentSet!=null && parentSet.size()>0){
kcList.addAll(parentSet);
kcList.addAll(sonList);
}
}
}
return kcList;
}
方法二:
//搜索條件查詢知識分類樹按登陸用戶查詢不同用戶顯示不同的樹節點
@Transactional(readOnly = true)
public List<Menu> searchKnowledgeClassByUser(List<PropertyFilter> filters,SysUser user){
List<Menu> nl = new ArrayList<Menu>();
List<KnowledgeClassify> kcList=new ArrayList<KnowledgeClassify>();
// 管理員查詢知識權限
if (user.getUserid() == 1||Integer.parseInt(user.getTypeid().toString()) == UserType.SEAT) {
List<KnowledgeClassify> l = classdao.find(filters);[d8]
if (l != null && l.size() > 0) {
for (KnowledgeClassify t : l) {
Menu m = new Menu();
m.setId(t.getClassid());
m.setText(t.getName());
m.setPid(t.getParentid());
nl.add(m);
}
}
return nl;
}
// 其它用戶查詢知識權限
else {
kcList=getKnowledgeClassPowerByUser(user);
//取所有父節點
HashSet<KnowledgeClassify> parentSet=new HashSet<KnowledgeClassify>();
parentSet=getAllParentNodes(kcList);
//取所有子節點
List<KnowledgeClassify> sonList=new ArrayList<KnowledgeClassify>();
sonList=getAllSonNodes(kcList);
kcList.addAll(parentSet);
kcList.addAll(sonList);
if (kcList != null && kcList.size() > 0) {
for (KnowledgeClassify t : kcList) {
Menu m = new Menu();
m.setId(t.getClassid());
m.setText(t.getName());
m.setPid(t.getParentid());
nl.add(m);
}
}
return nl;
}
}
Dao: