EXTJS之Store
据目前所知:Store至少分为两类,一个是SimpleStore,另一个是JsonStore。
1,用在gridPanel中常使用SimpleStore
2,填充表单中的下拉菜单(combo),常用JsonStore。
(1)简单JsonStore
批注:当时静态数据时,fields可以是['id','name','sex'],
如果是通过url动态获取数据是,必须是fields:[{name:'id'},{name:'suit'},{name:'type'}]
(2)通过url获取数据
例如,
注:先后顺序不能颠倒。先JsonStore,后ComboBox。
(3)高级用法对比
JS中encodeURIComponent函数用php解码
在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv('UTF-8','gb2312',$q);就可以得到你需要的字串了
1,用在gridPanel中常使用SimpleStore
- var store_stat = new Ext.data.SimpleStore({
- fields:[
- {name:'date',mapping:'date'}
- ,{name:'model',mapping:'model'}
- ,{name:'per',mapping:'per'}
- ]
- });
2,填充表单中的下拉菜单(combo),常用JsonStore。
(1)简单JsonStore
- var data=[{'id':1,'name':'小王','sex':'男'},
- {'id':2,'name':'小李','sex':'男'},
- {'id':3,'name':'小兰','sex':'女'},
- ];
- var store = new Ext.data.JsonStore({
- data:data,
- fields:['id','name','sex']
- });
批注:当时静态数据时,fields可以是['id','name','sex'],
如果是通过url动态获取数据是,必须是fields:[{name:'id'},{name:'suit'},{name:'type'}]
(2)通过url获取数据
例如,
- var store_modellist2 = new Ext.data.JsonStore({
- fields:['model'],
- url:'api/fail.php',
- root:'data',
- baseParams:{action:'get_all_models'}
- });
- store_modellist2.load();
- var combo_model2 = new Ext.form.ComboBox({
- width:100,
- editable:false,
- triggerAction:'all',
- allowBlank:false,
- store:store_modellist2,
- displayField:'model',
- value:"\u8BF7\u9009\u62E9\u673A\u578B",
- allQuery:"", //开启此项后,选择机型时将不再在此获取机型数据
- listeners:{
- 'select' : function(obj, data, index){
- var modelName = obj.getValue();
- if(modelName !== "\u8BF7\u9009\u62E9\u673A\u578B"){
- refresh_fail_chart(modelName);
- }
- }
- }
- //,mode:'local'
- });
注:先后顺序不能颠倒。先JsonStore,后ComboBox。
(3)高级用法对比
- //用法一
- var jsonStore = new Ext.data.JsonStore({
- url: 'api/fail_parts_bydepart.php',
- listeners:{
- 'loadexception' : function(e){
- alert(e.toString());
- }
- },
- fields: [
- {name: 'name'},
- {name: 'flash'},
- {name: 'percent'}
- ]
- });
- jsonStore.load({
- params:{
- 'level' : level,
- 'department' : paras.department,
- 'product': paras.product,
- 'target': is_one,
- 'suit':paras.suit,
- 'model':paras.model,
- 'part':paras.part,
- 'dateStr':dateStr
- }
- });
- //用法二
- var store = {
- 'department' : new Ext.data.JsonStore({
- url: 'api/list_k.php?action=department',
- fields: ['name']}),
- 'product' : new Ext.data.JsonStore({
- url: 'api/list_k.php?action=product',
- fields: ['name']})
- };
- store.product.baseParams = {'department' : encodeURIComponent(data.data.name)};
- store.product.load();
- detailStore.on('beforeload', function() {
- detailStore.baseParams = {
- };
- });
JS中encodeURIComponent函数用php解码
在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv('UTF-8','gb2312',$q);就可以得到你需要的字串了