天天看點

Extjs-動态拼裝Store

動态拼裝ArrayStore

1:定義Store

var result = [];//資料
    var fieldStr = [];//列名
    var store = Ext.create('Ext.data.ArrayStore', {
                fields : fieldStr,
                data : result
            });
           

2:在function()中拼接data和field

function getData() {
result = [];
fieldStr = [];
var fp = queryForm;
        var queryParam = {};
        var date = fp.getForm().getValues()["date"];
        queryParam["date"] = date;
        var n = fp.getForm().getValues()["n"];
        queryParam["n"] = n;
        Ext.Ajax.request({
            url : WebPath + '/baobiao/findDuoKai',
            params : queryParam,
            method : "POST",
            success : function(response) {
                // 轉換資料反回值為對象
                var datas = Ext.decode(response.responseText);
                // 擷取 開始日期 和 結束日期
                var begin = CTU.Utils.parseDate(queryParam['date'][]);
                var end = CTU.Utils.parseDate(queryParam['date'][]);
fieldStr.push('name');
for (var i = begin; i <= end; i = i +  * ) {
fieldStr.push(Ext.Date.format(new Date(i), 'Y-m-d'));
}
// 轉換資料反回值為對象
var names = [];
                Ext.Array.each(datas["rows"], function(item, b) {
                            var find = ;
                            for (var k = ; k < names.length; k++) {
                                if (names[k] == item['name']) {
                                    find = ;
                                }
                            }
                            if (find == ) {
                                names.push(item['name']);
                            }
                        });
Ext.Array.each(names, function(name, b) {

                            var result_obj = [];

                            result_obj.push(name);
                            for (var i = begin; i <= end; i = i +  * ) {
                                var isFind = ;
                                Ext.Array.each(datas["rows"],
                                        function(item, b) {
                                            if (name == item['name']
                                                    && i == CTU.Utils
                                                            .parseDate(item['date'])) {

                                                result_obj.push(item['count']);
                                                isFind = ;
                                            }
                                        });
                                if (isFind == ) {

                                    result_obj.push();
                                }
                            }

                            result.push(result_obj);
                        });
                store = Ext.create('Ext.data.ArrayStore', {
                            fields : fieldStr,
                            data : result
                        });
                store.removeAll();
                store.loadData(result);
            }
        });
    }   
           

Extjs中建立Store資料源的方式

1.數組格式的資料:data隻能是數組!——不能用JsonStore,否則報錯!

var arrStore = new Ext.data.SimpleStore({
    data:[
        /*{id:,name:"zs",age:},
        {id:,name:"ls",age:},
        {id:,name:"ww",age:}*/注釋掉的是json格式的,隻能用JsonStore
        [,"zs",],
        [,"ls",],
        [,"ww",]
    ],
    fields:["id","name","age"]
});
           

2.JSON格式的資料:data隻能是json!——不能用SimpleStore,也不能用父類Store,否則報錯!

var jsonStore = new Ext.data.JsonStore({
    data:[
        {id:,name:"zs",age:},
        {id:,name:"ls",age:},
        {id:,name:"ww",age:}
    ],
    fields:["id","name","age"]
});
           

注意事項:

1.文本框指派方式:

1

getForm().findField(“”).setValue(“”)

2.在Store中取record:

(1).取總記錄records:store.data (注,此時若要取某下标記錄,還得用records.get(i))

(2).取指定下标的record:store.getAt(i) (注:不是get(i)或者getById(i))

2.在record中取值方式:

(1).record.data.name

(2).record.data[“name”]

(3).record.get(“name”) (注意:這裡比前兩種少了data)

分析:record是一個數組,是以取值要用get,而record.data已經是一個對象了,是以可以直接用“.”

詳情請參照:http://blog.csdn.net/liu78778/article/details/3942990