Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   grid.getSelectionModel().selectRow / Rows / Records (https://javascript.ru/forum/extjs/13252-grid-getselectionmodel-selectrow-rows-records.html)

cmygeHm 22.11.2010 17:18

grid.getSelectionModel().selectRow / Rows / Records
 
Привет ВСем!
Как видно по сабжу пытаюсь выделить определенную строку грида. Выделять - выделяю любым из трех способов. Например так:
Ext.getCmp('grid_id').getSelectionModel().selectRecords([Ext.getCmp('grid_id').store.getById(jsonData.id)], true);

Но если я делаю лоад грида, а затем выделяю:
Ext.getCmp('grid_id').store.load({callback: function(){
       Ext.getCmp('grid_id').getSelectionModel().selectRecords([Ext.getCmp('grid_id').store.getById(jsonData.id)], true);
}});


то выделения как-будто не было.
В чем же дело??
Спасибо.:victory:

DooMer 23.11.2010 14:16

cmygeHm,
а вот это обьект рекорд ?

cmygeHm 26.11.2010 09:15

Цитата:

Сообщение от DooMer (Сообщение 80347)
cmygeHm,
а вот это обьект рекорд ?

Вопрос немного не понятен.

cmygeHm 30.11.2010 13:51

хм...
ап?

underW 30.11.2010 18:13

о, можно я буду ExtJS?

что от меня хотят:

Ext.getCmp('grid_id').getSelectionModel().selectRecords([Ext.getCmp('grid_id').store.getById(jsonData.id)], true);


так, ага, взять компонент с id='grid_id' - готово
вернуть модель выделения - готово
попросить эту модель выделить строки, угу, хорошо, а какие строки?

взять компонент id='grid_id'
обратится к его сторе
взять запись по id
по какому id?
jsonData.id - я не знаю что это, не буду ничего выделять ибо я не знаю что выделять.

underW 30.11.2010 18:28

попробуй для начала вот так:
Ext.getCmp('grid_id').getSelectionModel().selectRecords([Ext.getCmp('grid_id').getStore().getById(1)], true);

cmygeHm 01.12.2010 12:12

Капец!!! :)
Я до этого пробывал делать Ext.getCmp('grid_id').getStore().getById(1)] и работало. как выяснилось - именно здесь ошибка, в jsonData.id данные были. потому что я вместо них пробывал писать и один и др.

Строка Ext.getCmp('grid_id').getStore().getById(суще тв_ид)] не работает, написал свою функцию нахождения индекса по ид и все ок:
function getRowIndexById(grid_id, row_id)
{
            var t = Ext.getCmp(grid_id).getStore();
            for (var i=0; i<t.data.items.length; i++)
            {
                if (t.data.items[i].data.id==row_id) return i;
            }
            
}

underW 01.12.2010 12:19

я так понял, у тебя параметр id Record`a, не такой же как его позиция в таблице, ну типа у первой записи id не 1?

или не правильно понял?

cmygeHm 01.12.2010 14:04

не такой. У каждой строки в гриде есть ид, соответствующий ИД записи в БД.
Теперь так: Сначала нахожу индекс строки в гриде по ИД в БД, а потом выделяю.

VKS 01.12.2010 17:59

var dex = store.find('id', db_id_from_your_result);
var row = grid.getView().getRow(dex);


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