extjs 的权限问题 要求控制的对象是 菜单,按钮,(2)


//FUTURE_TAG全局的TAG控制类, 控制的组件的hidden属性,key=TAG的名字,value=true(组件隐藏),false(组件显示)
var FUTURE_TAG={tbar1: false, tbar2: true};
var conn = Ext.lib.Ajax.getConnectionObject().conn;
conn.open("GET", 'getJsonTags.do',false);
conn.send(null);
future_tag= eval('(' + conn.responseText + ')');


在js中TAG的用法如下:

复制代码 代码如下:


var btn_add_system = new Ext.Button({
text : '添加',
iconCls : 'icon-add',
hidden: FUTURE_TAG.system_add,
handler : function() {
window_add_system.show();
}
});


getJsonTags.do 返回一个Map对象,key是TAG名字,value是boolean
java的写法如下:

复制代码 代码如下:


tagMap=new HashMap<String,Boolean>();
for (int i=0;i<allTagList.size();i++){
tagMap.put(allTagList.get(i).getResString(), true);
}


strut2配置如下:

复制代码 代码如下:


<action method="getJsonTags">
<result type="json">
<param>tagMap</param>
</result>
</action>


这样就可以在后台控制前台的组件是否显示了,从而达到了我们的目的。
解决思路4:
通过ajax读取服务器端的权限值,返回这样的数据:
{tbar1: false, tbar2: true}
然后在extjs中:
var vResult = eval('(' + ajaxText + ')'); //得到{tbar1: false, tbar2: true}
这样就可以直接给tbar赋值了
disabled: vResult.tbar1
disabled: vResult.tbar2
解决思路5:
设置模块权限用于设置用户可以操作的权限。允许设置用户对模块的可操作与不可操作。
弹出设置权限子窗体
设置权限之前须选择一个用户。
Js代码

复制代码 代码如下:


var row = grid_user.getSelectionModel().getSelected();
if(!row){
alert('对不起,您还未选择数据!');
return;
}
var row = grid_user.getSelectionModel().getSelected();
if(!row){
alert('对不起,您还未选择数据!');
return;
}


创建一棵树,树放置在弹出窗体的中央。
Js代码

复制代码 代码如下:


var root=new Ext.tree.TreeNode({
id:"root",
text:"所有操作",
checked:false,
iconCls:'task-folder'
});
var tree=new Ext.tree.TreePanel({
frame:false,
region:'center',
root:root,
animate:true,
enableDD:false,
border:false,
rootVisible:true,
autoScroll:true
});
var root=new Ext.tree.TreeNode({
id:"root",
text:"所有操作",
checked:false,
iconCls:'task-folder' });
var tree=new Ext.tree.TreePanel({
frame:false,
region:'center',
root:root,
animate:true,
enableDD:false,
border:false,
rootVisible:true,
autoScroll:true
});


创建弹出子窗体。
Js代码

复制代码 代码如下:


var win = new Ext.Window({
title:'设置模块权限',
closable:true,
width:300,
height:500,
plain:true,
layout:'border',
modal:true,
items:[tree]
});
win.show(this);
var win = new Ext.Window({
title:'设置模块权限',
closable:true,
width:300,
height:500,
plain:true,
layout:'border',
modal:true,
items:[tree]
});
win.show(this);


在加载数据期间,给予提示。
Js代码

复制代码 代码如下:


Ext.MessageBox.show({
title:'请稍候',
msg:'正在加载数据,请耐心等待...',
progress:true
});
Ext.MessageBox.show({
title:'请稍候',
msg:'正在加载数据,请耐心等待...',
progress:true
});


将根节点,所选择的用户行,父节点标志作为参数调用方法。
Js代码
getNodes(row,root,'root');
getNodes(row,root,'root');
从后台中取得数据并以树形式在客户端展现
方法定义与方法内容。
Js代码

复制代码 代码如下:


function getNodes(row,root,parent){
//...
}
function getNodes(row,root,parent){ //...}


JSON 数据的定义。
Js代码

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsfpd.html