Рендер, который не меняет поставщика данных - PullRequest
0 голосов
/ 08 августа 2011

Есть ли способ применить рендерер к сетке таким образом, чтобы он не изменял значения в поставщике данных?У меня есть сетка данных, и в одном из ее столбцов есть средство визуализации клиентов, которое переопределяет функцию набора данных и преобразует числовое значение в поставщике данных в слово.Моя проблема в том, что когда я сортирую сетку по этому столбцу, она сортируется по новому значению, тогда как я хочу, чтобы она сортировала по старому значению, которое было изначально в поставщике данных.

Вот мой рендер:

public class MyRenderer extends Text {

     override public function set data(value:Object):void {
        super.data = value;
        data[DataGridListData(listData).dataField] = MyClass.convertValue(data[DataGridListData(listData).dataField]);
        super.invalidateDisplayList();
    }
}

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Проблема в этой строке:

data[DataGridListData(listData).dataField] = MyClass.convertValue(data[DataGridListData(listData).dataField]); 

Здесь вы устанавливаете значение поля на другое значение.

Вместо использования пользовательского средства визуализации, просто используйте функцию labelFunction, которая выполняет convertValue для этого поля. Тогда нестандартный рендер будет просто брать значение метки из DataGridListData и использовать его для отображаемого значения.

2 голосов
/ 08 августа 2011

ItemRenderers по умолчанию не изменяют dataProviders. Поскольку вы не показывали код, трудно сказать, изменил ли написанный код код dataProvider.

Если вы хотите отсортировать DataGrid на основе значений в dataProvider, которые не имеют отношения к значениям, отображаемым в сетке; Вы должны использовать sortCompareFunction в DataGrid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...