Skip to main content
April 10, 2014
Question

DataGrid compare columns problem

  • April 10, 2014
  • 1 reply
  • 252 views

Hi I am new in programing and pls help me how to compare numbers in one column. I need to change color of font if is my position (MJESTO) column is more than 30. I dont now how to make this column from string to number formats. i load data throw external xml file:

This is my as3 code:

import fl.controls.DataGrid;

import fl.data.DataProvider;

import fl.controls.dataGridClasses.DataGridColumn;

import fl.controls.ScrollPolicy;

import fl.controls.listClasses.CellRenderer;

import fl.controls.listClasses.ICellRenderer;

import fl.controls.dataGridClasses.HeaderRenderer;

var dp:DataProvider;

var myDataGrid:DataGrid = new DataGrid();

var col0:DataGridColumn = new DataGridColumn ("MJESTO");

var col1:DataGridColumn = new DataGridColumn ("DOBITNIK");

var col2:DataGridColumn = new DataGridColumn ("KLUB");

var col3:DataGridColumn = new DataGridColumn ("BODOVI");

myDataGrid.addColumn (col0);

myDataGrid.addColumn (col1);

myDataGrid.addColumn (col2);

myDataGrid.addColumn (col3);

myDataGrid.width = 768;

myDataGrid.height = 1200;

myDataGrid.getColumnAt(0).width = 120;

myDataGrid.getColumnAt(1).width = 264;

myDataGrid.getColumnAt(2).width = 264;

myDataGrid.getColumnAt(3).width = 120;

myDataGrid.getColumnAt(0).resizable = false;

myDataGrid.getColumnAt(1).resizable = false;

myDataGrid.getColumnAt(2).resizable = false;

myDataGrid.getColumnAt(3).resizable = false;

myDataGrid.rowHeight = 70;

myDataGrid.headerHeight = 0;

myDataGrid.move(1195, 0);

col3.sortOptions = Array.DESCENDING;

var f1:Font = new Impact() as Font;

var headerTF:TextFormat = new TextFormat();

headerTF.bold = false;

headerTF.color = 0xf2b33f;

headerTF.font = f1.fontName;

headerTF.size = 16;

var rowTF:TextFormat = new TextFormat();

//col0.sortOptions = Array.NUMERIC;

//col0.labelFunction = numberLabelFunction;

if("col0">"40")

{

          rowTF.bold = false;

          rowTF.color = 0xf2b33f;

          rowTF.font = f1.fontName;

          rowTF.size = 30;

          rowTF.align = "center";

}

else

{

          rowTF.bold = false;

          rowTF.color = 0xffffff;

          rowTF.font = f1.fontName;

          rowTF.size = 30;

          rowTF.align = "center";

}

function numberLabelFunction(item:Object):String {

    return Number(item.columnB).toFixed(2);

}

/*rowTF.bold = false;

rowTF.color = 0xf2b33f;

rowTF.font = f1.fontName;

rowTF.size = 30;

rowTF.align = "center";*/

var fontArr:Array = Font.enumerateFonts(true);

fontArr.sortOn("fontName", Array.CASEINSENSITIVE);

myDataGrid.setStyle("embedFonts", true);

myDataGrid.setRendererStyle("embedFonts", true);

myDataGrid.setRendererStyle("textFormat", rowTF);

myDataGrid.setStyle("headerTextFormat", headerTF);

myDataGrid.dataProvider = new DataProvider(fontArr);

myDataGrid.rotation = 90;

myDataGrid.rowCount = 17;

addChild(myDataGrid);

var url:String = "playersInput.xml";

var req:URLRequest = new URLRequest(url);

var uLdr:URLLoader = new URLLoader();

uLdr.addEventListener(Event.COMPLETE, completeHandler);

uLdr.load(req);

function completeHandler(event:Event):void {

    var ldr:URLLoader = event.currentTarget as URLLoader;

    var xmlDP:XML = new XML(ldr.data);

    dp = new DataProvider(xmlDP);

    myDataGrid.dataProvider = dp;

And this is my xml:

<?xml version="1.0" ?>

<items>

    <item MJESTO="1" DOBITNIK="VERONIKA K." KLUB="ZADAR, ZD" BODOVI="12" />

    <item MJESTO="2" DOBITNIK="JURE P." KLUB="ATP, SI" BODOVI="11" />

          <item MJESTO="3" DOBITNIK="MARIJA G." KLUB="SAVA, ZG" BODOVI="8" />

          <item MJESTO="3" DOBITNIK="PERO H." KLUB="SAVICA, ZG" BODOVI="8" />

    <item MJESTO="4" DOBITNIK="JURE P." KLUB="ZADAR, ZD" BODOVI="7" />

          <item MJESTO="5" DOBITNIK="MARKO P." KLUB="SPLIT, ST" BODOVI="6" />

          <item MJESTO="5" DOBITNIK="JULIO S." KLUB="DUBEC, ZG" BODOVI="6" />

    <item MJESTO="6" DOBITNIK="IVICA I." KLUB="SESVETE, ZG" BODOVI="5" />

          <item MJESTO="6" DOBITNIK="ANICA U." KLUB="ORION, RI" BODOVI="5" />

          <item MJESTO="7" DOBITNIK="ROKO P." KLUB="B2, RI" BODOVI="4" />

    <item MJESTO="7" DOBITNIK="IVONA A." KLUB="KRUZER, DM" BODOVI="4" />

          <item MJESTO="7" DOBITNIK="IGOR P." KLUB="PLOCE, PL" BODOVI="4" />

          <item MJESTO="8" DOBITNIK="LEO J." KLUB="CIBONA, ZG" BODOVI="3" />

    <item MJESTO="29" DOBITNIK="JURE P." KLUB="PITOMACA, PT" BODOVI="3" />

          <item MJESTO="30" DOBITNIK="MARKO A." KLUB="SPLIT, ST" BODOVI="2" />

          <item MJESTO="31" DOBITNIK="PETAR C." KLUB="SAVICA, ZG" BODOVI="1" />

    <item MJESTO="10" DOBITNIK="ANDREA P." KLUB="ZADAR, ZD" BODOVI="1" />

</items>

This topic has been closed for replies.

1 reply

kglad
Community Expert
Community Expert
April 10, 2014

here's the code to isolate the grids you want, but you'll need a cellrenderer to change the font color:

function completeHandler(event: Event): void {

    var ldr: URLLoader = event.currentTarget as URLLoader;

    var xmlDP: XML = new XML(ldr.data);

    dp = new DataProvider(xmlDP);

    myDataGrid.dataProvider = dp;

   sortF()

}

function sortF(): void {

    for (var i: int = 0; i < dp.length; i++) {

        var obj: Object = dp.getItemAt(i);

        for (var s: String in obj) {

            if (s == "MJESTO" && obj > 30) {

            } else {

            }

        }

    }

}