動态拼裝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