一、
效果图:
js部分:
var isgn = false; var modifyColumn = new Ext.Button({ id:'modifyColumn', text: "展开", iconCls:'btn_expand', listeners:{ click:function(){ var gridM = Ext.getCmp('grid').getColumnModel(); for (var i = 14 ; i < 26 ; i++){ gridM.setHidden(i,isgn); } if(isgn){ this.setText("展开"); this.setIconClass('btn_expand'); isgn = false; }else{ this.setText("收缩"); this.setIconClass('btn_collapse'); isgn = true; } } } });
二、Tree
效果图:
js部分:
function loadTree(){ try{ //重写TreePanel,支持check复选框 Ext.override(Ext.tree.TreeNodeUI, { toggleCheck:function (value) { var cb = this.checkbox; if (cb) { cb.checked = (value === undefined ? !cb.checked : value); this.node.attributes.checked = cb.checked; this.fireEvent("checkchange", this.node, cb.checked); } } }); if(treePanel)return ; treePanel=new Ext.tree.TreePanel({ id: treePanel, xtype:'treepanel', split:true, border:true, width:300, height:500, collapsible:false, autoScroll:true, animate: true,// 动画效果 enableDD: false,// 是否支持拖拽效果 containerScroll: true,// 是否支持滚动条 bodyStyle : 'margin:0px', loadMask: {msg: '数据加载中...'}, applyTo:'tree', //定义根节点 异步加载根节点 root: new Ext.tree.AsyncTreeNode({id:'root', expanded: true}), loader: new Ext.tree.TreeLoader({dataUrl: urlpath + '/project/manage/edit/uItemMember.do?action=getDptUsers&check=false'}), rootVisible:false, // 设置树的点击事件 listeners: { //单击选中复选框,在点击添加按钮 添加人员 'click': function(node) { if(!node.isLeaf){ dptId = node.id; dptName = node.text; //查询部门下的人员 store.load({params:{ dptId:dptId, dpt:dptName }}); }else{ //设置UI状态为选中状态 node.getUI().toggleCheck(true); //设置节点属性为选中状态 node.attributes.checked = true; } }, //双击直接添加人员 'dblclick':function(node,e){ if(!node.id != 1 && node.isLeaf()){ var userid = node.id.substring(0,node.id.length-6);//去掉UItemMemberController.java中添加的666888 var name = node.text; var dpt = node.parentNode.text; var phone = node.attributes.phone; var email = node.attributes.email; var roleid = ''; var record = new Ext.data.Record({ userid : userid, name : name, phone : phone, email : email, roleid : roleid, dpt : dpt }); var rightstore = Ext.getCmp("rightPanel").getStore(); var arr = new Array(); for(var ii=0; ii < rightstore.getCount(); ii++){ var rightRecord = rightstore.getAt(ii); var userId = rightRecord.get("userid"); arr[ii] = userId; } var j = in_array(arr, userid); if(j == -1){ var len = rightstore.getCount(); if((len>0 && isMultiple=='0') ||'${pmName}' == 'yes'){ rightStore.removeAll(); } rightStore.insert(rightStore.getCount(),record); } } } } }); //第一个true是自动展开所有子节点,第二个true是以动画效果展开树 //treePanel.getRootNode().expand(true,true); if('${pmName}' == 'yes' ||'${isMultiple}'=='0'){ //修改项目经理 //使单位树上的复选框只可选中一个 treePanel.on('checkchange', function(node, checked) { node.attributes.checked = checked; var chs = treePanel.getChecked(); for(var i = 0; i < chs.length; i++) { if (chs[i].attributes['id'] != node.attributes['id']){ chs[i].ui.toggleCheck(!checked); } }}, treePanel); } }catch(e){Ext.Msg.alert("提示错误信息",e.message);} };
后台java部分:
StringBuffer sbfUser = new StringBuffer();
sbfUser.append("[");
if (users != null && users.size() > 0) {
for (User user : users) {
sbfUser.append("{");
sbfUser.append("id:'" + user.getId() + "666888'," + "sex:'"
+ user.getSex() + "'," + "phone:'" + user.getMphone()
+ "'," + "email:'" + user.getEmail() + "'," + "text:'"
+ user.getName() + "'," + "leaf:" + true + ","
+ "icon:'" + basePath
+ "/themes/default/images/employee.png" + "',"
+ "checked:" + checked + "," + "singleClickExpand:"
+ true);// ",checked:"+checked+ 树上出现复选框
sbfUser.append("},");
}
}
StringBuffer sbfDpt = new StringBuffer();
boolean leaf = false;
if (subDptList != null && subDptList.size() > 0) {
for (Dpt subDpt : subDptList) {
sbfDpt.append("{");
if (subDpt.getDptid() == 1) {
sbfDpt.append("id:'" + subDpt.getDptid() + "',text:'"
+ subDpt.getDptname() + "',expanded:true,leaf:"
+ leaf + ",singleClickExpand:" + true);
} else {
sbfDpt.append("id:'" + subDpt.getDptid() + "',text:'"
+ subDpt.getDptname() + "',leaf:" + leaf
+ ",singleClickExpand:" + true);// ",checked:"+checked 树上出现复选框
}
sbfDpt.append("},");
}
String str = sbfDpt.substring(0, sbfDpt.lastIndexOf(","));
//清空sbfDpt下一次再使用
sbfDpt.delete(0, sbfDpt.length());
sbfDpt.append(str);
}
StringBuffer sbfDptUser = new StringBuffer();
sbfDptUser.append(sbfUser).append(sbfDpt).append("]");
AjaxUtils._write(response, sbfDptUser);