создание «общего» столбца в datagrid flex - PullRequest
2 голосов
/ 14 сентября 2010

Вот что я хочу сделать: я хочу иметь таблицу данных, которая отображает общее значение для каждой строки.Скажем, например, у меня есть сетка данных.В этой таблице данных в каждой строке у меня есть пять столбцов.Из пяти столбцов четыре предназначены для ввода цифрами.Пятый столбец - это столбец «итого», который является результатом формулы, которая вычисляет четыре предыдущих столбца в той строке, в которой пользователь вводит числа.

пример:

Строка 1: (1-я КОЛОННА) 200 + (2-я КОЛОННА) 300 - (3-я КОЛОННА) 100 + (4-Я КОЛОННА) 90 = (ОБЩАЯ КОЛОННА) 490

Строка 2: (1-я КОЛОННА) 400 + (2-я КОЛОННА) 300 - (3-я КОЛОННА) 50 + (4-Я КОЛОННА) 90 = (ОБЩАЯ КОЛОННА) 740

РЯД 3: и т.д ...

Я работал над этим часами, есть ли у кого-нибудь какие-либо предложения о том, как это сделать?

Любая помощь очень ценится!

Ответы [ 4 ]

6 голосов
/ 14 сентября 2010

Использование labelFunction

<mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
    <mx:columns>
        <mx:DataGridColumn dataField="d1" headerText="Data 1"/>
        <mx:DataGridColumn dataField="d2" headerText="Data 2"/>
        <mx:DataGridColumn dataField="d3" headerText="Data 3"/>
        <mx:DataGridColumn labelFunction="getTotal" headerText="Total" />
    </mx:columns>
</mx:DataGrid>

Сценарий:

public function getTotal(item:Object, column:DataGridColumn):String
{
    var sum:Number = item.d1 + item.d2 + item.d3;
    return sum.toString();
}
2 голосов
/ 24 июля 2012

Хотя, кажется, уже слишком поздно для нового комментария, я должен добавить, что: Если вы хотите обновлять итоговый столбец каждый раз, когда пользователь изменяет значение других столбцов, вы должны добавить: new Number перед одним из его значений.

var sum:Number = new Number(item.d1) + new Number(item.d2) + new Number(item.d3);
1 голос
/ 14 сентября 2010

Вы можете написать функцию labelFunction и выполнить там вычисления, поэтому вам не нужно менять ваш dataProvider.

<mx:DataGridColumn headerText="total" 
           labelFunction="{myLabelFunc}"/>

и функцию:

public static function myLabelFunc(item:Object, column:DataGridColumn):String {
    // do your calculation
    return result;
}
1 голос
/ 14 сентября 2010

Добавьте общее значение к объектам, которые вы передаете в массиве в качестве поставщика данных. Вычислите итоговое значение, прежде чем отобразить их, выполнив циклическое повторение всех элементов.

...