extjs условно отображает столбцы - PullRequest
1 голос
/ 12 марта 2011

Допустим, у меня есть сеточная панель с 2 столбцами: Имя и Зарплата, DataIndex соответствующего магазина имеет те же имена

В extjs функция рендерера выглядит так:

function(value, metaData, record, rowIndex, colIndex, store){}

Теперь, когда я вызываю рандерера, основываясь на имени proeprty, если я хочу сделать другой рендеринг, как мне это сделать? е, г.

function(value, metaData, record, rowIndex, colIndex, store){
if (record.name == 'Salary'|| record.id == 'Salary')
{
//render logic
}
else if (record.name == 'Name'|| record.id == 'Name'){
  //different render logic
}
}

Какой правильный синтаксис для этого?

1 Ответ

1 голос
/ 12 марта 2011

Ну, синтаксически это правильно.Но условия в утверждении if не верны.Переменная value содержит отображаемое значение, поэтому, если вам нужно проверить, что это должно быть довольно просто, если условие.

В вашем случае вы пытаетесь предоставить зарплату или имя?Переменная record содержит всю запись.Поле record.name отсутствует.Объект записи содержит следующие поля:

  1. data -> Объект с данными.(Использование должно использовать это)
  2. id -> Id записи.Это указывается idProperty в вашем магазине
  3. json -> данные в формате json
  4. store -> сам ваш магазин
  5. proto ->prototype

Итак, если вы проводите какое-либо сравнение и проверку, вам нужно будет использовать record.data.<property-name>.

В вашем случае у вас есть один dataIndex для имени и зарплаты, поэтомукод будет:

function(value, metaData, record, rowIndex, colIndex, store) {

    if(record.data.property == Name) {
            //render logic for name
    }
    else if(record.data.property == Salary) {
            // render logic for salary
    }
}

И, наконец, эта функция перейдет в свойство визуализатора вашего столбца.

...