extjs the editor in the Select combo

{
                    text: '办理人员',
                    width: 480,
                    align: 'center',
                    dataIndex: 'userName',
                    editor: {
                        xtype: 'combo',
                        editable: false,
                        multiSelect: true,
                        name: 'userName',
                        reference: 'userName',
                        store: {
                            type: 'usersourcestore',
                            id: 'usersource-store',
                            autoLoad: true
                        },
                        listeners: {
                            select: function (combo, record, eOpts) {
                                var UserSourceStore = Ext.create('JsApp.store.currency.UserSourceStore');
                                if (me.selectValues.length == UserSourceStore.data.length) {
                                    combo.setValue(me.selectValues);
                                }
                                else if (me.selectValues.length == 0) {
                                    combo.setValue('');
                                }
                                else if (record.length == UserSourceStore.data.length - 1) {
                                    combo.setValue(me.selectValues);
                                }
                            }
                        },
                        listConfig: {
                            itemTpl: Ext.create('Ext.XTemplate', '<input type=checkbox>{[values.userName]}'),
                            //设置默认值
                            onItemSelect: function (record) {
                                //if (record.data.userUid != "all") {
                                var node = this.getNode(record);
                                if (node) {
                                    Ext.fly(node).addCls(this.selectedItemCls);
                                    var checkboxs = node.getElementsByTagName("input");
                                    if (checkboxs != null)
                                        var checkbox = checkboxs[0];
                                    checkbox.checked = true;
                                }
                                //}

                            },

                            the Listeners: {
                                itemClick: function (View, Record, Item, index, E, eOpts) {
                                    var AllCheckBox Factory = {// userName full box and the userUid be consistent with the data source (Store) in the
                                        userName: "Select" ,
                                        userUid: "All"
                                    };
                                    var newValues = [];
                                    IF (item.innerText == AllCheckBox.userName) {
                                        var checkboxs = item.getElementsByTagName ( "INPUT");
                                        IF (! checkboxs = null) {
                                            var isSelected = checkboxs[0].checked;
                                            if (isSelected && item.innerText == AllCheckBox.userName) {
                                                Ext.each(record.store.data.items, function (item) {
                                                    //if (item.data.userUid != "all") {
                                                    item.checked = true;
                                                    newValues.push(item.data.userUid);
                                                    // }
                                                });
                                            }
                                            else {
                                                Ext.each(this.getNodes(record.store.data.items), function (item) {
                                                    var nochecked = item.getElementsByTagName("input");
                                                    nochecked[0].checked = false;
                                                });
                                            }
                                        }
                                        me.selectValues = newValues;
                                    }
                                    else {
                                        var isSelected = view.isSelected(item);
                                        var checkboxs = item.getElementsByTagName("input");
                                        if (checkboxs != null) {
                                            var checkbox = checkboxs[0];
                                            if (!isSelected) {
                                                newValues.push(record.data.userUid);
                                                checkbox.checked = true;
                                            } else {
                                                Ext.each(record.store.data.items, function (item) {
                                                    if (item.data.userUid == "all") {
                                                        view.all.elements[0].getElementsByTagName("input")[0].checked = false;
                                                    }
                                                    if (item.data.userUid != "all" && record.data.userUid != item.data.userUid) {
                                                        newValues.push(item.data.userUid);
                                                    }
                                                });
                                                checkbox.checked = false;
                                            }
                                        }
                                        me.selectValues = newValues;
                                    }

                                }
                            }
                        },
                        margin: '0 5 0 0',
                        displayField: 'userName',
                        valueField: 'userUid'
                    },
                    listeners: {
                        click: function (view, rowIndex, colIndex, item, e, record, row) {
                            var value = record.data.userName;
                            var UserSourceStore = Ext.create('JsApp.store.currency.UserSourceStore');
                            if (value != null && value != "" && !Array.isArray(value)) {
                                value = record.data.userName.split(',');
                                record.data.userName = new Array(value.length);
                                for (var i = 0; i < value.length; i++) {
                                    var index = UserSourceStore.find('userName', value[i]);
                                    if (index != -1) {
                                        record.data.userName[i] = UserSourceStore.getAt(index).data.userUid;
                                    }
                                }
                                //if (value.length == UserSourceStore.data.length - 1) {
                                //    var index = UserSourceStore.find('userName', '全选');
                                //    if (index != -1) {
                                //        record.data.userName[record.data.userName.length] = UserSourceStore.getAt(index).data.userUid;
                                //    }
                                //}
                            }
                        }
                    },
                    renderer: function (value, metadata, record) {
                        var userName = "";
                        var userUid = "";
                        var isName = 0;
                        if (!Array.isArray(value)) {
                            value = value.split(',');
                            isName = 1;
                        }
                        for (var i = 0; i < value.length; i++) {
                            var UserSourceStore = Ext.create('JsApp.store.currency.UserSourceStore');
                            var index = -1;
                            if (isName) {
                                index = UserSourceStore.find('userName', value[i]);
                            }
                            else {
                                index = UserSourceStore.find('userUid', value[i]);
                            }
                            if (index != -1) {
                                userUid += UserSourceStore.getAt(index).data.userUid + ",";
                                userName += UserSourceStore.getAt(index).data.userName + ",";
                            }
                            else {
                                userName += record.get('userName') + ",";
                            }
                        }
                        userUid = userUid.substring(0, userUid.length - 1);
                        userName = userName.substring(0, userName.length - 1);
                        record.data.userUid = userUid;
                        record.data.userName = userName;
                        return userName;
                    }
                }

Guess you like

Origin blog.csdn.net/qq_20426717/article/details/88929003