#javascript #slickgrid
#javascript #slickgrid
Вопрос:
У меня есть slickgrid, в котором некоторые строки скрыты фильтром (DataView).
Когда я теперь вызываю метод getSelectedRows сетки, я получаю индексы видимых выделенных строк. Но мне нужны фактические данные выбранных строк.
Ответ №1:
Вы должны сделать что-то вроде этого:
var selectedData = [],
selectedIndexes;
selectedIndexes = _grid.getSelectedRows();
jQuery.each(selectedIndexes, function (index, value) {
selectedData.push(_grid.getData()[value]);
});
Прямо сейчас переменная selectedData содержит данные для выбранных строк.
Комментарии:
1. Ах, grid.getData, это был метод, который я искал. НО grid.getData[значение] не сработало, мне пришлось использовать grid.getData().GetItem(значение).
2. Прошу прощения, я использую вилку Эндрю Чайлда ( github.com/andrewchilds/SlickGrid ) и этот код хорошо работает на нем.
3. Я думаю, что разница между
grid.getData()[value]
иgrid.getData().getItem(value)
связана с типом, используемым для хранения в сетке: первый работает для массивов, второй для Slick. Просмотр данных. Я имею в виду, я предполагаю; Я могу быть совершенно неправ, но попробуйте.
Ответ №2:
У вас ошибка. Это должно быть «getDataItem», а не «getData».
var selectedData = [],enter code here`selectedIndexes;
selectedIndexes = _grid.getSelectedRows();
jQuery.each(selectedIndexes, function (index, value) {
selectedData.push(_grid.getDataItem(value));
});
Комментарии:
1. Решение, предоставленное @matma, отлично работает, если вы не используете DataView. На самом деле это не ошибка. Ваше решение, вероятно, лучше, поскольку оно всегда будет работать.
Ответ №3:
hObjMarcado = ( grid.getSelectedRows());
for( var a_id in hObjMarcado ) {
vres.push( dataview.getItem( hObjMarcado[a_id] ));
//la opcion getItem obtiene el elemento especifico,
//aun con filtro.
}
return vres;
Комментарии:
1. Пожалуйста, сделайте попытку написать на английском
Ответ №4:
Вы также можете использовать эту строку в .каждый цикл для извлечения данных из DataView вместо использования getData() из объекта grid, поскольку это кажется непоследовательным в зависимости от fork:
var selectedData = [],
selectedIndexes;
selectedIndexes = _grid.getSelectedRows();
jQuery.each(selectedIndexes, function (index, value) {
selectedData.push(_dataView.getItemById(value));
});
Комментарии:
1. На самом деле, я полагаю, вы хотели бы использовать getItemByIdx, а не getItemById . getItemByIdx получит данные по индексу, в то время как getItemById получит данные по уникальному идентификатору, который вы указали при создании своих данных. Они будут делать то же самое, если идентификатор, указанный вами для каждого элемента, равен его индексу в сетке. Однако в моем случае они не совпадали. Спасибо за код, хотя.
Ответ №5:
Если вы получаете доступ к сетке из другого элемента управления, например. нажмите кнопку
var selectRow = gridInstance.getSelectedRows();
alert(gridInstance.getDataItem(selectRow).columnName)