2013-12-02 5 views
0

Поэтому у меня есть контроллер здесь, чтобы вернуть записи кликнутой строки:Получить все записи из выбранной строки - ExtJS

... 
this.control({ 
      'mylist': { 
       cellclick: function(view, td, cellIndex, record, tr, rowIndex, e, eOpts) { 
         var id = record.get('ID'); 
         var name = record.get('NAME'); 
         var desc = record.get('DESC'); 
         var view = record.get('VIEW'); 
... 

Как я могу вместо перебирать mylist динамически get все поля и присвоить переменной для каждого поля (поскольку число столбцов может увеличиться в будущем)?

Cheers!

ответ

1

Если вы хотите перебрать только поля записи, которые отображаются в определенные столбцы можно сделать следующее:

cellclick: function(view, td, cellIndex, record, tr, rowIndex, e, eOpts) { 

    var i, 
     columns = view.panel.columns, 
     currentRecordKey, 
     newRecord = {}; 

    for(i=0; i < columns.length; i++){ 

     currentRecordKey = columns[i].dataIndex; 
     newRecord[currentRecordKey] = record.get(currentRecordKey) 
    } 

    //do something with new record 
} 

Хотя это решение не создает var навсегда ключа это создать карта, содержащая все значения текущей записи, которая служит аналогичной цели. Например, вы можете просто использовать newRecord.id, чтобы получить поле id для записи в вашем примере, и оно будет служить той же цели, что и объявление var, потому что оператор не сработает, если это поле (ключ на карте) фактически не существует. Имейте в виду, что это не сильно отличается от простого использования самой самой записи за вычетом некоторых дополнительных полей из объекта записи.

Смежные вопросы