zoukankan      html  css  js  c++  java
  • ExtJs中OA管理中组织和用户关系左右选择组件的运用

    我完成的效果是:

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

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

      

    var addUsersWin,addUsersFun = function (data) {
                userSelectStore.load();
                userSelectStoreOwn.load();
                addUsersWin = new Ext.Window({
                    title:"添加员工",
                    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,
                                             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:[
                                                    {
                                                        200,
                                                        height:300,
                                                        store:userSelectStore,
                                                        displayField:'name',
                                                        valueField:'id'
                                                    },
                                                    {
                                                        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的方法。

  • 相关阅读:
    字符串排序算法总结
    子字符串匹配常用算法总结
    springboot拦截器
    springboot 双 sqlite 数据源配置
    myeclipse springboot 配置帆软报表
    保存在session中的登陆信息无故丢失的解决办法
    删除多条商品
    前台验证邮箱不能重复
    mybatis两张表关联关系映射
    蚂蚁金服支付平台代码配置
  • 原文地址:https://www.cnblogs.com/shijiewutonghua/p/2989236.html
Copyright © 2011-2022 走看看