Заполнить несколько ComboBox одним запросом!
Продолжение
Как это сделать: ТЫЦЬ для 2-го Экса. Я запнулся на формате передаваемых данных с сервера для: 1. comboBoxStore = new Ext.data.JsonStore({ fields: [...], proxy: { type: 'ajax', url: "Handlers/ХХХ.ashx", reader: { type: "json", root: "Table1" } } }); comboBoxStore.load(); Формат данных, только такой: Код:
{'success':true, 'total':1, 'Table1': [{"Table1ID":"1","Table1Name":"шт","Table1Desc":"Одна штука"}]} 2) dataStore - первое хранилище digitStore - второе хранилище ........ comboStoreRequest = Ext.Ajax.request({ url: "Handlers/ХХХ.ashx", success: function(result){ //Преобразуем JSON-ответ в объект comboStore = Ext.util.JSON.decode(result.responseText); //Загрузим массив данных первое хранилище dataStore.loadData(comboStore.data); //Загрузим массив данных во второе хранилище digitStore.loadData(comboStore.digit); }, //Метод method: 'POST', //Параметры вызова params: {act : 'get_data'} }); Формат данных, только такой: Код:
[["1","шт","Одна штука"],[2, "шт2", "Одна штука2"],[3, ..., ...], ...] Может кто пробовал ??? ASP.NET: Для первого варианта делаю так: List<object> list = new List<object>(); var data = new { Table1ID = dr[0].ToString(), Table1Name = dr[1].ToString(), Table1Desc = dr[2].ToString() }; JavaScriptSerializer serializer = new JavaScriptSerializer(); output = "{" + string.Format("'success':true, 'total':" + RecCount + ", 'Table1': [{0}]", string.Join(",", list.ConvertAll<string>(serializer.Serialize).ToArray())) + "}"; И как во втором случае в ASP.NET сформировать такой массив данных ??? |
Цитата:
Код:
var |
Цитата:
mydata = [ [1, 'John', 'Smith'], [2, 'Fred', 'Jones'] ]; store.loadData(mydata, false); Для формирования массива arrayList должен подойти вроде. ArrayList a; ArrayList b = new ArrayList(); // заполнение a = new ArrayList(); a.Add(1); a.Add("John"); a.Add("Smith"); b.Add(a); |
Цитата:
Цитата:
|
Ok, спасибо за ответы, будем пробовать )))
П.С. А, всё так, кто-то пробовал уже, одним "запросом" несколько Комбов заполнять данными ??? |
Вложений: 1
У меня есть решение своей задачи, по логике она должна удовлетворить и ваши потребности.
Однако принцип работы в отличии от предложенного в вашем примере, совершенно иной. По условию задачи у меня есть форма, внутри формы есть гриды и dataview и мне их надо как то заполнять. Решение реализовал на основании ассоциаций, Суть в том что,главная модель имеет ассоциации hasMone с другими моделями. Ассоциированные hasmony модели, как известно хранятся в сторе, вот этот сторе я и передаю гриду. В примере заполняются два грида, но я могу сделать 50 ассоциаций и заполнить 50 гридов, или комбобоксов, или чёнидь ещё. И всё это собственно произойдёт одним запросом. С сохранением кстатии тоже нет проблем, я его так же могу производить одним запросом . Вот Упрощённая демка, на которой я ставил эксперементы. Здесь к примеру я заполнил два грида. Рабочий пример во вложении. Ext.require([ 'Ext.data.*', 'Ext.panel.Panel', ]); Ext.onReady(function() { //модель для первого грида Ext.define('Group2', { extend: 'Ext.data.Model', fields: ['id', 'parent_id', 'name'], }); //модель для второго грида Ext.define('Group3', { extend: 'Ext.data.Model', fields: ['id', 'parent_id', 'name'], }); // главная модель, Ext.define('Group', { extend: 'Ext.data.Model', // у меня здесь данные для полей в форме, но в данном примере они не нужны fields: ['id', 'parent_id', 'name'], proxy: { type: 'ajax', url: 'data.json', reader: { type: 'json', root: 'groups' } }, associations: [{ //ассоциация сформирует сторе для 1го грида type: 'hasMany', model: 'Group2', primaryKey: 'id', foreignKey: 'parent_id', associationKey: 'child_groups' // read child data from child_groups },{ //ассоциация сформирует сторе для 2го грида type: 'hasMany', model: 'Group3', primaryKey: 'id', foreignKey: 'parent_id', associationKey: 'child_groups2' // read child data from child_groups }] }); //=======================================================================// Group.load(2,{ success: function(group){ //выведем всю модель в консоль, чтобы её можно было поизучать console.log(group); group.group2s().each(function(rec){ console.log(rec.get('name')); }); Ext.create('Ext.grid.Panel', { title: 'Users', store: group.group2sStore, columns: [ { header: 'id', dataIndex: 'id' }, { header: 'name', dataIndex: 'name' } ], height: 200, width: 400, renderTo: Ext.getBody() }); Ext.create('Ext.grid.Panel', { title: 'Users', store: group.group3sStore, columns: [ { header: 'id', dataIndex: 'id' }, { header: 'name', dataIndex: 'name' } ], height: 200, width: 400, renderTo: Ext.getBody() }); } }); }); //образец данных { "success":true, "groups": { "id": 10, "parent_id": 100, "name": "Main Group", "parent_group": { "id": 100, "parent_id": null, "name": "Parent Group" }, "child_groups": [ { "id": 2, "parent_id": 10, "name": "Child Group 1" },{ "id": 3, "parent_id": 10, "name": "Child Group 2" },{ "id": 4, "parent_id": 10, "name": "Child Group 3" } ], "child_groups2": [ { "id": 2, "parent_id": 10, "name": "Child Group 111" },{ "id": 3, "parent_id": 10, "name": "Child Group 2222" },{ "id": 4, "parent_id": 10, "name": "Child Group 3333" } ] } } |
DjDiablo,
О !!! Класс ))) Большое спасибо, будем пробовать !!! |
Часовой пояс GMT +3, время: 04:40. |