extjs4 动态加载树菜单和相应的按钮是否显示 ,到对权限的控制粒度细化到按钮
来源:互联网 发布:阮佳网络班 编辑:程序博客网 时间:2024/06/07 23:33
初步想到对权限的控制的就是树菜单从数据库加载,同时也加载相应 增删改查 按钮setVisible和setDisabled的true or false值。
树菜单的view
树菜单的store
然后是单击树菜单的事件监听,这里是核心controller。
最后后台的代码
我这里演示用手动设置这些值模拟数据库查询到的值。
先说明一下,用setVisible和setDisabled来实现控制粒度细化到按钮有一点漏洞,setVisible可以通过修改html源码让它显示出来,不过setDisabled我暂时没发现,有发现的朋友通知一下,在此先谢过了……
先上效果图
、
树菜单的view
Ext.define('yang.view.frameAAA.module.FrameAAAWestChartPanelRemote', {extend : 'Ext.tree.Panel',alias : 'widget.frameAAAWestChartPanelRemote',initComponent : function() {var chartStoreRemote = Ext.create('yang.store.frameAAA.module.FrameAAAWestChartStoreRemote');var me = this;Ext.apply(me, {id : 'treeAuthentication',title : '<center>www 栏目</center>',rootVisible : true,lines : true,autoScroll : true,store : chartStoreRemote});me.callParent(arguments);}});
树菜单的store
Ext.define('yang.store.frameAAA.module.FrameAAAWestChartStoreRemote', {extend : 'Ext.data.TreeStore',autoLoad : true,fields : ['text', 'iconCls', 'xtype', 'leaf', 'addBut','deleteBut', 'modifyBut', 'queryBut'],proxy : {type : 'ajax',url : 'http://localhost:8080/b_springmvc_extjs/treeAuthentication.do',actionMethods : {read : 'POST' // 提交的方式是 POST方式},reader : {type : 'json',root : 'children'// record: 'node'}},sorters : [{property : 'text',direction : 'asc'}],root : {nodeType : 'async',text : 'treeAuthentication',// id: '00',expanded : true}});
然后是单击树菜单的事件监听,这里是核心controller。
'frameAAAWestChartPanelRemote' : {itemclick : this.westChartPanelRemoteClick}
//对权限的控制粒度再菜单的显示上细化到按钮westChartPanelRemoteClick : function(view, rec, item, index, e) {var charId = 'chartRemote_'+rec.get('text');var frameAAACenter = Ext.getCmp('frameAAACenter');var chartTabPanel=Ext.getCmp(charId);if(!chartTabPanel){chartTabPanel = frameAAACenter.add({xtype : rec.get('xtype'),id : 'chartRemote_'+rec.get('text'),title : rec.get('text')+' 报表',closable : true,moduleId:rec.get('id')});}frameAAACenter.setActiveTab(chartTabPanel);//根据后台返回来的值动态设置是否显示 增删改查 按钮Ext.getCmp(charId+'_addBut').setVisible(rec.get('addBut'));Ext.getCmp(charId+'_modifyBut').setVisible(rec.get('modifyBut'));Ext.getCmp(charId+'_deleteBut').setVisible(rec.get('deleteBut'));//根据后台返回来的值动态设置是否可以点击 增删改查 按钮Ext.getCmp(charId+'_addBut').setDisabled(!rec.get('addBut'));Ext.getCmp(charId+'_modifyBut').setDisabled(!rec.get('modifyBut'));Ext.getCmp(charId+'_deleteBut').setDisabled(rec.get('deleteBut'));},
最后后台的代码
@RequestMapping(value = "/treeAuthentication.do", method = RequestMethod.POST)@ResponseBodypublic String treeAuthentication() {List<TreeStore> list = new ArrayList<TreeStore>();int num = new Random().nextInt(10);for (int i = 1; i <= num; i++) {TreeStore t = new TreeStore();t.setId(i);t.setText("aaa-" + i);t.setLeaf(true);if (i % 2 == 0) {t.setXtype("frameAAACenterGridPanel");t.setAddBut(false);t.setDeleteBut(false);t.setModifyBut(false);t.setQueryBut(false);} else {t.setXtype("frameAAACenterGridPanel");t.setAddBut(true);t.setDeleteBut(true);t.setModifyBut(true);t.setQueryBut(true);}list.add(t);}JSONArray jsonArray = JSONArray.fromObject(list);String json = "{children:" + jsonArray.toString() + "}";System.out.println(json);return json;}
再附上TreeStore的entity
public class TreeStore implements Serializable {/** * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) */private static final long serialVersionUID = 1L;private int id;private String text;private String xtype;private String iconCls = "user";private boolean leaf;private boolean addBut;private boolean deleteBut;private boolean modifyBut;private boolean queryBut;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getText() {return text;}public void setText(String text) {this.text = text;}public String getXtype() {return xtype;}public void setXtype(String xtype) {this.xtype = xtype;}public String getIconCls() {return iconCls;}public void setIconCls(String iconCls) {this.iconCls = iconCls;}public boolean isLeaf() {return leaf;}public void setLeaf(boolean leaf) {this.leaf = leaf;}public boolean isAddBut() {return addBut;}public void setAddBut(boolean addBut) {this.addBut = addBut;}public boolean isDeleteBut() {return deleteBut;}public void setDeleteBut(boolean deleteBut) {this.deleteBut = deleteBut;}public boolean isModifyBut() {return modifyBut;}public void setModifyBut(boolean modifyBut) {this.modifyBut = modifyBut;}public boolean isQueryBut() {return queryBut;}public void setQueryBut(boolean queryBut) {this.queryBut = queryBut;}}
- extjs4 动态加载树菜单和相应的按钮是否显示 ,到对权限的控制粒度细化到按钮
- 通用权限模块 权限粒度精确到菜单上的按钮
- 使用XmlDocument将dropdownlist中显示的书名的其它信息读入到相应的文本框中。添加 :删除按钮,修改并保存按钮 和 添加按钮。完成这些按钮所对应的功能(XmlDocument)
- SSH权限管理控制到按钮
- 根据输入框EditText是否有内容来对按钮的点击权限控制
- Json文件的加载 和 按钮的消息相应
- 轻松搞定权限设计1-页面按钮控制(精确到某个用户和某个按钮)
- JavaScript控制按钮的显示和隐藏
- springMVC+velocity做权限控制 控制到按钮!
- 同一个动作相应按钮、菜单项或击键的方式
- unity 菜单按钮添加及相应窗口的实现
- <input type="submit">点击按钮 添加内容到相应的radio的ul li中
- 提交按钮的到计时
- 怎样没有权限但能去操作相应的按钮
- 点击这些按钮时进入到同一个action中找到相应的方法
- springmvc 按钮级别的权限控制
- extjs4如何让actioncolumn的操作按钮动态隐藏?
- 【自然框架】通用权限的视频演示(一):添加角色,权限到功能节点和按钮
- 函数和存储过程
- A + B Problem II
- dwr的知识详解和例子
- OpenCL “速成”冲刺【第二天】
- lua的table实现以及遍历方式
- extjs4 动态加载树菜单和相应的按钮是否显示 ,到对权限的控制粒度细化到按钮
- 收集ios开源框架
- Android Uevent实例分析
- 【Lucene】TokenStream-语汇单元的项、偏移量、类型和位置增量
- Android WIFI框架分析(1)(2)
- Android 常用代码---屏幕
- 实现两个DataTable的联合查询(转载)
- c跟OC的区别
- Android 常用代码---GPS