Ext.data-GroupingStore/JsonStore/SimpleStore
Ext.data.GroupingStore
继承自Ext.data.Store,为Store增加了分组功能.其它用法与Store一致,惟一需要注意的是使用GroupingStore时必须指定sortInfo信息
增加了配置属性
groupField : String//用于分组的字段
groupOnSort : Boolean//如果为真,将依排序字段重新分组,默认为假
remoteGroup : Boolean//远程排序
当然也会多一个group方法
groupBy( String field, [Boolean forceRegroup] ) : void
顾名思义都是重新排序用的
下面是个简单的示例
  
 var arr=[ [1, '本', '拉登'], [2, '笨', '拉登'],[3, '笨', '拉灯'] ];
var arr=[ [1, '本', '拉登'], [2, '笨', '拉登'],[3, '笨', '拉灯'] ];
 var reader = new Ext.data.ArrayReader(
    var reader = new Ext.data.ArrayReader(
 {id: 0},
   {id: 0},
 [
   [
 {name: 'name', mapping: 1},
    {name: 'name', mapping: 1},        
 {name: 'occupation', mapping: 2}
    {name: 'occupation', mapping: 2}   
 ]);
    ]);
 
   
 var store=new Ext.data.GroupingStore({
    var store=new Ext.data.GroupingStore({
 reader:reader,
      reader:reader,
 groupField:'name',
      groupField:'name',
 groupOnSort:true,
      groupOnSort:true,
 sortInfo:{field: 'occupation', direction: "ASC"} //使用GroupingStore时必须指定sortInfo信息
      sortInfo:{field: 'occupation', direction: "ASC"} //使用GroupingStore时必须指定sortInfo信息
 });
   });
 store.loadData(arr);
   store.loadData(arr);
 
  
 //GridPanel以后会讨论,这儿使用它是为了直观的表现GroupingStore
   //GridPanel以后会讨论,这儿使用它是为了直观的表现GroupingStore
 var grid = new Ext.grid.GridPanel({
   var grid = new Ext.grid.GridPanel({
 ds: store,
    ds: store,
 columns: [
    columns: [
 {header: "name", width: 20, sortable: true,dataIndex: 'name'},
        {header: "name", width: 20, sortable: true,dataIndex: 'name'},
 {header: "occupation", width: 20,sortable: true, dataIndex: 'occupation'}
        {header: "occupation", width: 20,sortable: true, dataIndex: 'occupation'}
 ],
    ],
 view: new Ext.grid.GroupingView({
    view: new Ext.grid.GroupingView({
 forceFit:true,
        forceFit:true,
 groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
        groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
 }),
    }),
 frame:true,
    frame:true,
 width: 700,
    width: 700,
 height: 450,
    height: 450,
 collapsible: true,
    collapsible: true,
 animCollapse: false,
    animCollapse: false,
 title: 'Grouping Example',
    title: 'Grouping Example',
 renderTo: 'Div_GridPanel'
    renderTo: 'Div_GridPanel'
 });
    });
 
Ext.data.JsonStore
也是Store子类,目标是更方便的使用json对象做数据源
构造中多了fields,root,用法如下例所示
 /*
/*
 这是使用远程对象,返回内容与下面本地对象的data一致
这是使用远程对象,返回内容与下面本地对象的data一致
 var store=new Ext.data.JsonStore({
var store=new Ext.data.JsonStore({
 url:'jsoncallback.js',
        url:'jsoncallback.js',
 root:'rows',
        root:'rows',
 fields:['id','name','occupation']
        fields:['id','name','occupation']
 });
    });
 store.load();
    store.load();
 */
