2013-07-04 1 views
0

У меня есть сетка ExtJS, которая отображает некоторые поля из моих логотипо таблиц в базе данных ..ExtJS 3.4.0 визуализации поля ID в сетке с NAME

Reports.grid.Reports = function(config) { 
    config = config || {}; 
    Ext.applyIf(config,{ 
     id: 'reports-grid-reports' 
     ,url: Reports.config.connectorUrl 
     ,baseParams: { action: 'mgr/reports/getList' } 
     ,save_action: 'mgr/reports/updateFromGrid' 
     ,fields: ['id','name','filename','remark','year','resourceID','typeID','visible'] 

, а затем:

{ 
      header: 'Type ID' 
      ,dataIndex: 'typeID' 
      ,sortable: true 
      ,width: 100 

     } 

В моей таблице типов есть typeid и name. Моя сетка отображает номер. Как я могу сказать, чтобы вместо этого отображалось имя для этого идентификатора в таблице?

Я также получил выпадающий, который я использую в окне обновления:

Reports.combo.Types = function(config) { 
    config = config || {}; 
    Ext.applyIf(config,{   
     name: 'typeID'  
     ,hiddenName: 'typeID' 
     ,displayField: 'name' 
     ,valueField: 'id' 
     ,fields: ['name','id'] 
     ,listWidth: 380  
     ,pageSize: 20 
     ,url: Reports.config.connectorUrl 
     ,baseParams: { 
       action: 'mgr/reports/gettypelist2', 'combo': true 
      }   
    }); 
    Reports.combo.Types.superclass.constructor.call(this,config); 
}; 
Ext.extend(Reports.combo.Types,MODx.combo.ComboBox); 
Ext.reg('combo-modx-types',Reports.combo.Types); 

Использование, displayField: «имя» делает имя комбо дисплей вместо ид .. как я могу сделать то же самое в сетке?

ответ

0

Если я правильно понял вопрос, я считаю, что вам нужно будет настроить процессор getList, а не непосредственно в ExtJS. Переопределите функцию afterIteration(). Что-то вдоль линий:

public function afterIteration(array $list) { 
    $rows = array(); 
    foreach ($list as $row){ 
     // This calls a custom getName() function that gets the name from the other table 
     $row['typeID'] = $this->getName($row['id']); 
     $rows[] = $row; 
    } 
    return $rows; 
} 

и, возможно, ваш GetName() функция может быть что-то вроде:

private function getName($id) { 
    $otherTable = $this->modx->getObject('TABLE_ALIAS_HERE', array('internalKey' => $id)); 
    $name = $otherTable->get('name'); 
    return $name; 
}