2014-01-15 5 views
1

Я работаю над сеткой EXTJS, цвет строки которой будет установлен в соответствии с полем (статусом) значения из таблицы.EXTJS Изменение цвета строки сетки динамически с получением цветового кода из базы данных

Пользователь может редактировать поля строки и после щелчка по обновлению цвет строки изменится в соответствии со значением поля значения, установленного для этой строки.

Мне нужно, чтобы цвет фона в строке должен быть выбран из таблицы в db.

В настоящее время я устанавливаю другой класс css с проверкой значения поля состояния, используя следующий код.

getRowClass: function(record, rowIndex, rp, ds) 
{ 
    if(record.get('status') == 'xxxxx') 
    { 
     return 'status-xxxxx'; 
    } 
    else if(record.get('status') == 'yyyyy') 
    { 
     return 'status-yyyyy'; 
    } 
    else 
    { 
     return 'status-zzzzzz'; 
    } 
} 

У меня есть цвет в магазине со статусом для каждой строки.

Но мне нужно, чтобы цвет был выбран из db и задан в качестве фона строки.

Может ли кто-нибудь помочь мне достичь этого.

Благодаря

ответ

3

Если вы хотите использовать в качестве строки background-color цвет из строки записи вы должны установить цвет фона каждой строки Td элементов после того, как ряд визуализируется.

Вы можете сделать это в refresh случае gridView. Таким образом, в сетке конфигурации вы должны определить, что-то вроде этого:

viewConfig: { 
    listeners: { 
     refresh: function(view) {  

      // get all grid view nodes 
      var nodes = view.getNodes(); 

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

       var node = nodes[i]; 

       // get node record 
       var record = view.getRecord(node); 

       // get color from record data 
       var color = record.get('color'); 

       // get all td elements 
       var cells = Ext.get(node).query('td'); 

       // set bacground color to all row td elements 
       for(var j = 0; j < cells.length; j++) { 
        console.log(cells[j]); 
        Ext.fly(cells[j]).setStyle('background-color', color); 
       }          
      } 
     }  
    } 
} 

скрипки с живым примером: https://fiddle.sencha.com/#fiddle/2m8

+0

Да это работает для варианта сетки и редактирований для строк. Нужно только добавить «store.load();» в функции редактирования прав. – Gourav

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