博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ExtJs中OA管理中组织和用户关系左右选择组件的运用
阅读量:4586 次
发布时间:2019-06-09

本文共 4215 字,大约阅读时间需要 14 分钟。

原文

我完成的效果是:

这里点击左边的树是联动右边itemselector 组件中的用户,并且带有用户搜索

一:废话不多,贴上js代码:

  

var addUsersWin,addUsersFun = function (data) {
            
userSelectStore.load();
            
userSelectStoreOwn.load();
            
addUsersWin =
new
Ext.Window({
                
title:
"添加员工"
,
                
width:780,
                
height:480,
                
buttonAlign:
'center'
,
                
modal:
true
,
                
items:[
                    
{
                        
xtype:
'form'
,
                        
plain:
true
,
                        
url:
'system/addOrganizationUser.json'
,
                        
labelWidth:80,
                        
baseCls:
"x-plain"
,
                        
bodyStyle:
"padding:8px"
,
                        
labelAlign:
'right'
,
                        
frame:
true
,
                        
items: [{
                            
layout:
'column'
,
                            
height:50,
                            
border :
false
,
                            
bodyCssClass  :
"queryForm"
,
                            
defaults : {
                                
layout :
'form'
,
                                
border :
false
,
                                
bodyCssClass:
"queryForm"
,
                                
defaults : {
                                    
anchor :
'95%'
,
                                    
xtype :
"textfield"
                                
}
                            
},
                            
items:[
                                
{
                                    
columnWidth:0.7,
                                    
//layout: 'form',
                                    
items: [{
                                        
xtype:
'textfield'
,
                                        
name:
"filter['name']"
,
                                        
id:
'userName'
,
                                        
fieldLabel:
'用户姓名'
                                    
}]
                                
},
                                
{
                                    
columnWidth:0.08,
                                    
//layout: 'form',
                                    
items: [
                                        
{
                                            
xtype:
'button'
,
                                            
text:
'查询'
,
                                            
iconCls:
'findItem'
,
                                            
handler: function(){
                                                
var un= Ext.getCmp(
'userName'
).getValue();
                                                
userSelectStore.baseParams={
                                                    
name:un
                                                
};
                                                
userSelectStore.load();
                                            
}
                                        
}
                                    
]
                                
}
                            
]
                        
},{
                            
layout:
'column'
,
                            
height:300,
                            
items:[
                                
{
                                    
columnWidth:0.3,
                                    
layout:
'form'
,
                                    
items: [{
                                        
xtype:
'treepanel'
,
                                        
region:
'west'
,
                                        
split:
true
,
                                        
width: 200,
                                        
height: 300,
                                        
margins:
'0 4 0 0'
,
                                        
enableDD:
true
,
                                        
containerScroll:
true
,
                                        
border:
false
,
                                        
rootVisible:
false
,
                                        
autoScroll:
true
,
                                        
root: {
                                            
nodeType:
'async'
                                        
},
                                        
loader:
new
Ext.tree.TreeLoader({
                                            
dataUrl:
'system/organization/resourceTree.json?type=1'
,
                                            
baseAttrs: {uiProvider: Ext.ux.TreeCheckNodeUI}
                                        
}),
                                        
listeners: {
                                            
checkchange: function(node,
checked
){
                                                
node.expand();
                                                
node.attributes.
checked
=
checked
;
                                                
node.eachChild(function(child) {
                                                    
child.ui.toggleCheck(
checked
);
                                                    
child.attributes.
checked
=
checked
;
                                                    
child.fireEvent(
'checkchange'
, child,
checked
);
                                                
})
                                            
},
                                            
afterRender: function (t) {
                                                
treeP = t;
                                                
treeP.root.expand(
true
);
                                            
},
                                           
click:function(node){
                                                
if
(node.id!=
'root'
){
                                                    
userSelectStore.baseParams={
                                                        
id:node.id
                                                    
};
                                                    
userSelectStore.load();
                                                
}
                                           
}
                                        
}
 
                                    
}]
                                
},
                                
{
                                    
columnWidth:0.7,
                                    
layout:
'form'
,
                                    
items: [
                                        
{
                                            
xtype:
'itemselector'
,
                                            
name:
'userIds'
,
                                            
imagePath:
'images/ext/ux/images/'
,
                                            
availableTitle:
'可选用户'
,
                                            
selectedTitle:
'已选用户'
,
                                            
multiselects:[
                                                
{
                                                    
width:200,
                                                    
height:300,
                                                    
store:userSelectStore,
                                                    
displayField:
'name'
,
                                                    
valueField:
'id'
                                                
},
                                                
{
                                                    
width:200,
                                                    
height:300,
                                                    
displayField:
'name'
,
                                                    
valueField:
'id'
,
                                                    
store:userSelectStoreOwn
                                                
}
                                            
]
                                        
}
                                    
]
                                
}
                            
]
                        
}
                        
]
                    
}
                
],
                
buttons:[
                    
{
                        
text:
'确定'
,
                        
handler:function () {
                            
var fromPanel = addUsersWin.
get
(0);
                            
if
(!fromPanel.getForm().isValid()) {
                                
Ext.Msg.alert(
"提示"
,
"请按相关提示正确填写"
);
                                
return
;
                            
}
                            
fromPanel.form.submit({
                                
params
:{id:data.id},
                                
waitMsg:
'正在处理中...'
,
                                
failure:function (form, action) {
                                    
Ext.Msg.alert(
'错误消息'
,
"修改失败,请联系技术人员!"
);
                                
},
                                
success:function (form, action) {
                                        
Ext.MessageBox.alert(
'消息提示'
,
'添加成功!'
);
                                        
frameworkGridStore.reload();
                                        
addUsersWin.destroy();
                                
}
                            
});
                        
}
                    
},
                    
{
                        
text:
'取消'
,
                        
handler:function () {
                            
addUsersWin.destroy();
                        
}
                    
}
                
]
            
});
            
addUsersWin.show();
        
}

  

