Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2012, 23:56
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Заполнить несколько 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 сформировать такой массив данных ???
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2012, 10:38
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от potkin Посмотреть сообщение
Формат данных, только такой:
Код:
[["1","шт","Одна штука"],[2, "шт2", "Одна штука2"],[3, ..., ...], ...]
Если я правильно понял ...
Не правильно
Код:
var
	store = Ext.create("Ext.data.Store", {
		fields: [
			{ name: "id", type: "int" },
			"name"
		]
	}),
	data = [
		{ id: 1, name: "Record# 1" },
		{ id: 2, name: "Record# 2" },
		{ id: 3, name: "Record# 3" },
		{ id: 4, name: "Record# 4" }
	];

store.loadData(data);
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2012, 18:30
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Цитата:
Не правильно
в демке сделано так.
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);
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 02.07.2012 в 20:54.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2012, 21:52
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от DjDiablo Посмотреть сообщение
в демке сделано так.
И шо?
Сообщение от DjDiablo Посмотреть сообщение
Для формирования массива arrayList должен подойти вроде
Насколько я понял у ТС проблема с выбором подходящего контейнера для последующей сериализации его в "обязательный" [ [ ], [ ], [ ] ]
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2012, 16:27
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Ok, спасибо за ответы, будем пробовать )))

П.С. А, всё так, кто-то пробовал уже, одним "запросом" несколько Комбов заполнять данными ???
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2012, 21:39
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

У меня есть решение своей задачи, по логике она должна удовлетворить и ваши потребности.

Однако принцип работы в отличии от предложенного в вашем примере, совершенно иной.
По условию задачи у меня есть форма, внутри формы есть гриды и 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"
	        }
	]
    }
}
Вложения:
Тип файла: zip www.zip (1.2 Кб, 11 просмотров)
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 05.07.2012 в 22:15.
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2012, 22:57
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

DjDiablo,
О !!! Класс )))
Большое спасибо, будем пробовать !!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько форм с одним классом + submit klev2004 Общие вопросы Javascript 8 09.07.2012 15:41
Выборка "нескольких данных" одним запросом. potkin ExtJS 6 23.05.2012 17:17
Несколько селектов с одним содержанием Andres Events/DOM/Window 1 15.06.2011 22:26