Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Доступ ко всем записям грида (https://javascript.ru/forum/extjs/14993-dostup-ko-vsem-zapisyam-grida.html)

Костэн 09.02.2011 08:55

Доступ ко всем записям грида
 
Доброго времени суток. Уже перепахал немалое количество сайтов, но нигде в доступной форме не объясняется, как можно сохранить в массив все записи грида и отправить его на сервер. Надеюсь, что на этом форуме найдуться знающие люди :help:

VKS 09.02.2011 10:38

var store = grid.getStore();
var json=[];
store.each(function(store){
	    json += Ext.util.JSON.encode(store.data) + ',';
});
if (json.length > 0) {
	    json = json.substring(0, json.length - 1);
}
//make it an array
json="["+json+"]";


Ну а дальше отправляй на сервер любым удобным тебе способом

Костэн 09.02.2011 11:30

Цитата:

Сообщение от VKS (Сообщение 91664)
var store = grid.getStore();
var json=[];
store.each(function(store){
	    json += Ext.util.JSON.encode(store.data) + ',';
});
if (json.length > 0) {
	    json = json.substring(0, json.length - 1);
}
//make it an array
json="["+json+"]";


Ну а дальше отправляй на сервер любым удобным тебе способом

Большое спасибо за помощь. Скажите, каким образом можно получить доступ к одному полю и сохранить его записи в обычном текстовом виде, а не JSON - формате ?

VKS 09.02.2011 15:15

http://javascript.ru/forum/extjs/128...-iz-store.html

Костэн 09.02.2011 18:20

Цитата:

Сообщение от VKS (Сообщение 91727)

Чтобы не поднимать старых тем - напишу тут.
var recIndex = store.find('id', Id);
var rec = store.getAt(recIndex);

Если я правильно понял, записи из одного поля хранятся в переменной rec. Мне не понятно присутствие второго параметра в функции find. Первый - это наименование поля, из которого я хочу выбрать данные, а вот про второй ничего на ум не приходит. Подскажите, для чего он нужен ?

Костэн 09.02.2011 22:09

Первая версия - в качестве второго параметра функции find должнен быть порядковый номер записи, находящийся в поле, указанном в первом параметре ?

VKS 10.02.2011 11:22

var store = new Ext.data.JsonStore({
	    totalProperty: 'total',
	    root: 'data',
	    url: url,
	    fields: [{name: 'id'}, {name: 'name'}]
	});

// 1й параметр - это имя из набора fields
// 2й параметр - значение из записей store, которое это имя может содержать
var recIndex = store.find('id', 1);
var recIndex = store.find('name', 'Вася');

Костэн 10.02.2011 20:01

Что то не получается. Допустим у моего грида в store есть поле user, в него загружена одна запись - 'Сидоров Сидор Сидорович'. Для тестирования я пишу код:
var str = this.grp.getStore();
var find = str.find('user', 'Сидоров Сидор Сидорович');					
Ext.Msg.alert('', find);

Когда появляется alert, в него не заносится необходимое значение. Может быть надо применить ещё какой - нибудь метод ?
И ещё один вопрос :) - если я не знаю, какие значения будут в выбранном поле, как мне выбрать их всех ? Если есть какая - нибудь литература на эту тему то подскажите пожалуйста :)

VKS 11.02.2011 10:32

var str = this.grp.getStore();
var find = str.find('id', 1);
var rec = str.getAt(find);        
console.log(rec); // rec - это объект, доступ к записи через rec.user

Костэн 15.02.2011 16:09

Цитата:

Сообщение от VKS (Сообщение 91955)
var str = this.grp.getStore();
var find = str.find('id', 1);
var rec = str.getAt(find);        
console.log(rec); // rec - это объект, доступ к записи через rec.user

Ещё раз большое спасибо Вам за помощь :)


Часовой пояс GMT +3, время: 21:24.