Мой обходной путь:
Во-первых, получить данные, используя функцию, чтобы сосредоточить все создания вещи:
function addGrid (title, data) {
var storeColumns = getStoreColumnsFromJson(data[0]);
var gridColumns = getGridColumnsFromJson(data[0]);
var store = createStore(data, storeColumns);
var grid = createGrid(title, store, gridColumns);
myContainerWindowPanel.add(grid);
}
Теперь мне нужно взять выборку данных (первая строка), чтобы получить имена столбцов от данных JSON до сети и ее магазина:
function getStoreColumnsFromJson (obj) {
var keys = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
keys.push({name : key});
}
}
return keys;
}
function getGridColumnsFromJson (obj) {
var keys = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
keys.push({text: key, dataIndex: key});
}
}
return keys;
}
Теперь я создам сетку и магазин. Я не буду использовать модель просто потому, что это сработало без нее. Если у кого-то есть сильный совет по созданию модели, я буду признателен.
function createGrid (title, store, columnNames) {
var dummyGrid = Ext.create('Ext.grid.Panel', {
border: false,
title : title,
store : store,
frame: false,
margin: "10 0 0 0",
flex:1,
loadMask: true,
columns:columnNames,
autoHeight:true
});
return dummyGrid;
}
function createStore (storeData, columns) {
var arrData = [];
var theData = storeData;
if (!$.isArray(storeData)) {
arrData.push(storeData);
theData = arrData;
}
var store = Ext.create('Ext.data.Store',{
fields: columns,
autoLoad: true,
data: theData
});
return store;
}
Я не думаю, что это хорошая идея ... Мне нужна сетка, чтобы показать данные в виде сетки! Не хотите бросать все мои данные в столбец. –