*/
 var store=new Ext.data.JsonStore({
    var store=new Ext.data.JsonStore({
 data:{ 'results': 2, 'rows': [
        data:{ 'results': 2, 'rows': [
 { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
        { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
 { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }
        { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }
 ]},
        ]},
 autoLoad:true,
    autoLoad:true,
 root:'rows',
    root:'rows',
 fields:['id','name','occupation']
    fields:['id','name','occupation']
 })
    })

 //目前请先略过gridpanel,以后再说
    //目前请先略过gridpanel,以后再说
 var grid = new Ext.grid.GridPanel({
    var grid = new Ext.grid.GridPanel({
 ds: store,
    ds: store,
 columns: [
    columns: [
 {header: "id", width: 200, sortable: true,dataIndex: 'id'},
        {header: "id", width: 200, sortable: true,dataIndex: 'id'},
 {header: "name", width: 200, sortable: true,dataIndex: 'name'},
        {header: "name", width: 200, sortable: true,dataIndex: 'name'},
 {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
        {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
 ],height:350,
    ],height:350,
 width:620,
      width:620,
 title:'Array Grid',
      title:'Array Grid',
 renderTo: 'Div_GridPanel'
      renderTo: 'Div_GridPanel'
 });
    });
 
Ext.data.SimpleStore
从数组对象更方便的创建Store对象,
例
 var store=new Ext.data.JsonStore({
var store=new Ext.data.JsonStore({
 data:[
        data:[
 [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist']
           [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist']
 ],
            ],
 autoLoad:true,
        autoLoad:true,
 fields:[{name: 'name', mapping: 1},{name:'occupation',mapping:2}]
        fields:[{name: 'name', mapping: 1},{name:'occupation',mapping:2}]
 })
    })
 var grid = new Ext.grid.GridPanel({
    var grid = new Ext.grid.GridPanel({
 ds: store,
    ds: store,
 columns: [
    columns: [
 {header: "name", width: 200, sortable: true,dataIndex: 'name'},
        {header: "name", width: 200, sortable: true,dataIndex: 'name'},
 {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
        {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
 ],height:350,
    ],height:350,
 width:620,
      width:620,
 renderTo: 'Div_GridPanel'
      renderTo: 'Div_GridPanel'
 });
    });
继承自Ext.data.Store,为Store增加了分组功能.其它用法与Store一致,惟一需要注意的是使用GroupingStore时必须指定sortInfo信息
增加了配置属性
groupField : String//用于分组的字段
groupOnSort : Boolean//如果为真,将依排序字段重新分组,默认为假
remoteGroup : Boolean//远程排序
当然也会多一个group方法
groupBy( String field, [Boolean forceRegroup] ) : void
顾名思义都是重新排序用的
下面是个简单的示例
 var arr=[ [1, '本', '拉登'], [2, '笨', '拉登'],[3, '笨', '拉灯'] ];
var arr=[ [1, '本', '拉登'], [2, '笨', '拉登'],[3, '笨', '拉灯'] ]; var reader = new Ext.data.ArrayReader(
    var reader = new Ext.data.ArrayReader( {id: 0},
   {id: 0}, [
   [ {name: 'name', mapping: 1},
    {name: 'name', mapping: 1},         {name: 'occupation', mapping: 2}
    {name: 'occupation', mapping: 2}    ]);
    ]); 
    var store=new Ext.data.GroupingStore({
    var store=new Ext.data.GroupingStore({ reader:reader,
      reader:reader, groupField:'name',
      groupField:'name', groupOnSort:true,
      groupOnSort:true, sortInfo:{field: 'occupation', direction: "ASC"} //使用GroupingStore时必须指定sortInfo信息
      sortInfo:{field: 'occupation', direction: "ASC"} //使用GroupingStore时必须指定sortInfo信息 });
   }); store.loadData(arr);
   store.loadData(arr); 
   //GridPanel以后会讨论,这儿使用它是为了直观的表现GroupingStore
   //GridPanel以后会讨论,这儿使用它是为了直观的表现GroupingStore var grid = new Ext.grid.GridPanel({
   var grid = new Ext.grid.GridPanel({ ds: store,
    ds: store, columns: [
    columns: [ {header: "name", width: 20, sortable: true,dataIndex: 'name'},
        {header: "name", width: 20, sortable: true,dataIndex: 'name'}, {header: "occupation", width: 20,sortable: true, dataIndex: 'occupation'}
        {header: "occupation", width: 20,sortable: true, dataIndex: 'occupation'} ],
    ], view: new Ext.grid.GroupingView({
    view: new Ext.grid.GroupingView({ forceFit:true,
        forceFit:true, groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
        groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})' }),
    }), frame:true,
    frame:true, width: 700,
    width: 700, height: 450,
    height: 450, collapsible: true,
    collapsible: true, animCollapse: false,
    animCollapse: false, title: 'Grouping Example',
    title: 'Grouping Example', renderTo: 'Div_GridPanel'
    renderTo: 'Div_GridPanel' });
    });
Ext.data.JsonStore
也是Store子类,目标是更方便的使用json对象做数据源
构造中多了fields,root,用法如下例所示
 /*
/* 这是使用远程对象,返回内容与下面本地对象的data一致
这是使用远程对象,返回内容与下面本地对象的data一致 var store=new Ext.data.JsonStore({
var store=new Ext.data.JsonStore({ url:'jsoncallback.js',
        url:'jsoncallback.js', root:'rows',
        root:'rows', fields:['id','name','occupation']
        fields:['id','name','occupation'] });
    }); store.load();
    store.load(); */
*/ var store=new Ext.data.JsonStore({
    var store=new Ext.data.JsonStore({ data:{ 'results': 2, 'rows': [
        data:{ 'results': 2, 'rows': [ { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
        { 'id': 1, 'name': 'Bill', occupation: 'Gardener' }, { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }
        { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]},
        ]}, autoLoad:true,
    autoLoad:true, root:'rows',
    root:'rows', fields:['id','name','occupation']
    fields:['id','name','occupation'] })
    })
 //目前请先略过gridpanel,以后再说
    //目前请先略过gridpanel,以后再说 var grid = new Ext.grid.GridPanel({
    var grid = new Ext.grid.GridPanel({ ds: store,
    ds: store, columns: [
    columns: [ {header: "id", width: 200, sortable: true,dataIndex: 'id'},
        {header: "id", width: 200, sortable: true,dataIndex: 'id'}, {header: "name", width: 200, sortable: true,dataIndex: 'name'},
        {header: "name", width: 200, sortable: true,dataIndex: 'name'}, {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
        {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'} ],height:350,
    ],height:350, width:620,
      width:620, title:'Array Grid',
      title:'Array Grid', renderTo: 'Div_GridPanel'
      renderTo: 'Div_GridPanel' });
    });
Ext.data.SimpleStore
从数组对象更方便的创建Store对象,
例
 var store=new Ext.data.JsonStore({
var store=new Ext.data.JsonStore({ data:[
        data:[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist']
           [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ],
            ], autoLoad:true,
        autoLoad:true, fields:[{name: 'name', mapping: 1},{name:'occupation',mapping:2}]
        fields:[{name: 'name', mapping: 1},{name:'occupation',mapping:2}] })
    }) var grid = new Ext.grid.GridPanel({
    var grid = new Ext.grid.GridPanel({ ds: store,
    ds: store, columns: [
    columns: [ {header: "name", width: 200, sortable: true,dataIndex: 'name'},
        {header: "name", width: 200, sortable: true,dataIndex: 'name'}, {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'}
        {header: "occupation", width: 200,sortable: true, dataIndex: 'occupation'} ],height:350,
    ],height:350, width:620,
      width:620, renderTo: 'Div_GridPanel'
      renderTo: 'Div_GridPanel' });
    }); 
                    
                     
                    
                 
                    
                
 
 
    sortInfo:
      sortInfo: 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号