二:这里我们先看表单中, xtype:'itemselector',组件,要用到,需要引入两个js: ItemSelector.js 和 MultiSelect.js

这样 itemselector组件就可以用了,其中左边加载的数据:可选用户:userSelectStore

 

var userSelectStore =
new
Ext.data.JsonStore({
            
url:
'system/getAllUserList.json'
,
            
idProperty:
'id'
,
            
fields:[
'id'
,
'name'
],
            
root:
'userList'
,
            
paramNames : {
                
id:
''
,
                
name:
''
            
}
        
});

  

 

右边部分加载的数据:已选用户:userSelectStoreOwn

 

var userSelectStoreOwn =
new
Ext.data.JsonStore({
            
url:
'system/getOrganizationUserList.json'
,
            
idProperty:
'id'
,
            
fields:[
'id'
,
'name'
],
            
root:
'userList'
        
});

  

 

三:接着我们来看一下整个window弹出窗中,左边treePanel的绑定的事件:

 

click:function(node){
                                                
if
(node.id!=
'root'
){
                                                    
userSelectStore.baseParams={
                                                        
id:node.id
                                                    
};
                                                    
userSelectStore.load();
                                                
}
                                           
}

  

 

通过 click事件,我们可以根据树节点的 id去加载 itemselector组件左边,可选用户的数据.

四:最后,我们在做搜索的时候:

 

xtype:
'button'
,
                                           
text:
'查询'
,
                                           
iconCls:
'findItem'
,
                                           
handler: function(){
                                               
var un= Ext.getCmp(
'userName'
).getValue();
                                               
userSelectStore.baseParams={
                                                   
name:un
                                               
};
                                               
userSelectStore.load();
                                           
}

  

 

我们是把输入框input中的值作为itemselector左边可选用户的数据加载的参数,去加载可选用户。

五:最后说一下itemselector这个组件,在表单中是通过name:'userIds',把多个的id的字符串传给java后台的,处理时候,只要切割逗号的字符串,就行了。这个组件的js目前只封装好了,传valueField的值过去,

如果想要显示值是displayField,要在源码中自己仿照getValue()方法写获得displayField的方法。

posted on
2013-04-25 09:42 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/archive/2013/04/25/3041738.html

你可能感兴趣的文章
MySql学习14-----数据备份和恢复
查看>>
页面小标签
查看>>
卷积分
查看>>
Asp.Net MVC Filter权限过滤使用说明
查看>>
一次群体code review
查看>>
python-虚拟环境搭建
查看>>
How does exercise keep your brain young?
查看>>
[Linux] 添加环境变量
查看>>
postgresql逻辑结构--表空间(四)
查看>>
rsync备份服务器搭建学习笔记
查看>>
Python中matplotlib模块解析
查看>>
ORA-14551: 无法在查询中执行 DML 操作 .
查看>>
数据结构--栈的应用(表达式求值 nyoj 35)
查看>>
注解:大话AOP与Android的爱恨情仇
查看>>
VB调用WebService(SOA2.0接口)(直接Post方式)并解析返回的XML
查看>>
Linux内存管理1---内存寻址
查看>>
java线程详解(三)
查看>>
9.17模拟赛2.0
查看>>
洛谷 P3225 [HNOI2012]矿场搭建
查看>>
orcad找不到dll
查看>>