Подсветка / Выбор строки сетки в ExtJS - PullRequest
6 голосов
/ 03 января 2012

Я новичок в Ext JS.Я работаю над панелью сетки, в которой при выборе / щелчке по любой из строк на панели под сеткой отображаются определенные данные, относящиеся к выбранной строке.Также, когда окно загружено, первое должно быть выделено / выделено по умолчанию.В настоящее время сетка и панель отображаются правильно.Даже данные, относящиеся к выбранной строке, отображаются на панели, но строка не выделяется.Я пробовал grid.focusRow(0) & grid.getRow(0).highlight() методы, но они не работают.Ниже мой код.

//the js file code
initComponent : function() { //within the window instance

    var single = false;
    var store = new Ext.data.XmlStore({//all necessary fields added}); //store
    HttpUtil.syncCall(this.url, "GET", this.loadStore, store,this);
    var acctTplMarkup = [//the fields here are displayed on row selection ];
                /*The template for displaying the details of the selected row */
                 this.acctTpl = new Ext.Template(acctTplMarkup);
    //check for request type, if type is range of checks create the grid
    if (single == false) {
        var gridView = new Ext.grid.GridView();
        var colModel = new Ext.grid.ColumnModel([ {
            header : 'Status',
            dataIndex : 'status'
        }, {
            header : 'Message',
            dataIndex : 'message'
        } ]);
        var selModel = new Ext.grid.RowSelectionModel({
            singleSelect : true
        });
        grid = new Ext.grid.GridPanel({
                                          ...
                        listeners : {
                render : function(grid) {
                    Ext.getCmp('check').store.on('load',function(store, records, options) { //check is the id value for the window instance
                         grid.getSelectionModel().selectFirstRow(); 
                    });
                }
            }
    }); //gridPanel
    } //if
    /* If request type is range select then display the grid  */
                ... 
    if (single == false) {
    grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r) {
Ext.getCmp('check').acctTpl.overwrite(Ext.getCmp('detailPanel').body, r.data);
        }); //rowselect
    } //if

    Ext.apply(this, {
                                     ...
            listeners : {
            'afterrender' : function(){
            Ext.getCmp('check').acctTpl.overwrite(Ext.getCmp('detailPanel').body, this.store.getAt(0).data,true);
            }
        }
    });
    Check.superclass.initComponent.apply(this, arguments);

}, //initComponent

Данные из хранилища данных загружены и отображаются правильно, но только строка не выделена.Кто-нибудь может сказать мне, где я ошибся?

Ответы [ 3 ]

11 голосов
/ 03 января 2012

В Ext.grid.GridPanel нет метода getRow.Однако есть один в Ext.grid.GridView.

. Чтобы выделить строку, вы должны сделать следующее:

var row = grid.getView().getRow(0); // Getting HtmlElement here
Ext.get(row).highlight(); // Getting element wrapper and using its "highlight" method

Чтобы выполнить выбор строки, вы используете сетку SelectionModel:

grid.getSelectionModel().selectRow(0)
6 голосов
/ 01 октября 2013

Компонент: Ext.grid.Panel

Версия: 4.0.0

Чтобы выбрать один элемент и удалить предыдущий выбор:

grid.getSelectionModel().select(0);

Чтобы выбрать один элемент и сохранить предыдущий выбор:

grid.getSelectionModel().select(0, true);
1 голос
/ 11 сентября 2013

Чтобы выбрать строку по определенному индексу, используйте модель выбора.

Ext.grid.GridPanel.getView().getSelectionModel().select(index);
...