ExtJS EditorGridPanel и средство визуализации столбцов - PullRequest
3 голосов
/ 06 апреля 2011

Меня немного смущает следующая документация для EditorGrid :

Редактирование производится по значению поле, указанное в столбце dataIndex в бэк-магазине (так что если вы используете рендерер для того, чтобы отображать преобразованные данные, это должно быть приходится)

Я не совсем уверен, как "учесть" мой рендерер в следующей ситуации:

...

columns : [{
                header   : 'Foo',
                width    : 100,
                dataIndex: 'foo',
                renderer: function(value, p, record) {return value? value.bar: ""},  
                editor : new Ext.form.TextField({  
                    allowBlank : false  
                })
            }]
...

Как вы можете видеть, этот рендерер действительно простой, но он явно не будет работать с TextField. Я понимаю, почему при редактировании пользователь просто отображает мой объект foo, а не свойство bar.

Так как же обойти это? Должен ли я перезаписывать Ext.form.TextField новыми setValue и getValue? Я думал об использовании событий beforeedit и afteredit, но это кажется излишним. Я чувствую, что здесь что-то очень простое.

Если мне неясно, вот несколько скриншотов с полученным результатом:

Работает рендерер колонок!
yay renderer

Ext.form.TextField получает объект
booo textfield

1 Ответ

1 голос
/ 06 апреля 2011

Если вы хотите изменить способ отображения value в столбце, вы должны изменить средство визуализации столбца и редактор, чтобы это отражалось.Это означает, что да, вам придется слушать и действовать до и после редактирования событий.

(Например, если подумать, я поменяю 7 на 9. Как система узнает, чтоделать с этим 9, так как ваше значение - это совершенно другой формат и фактически сам по себе объект. единственный способ преобразовать это взять 9 и преобразовать его обратно в любой объект, который вы хотите, что означает прослушивание до / после редактированияи выталкивает, вытягивает значения из редактора в / из резервной записи.)

...