Dojox Grid передает два поля форматеру - PullRequest
1 голос
/ 08 августа 2010

Я успешно создал dojox.Grid, но в одном случае мне нужно передать два поля в функцию форматирования вместо одного. Например:

   {
        field: 'id',
        name: 'Id',
        formatter: formatterFunction,
    },

Мне нужно передать в formatterFunction () оба 'id' и 'name', например. Как я могу это сделать? Спасибо.

Ответы [ 4 ]

4 голосов
/ 08 августа 2010

Я знаю, что это уже упоминалось на канале IRC, но я отвечаю здесь, чтобы другие знали, а также на ваш дополнительный вопрос, на который я не уверен, что кто-то ответил.

Новое в 1.4 Если вы установите значение поля равным "_item", тогда ваш форматер будет вызываться со всем элементом из хранилища - вместо одного значения поля

Это позволяет делать то, что вы хотите, используя форматтер.

http://www.dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html#usage

В простейшем случае, без установки formatterScope сетки, доступ к хранилищу сетки можно получить из средств форматирования через this.grid.store, например ::

function fmtItem(value) {
  var store = this.grid.store;
  return store.getValue(value, 'id') + ': ' + store.getValue(value, 'name');
}

Вот очень простой пример вышеуказанного форматера в действии:

http://jsbin.com/upico4/edit

Есть также пример этого на одной из тестовых страниц, которая создает объект для хранения и охвата форматеров:

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_grid_formatters.html

3 голосов
/ 21 января 2011

Начиная с версии dojo 1.4, вы также можете получить несколько полей из магазина.Должно выглядеть примерно так:

    var layout = [{
        rows: [
          {name: 'Title', fields:['Title', 'url'], formatter:formatLink}
        ]}]

    function formatLink(value){
        return '<a href="'+value[1]+'">'+value[0]+'</a>';
    }

При этом используется значение из поля «url» для указания вашей ссылки, и отображаемый заголовок заполняется данными из поля «Название» в вашем магазине.

0 голосов
/ 03 декабря 2014
function formatterFunction(val, rowIdx, cell){

  var name=this.name,
  field=this.field;

}
0 голосов
/ 08 августа 2010

Вы уверены, что хотите отформатировать и, возможно, не использовать вместо этого get? При использовании средства форматирования значение only , которое передается функции, является значением, которое представляет поле.

Однако, если бы вы использовали вместо этого get, вы могли бы использовать элемент для доступа к другим значениям. (Однако тогда вы потеряете сортировку).

Так для вашей колонки есть

   {
        field: 'id',
        name: 'Id',
        get: getFunction
    },

Тогда имейте

getFunction: function(index,row) {
    return row.id + row.name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...