当前位置: 首页 > 工具软件 > Combo Select > 使用案例 >

extjs 页面加载时Combo触发select事件

柳鸿博
2023-12-01

var depotStore = new Ext.data.JsonStore({  
            root:'root',  
            url:'json/table_batch_json.jsp',  
            fields:[  
                {name:"HouseCode"},  
                {name:"HouseName"},  
                {name:"GFeedMethd",type:'combo'},
                {name:"STDate",type:'date'},
                {name:"EDDate",type:'date'},
                {name:"EDDate2",type:'date'},
                {name:"action"}
            ],
            //pruneModifiedRecords:true,  //True表示为,每次Store加载后,清除所有修改过的记录信息;record被移除时也会这样(默认为false)。
            autoLoad:true
        });
        
        var colM = new Ext.grid.ColumnModel([
          { header:"栋编号",
            dataIndex:"HouseCode",
            sortable:true,
            align:'center',
            width:70
          },
          { header:"栋名称",
            dataIndex:"HouseName",
            sortable:true,
            align:'center',
            width:70
          },
          { header:"饲养方法",
            dataIndex:"GFeedMethd",
            sortable:true,
            align:'center',
            width:70,
            renderer:function(GFeedMethd) {  
                        var idx = methodStore.find("key", GFeedMethd);  
                        return (idx != "-1") ? methodStore.getAt(idx).data.value : '';  
                    },
            editor : new Ext.form.ComboBox({  
                editable : false,  
                displayField:'value',
                valueField:'key',
                id:'GFeedMethdeditor',
                mode: 'remote',  
                triggerAction: 'all',  
                store:methodStore
            })
          },
          { header:"入舍日期",
            dataIndex:"STDate",
            sortabel:false,
            align:'center',
            renderer:Ext.util.Format.dateRenderer('Y-m-d'),
            editor:new Ext.form.DateField()
          },
          { header:"第一次出栏日期",
            dataIndex:"EDDate",
            sortabel:false,
            align:'center',
            renderer:Ext.util.Format.dateRenderer('Y-m-d'),
            editor:new Ext.form.DateField()
          },
          { header:"第二次出栏日期",
            dataIndex:"EDDate2",
            sortable:true,
            align:'center',
            renderer:Ext.util.Format.dateRenderer('Y-m-d'),
            editor:new Ext.form.DateField()
          },
          { header:"操作",
            xtype:"actioncolumn",
            align:'center',
            width:70,
            items:[{
                icon:'/resource/images/icon/fam/delete.gif',
                handler:function(grid,rowIndex,colIndex){
                    var select = grid.getStore().getAt(rowIndex);
                    grid.getStore().remove(select);
                }
            }]
          }
        ]);   

var baseForm = new Ext.form.FormPanel( {
            renderTo:'tasktype',
            height: 460,
            width: 580,
            frame : true,
            layout:'absolute',
            bodyStyle : 'padding:5px 5px;background:white',
            waitMsgTarget : true,
            defaultType : 'textfield',
            items : [{

                x:90,
                y:130,
                xtype:'combo',
                fieldLabel: "类型",
                width:130,
                name:'Type',
                id:'Type',
                triggerAction:"all",  
                store:typeStore,  
                editable:false,  
                displayField:"value",  
                valueField:"key",  
                mode:"remote",
                listeners : {
                    select : function(combo, record, index) {    
                        if(combo.getValue()=="DC"){
                            Ext.getCmp("datalist").hide();
                            paneldata.hide();
                            Ext.getCmp("TaskDocCode").enable();
                            Ext.getCmp("TaskDocCode").allowBlank=true;
                        }else if(combo.getValue()=="SI"||combo.getValue()=="UI"){
                            Ext.getCmp("datalist").show();
                            paneldata.show();
                            if(paneldata.getStore().getCount()<1){
                                var newRecord = new myrecord({
                                    DataName:'',  
                                    Mandatory:'',  
                                    action:''
                                });
                                paneldata.stopEditing();
                                paneldata.getStore().insert(0,newRecord);
                                paneldata.startEditing(0,0);
                            };
                            Ext.getCmp("TaskDocCode").disable();
                        }else if(combo.getValue()=="IN"){
                            Ext.getCmp("datalist").hide();
                            paneldata.hide();
                            Ext.getCmp("TaskDocCode").disable();
                        }
                    }
                }

            },paneldata = new Ext.grid.EditorGridPanel({
                x:10,
                y:255,
                id:'editordepot',
                height:120,
                width:580,
                cm:colM,
                columnLines:true,
                enableColumnResize:false,
                enableColumnMove:false,
                store:depotStore,
                clicksToEdit:2,
                viewConfig: {
                  markDirty: false
                }
            })],

           tbar:[
                {text:'保存',id:'save',iconCls:'save',handler:saveRecord},"-",
                {text:'删除',id:'delete',iconCls:'del',handler:deleteRecord}
            ]
        });


       baseForm.getForm().load({
                url: '/module/pc/sys/base/record_json.jsp?table='+table+'&key='+key+'&id='+id,
                success:function(form, action){
                    var combo = Ext.getCmp("Type");
                    var uid = combo.getValue();
                    combo.fireEvent('select',combo,combo.getStore().getById(uid));
                },
                failure: function(form, action) {
                    Ext.Msg.alert("Load failed", "失败");
                }
            });


注解:

1.combo.getStore().getById(uid)只有在store中设置了属性id才能够获取到

2.fireEvent('select',combo,combo.getStore().getById(uid))   第一个是控件本身,第二个就是record,也就是store中的一条记录。那么,通过store中的id来返回对应的record就需要getById方法


 类似资料: