Я использую следующее средство визуализации элементов в одном из столбцов моей таблицы данных. Однако я хочу отформатировать каждую строку сетки данных по-разному. Столбец состоит из чисел, но некоторые должны быть отформатированы как числа, а другие как валюта и т. Д. Также обратите внимание, что у меня есть дополнительный столбец, который состоит из 0 и 1, где 0 означает, что он должен быть отформатирован как число, а 1 означает, что он должен быть форматируется как валюта.

<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                          xmlns:s="library://ns.adobe.com/flex/spark" 
                          xmlns:mx="library://ns.adobe.com/flex/mx" 
                          focusEnabled="true">

    <s:Label id="lblData" top="0" left="0" textAlign="center" verticalAlign="middle" right="0" bottom="0" text="{dataGridListData.label}"  backgroundColor="#EDFB09"/>

    <s:Rect left="0" right="0" top="0" bottom="0">
        <s:stroke>
            <s:SolidColorStroke color="0x000000" weight="1"/>
        </s:stroke>
    </s:Rect>

    <fx:Script>
        <![CDATA[

        ]]>
    </fx:Script>

</s:MXDataGridItemRenderer>

Любая помощь в том, как я могу реализовать такую ​​функцию, я пытаюсь использовать dataGridListData.label в функции в itemrenderer, но это дает ошибку.

Помощь Спасибо

0
FlexyBoz 29 Авг 2011 в 14:24

2 ответа

Лучший ответ

Объект dataGridListData уже должен содержать всю необходимую информацию: columnIndex, rowIndex, dataField.

В простых случаях очень удобно использовать "elvis-operator" (? Как сокращение от if-оператора):

(состояние) ? истина-блок: еще-блок

Некоторые примеры: color = "{(dataGridListData.rowIndex% 2 == 0)? # 00ff00: # 0000ff}" (Для чередующихся цветов строк) text = "{(dataGridListData.dataField ==" coolField ")? 'Coool!' : 'Uncool'} "

0
Christofer Dutz 29 Авг 2011 в 11:12

Пользовательский рендерер может быть создан путем реализации IDataRenderer, IDropInListItemRenderer.

ManageFilterValueEditor extends VBox implements IDataRenderer, IDropInListItemRenderer

Это дает доступ к _listdata и _data. Данные списка представляют собой строку. в setData мы можем получить доступ к строке как

override public function set data(value:Object):void {
            _data = value;
            if(_listData!=null){
                     var col:DataGridColumn=((_listData.owner as DataGrid).columns[_listData.columnIndex] as DataGridColumn);
                    removeAllChildren();

// в зависимости от столбца его можно отформатировать соответствующим образом

0
cpandey05 29 Авг 2011 в 12:03