PDA

View Full Version : How to use XML as a DataGrid dataProvider


magquatre
08-10-2007, 07:42 PM
Maybe someone could help shed some light on this. Im trying to build out a datagrid from my XML variable "xml_set" by assigning the dataFields {name,ip,status} to the DataGridColumns


var cell_datagrid:DataGrid = new DataGrid();
var xml_set:XML = new XML();
xml_set =
<xml_set>
<cell name="MyName1" ip="192.168.1.1" status="Good"/>
<cell name="MyName2" ip="192.168.1.2" status="Bad"/>
</xml_set>;


cell_datagrid.dataProvider = xml_set;

var cell_datagrid_col1:DataGridColumn = new DataGridColumn();
cell_datagrid_col1.dataField = "@name";
cell_datagrid_col1.headerText = "Name";

var cell_datagrid_col2:DataGridColumn = new DataGridColumn();
cell_datagrid_col2.dataField = "@ip";
cell_datagrid_col2.headerText = "IP";

var cell_datagrid_col3:DataGridColumn = new DataGridColumn();
cell_datagrid_col3.dataField = "@status";
cell_datagrid_col3.headerText = "Status";

var myColumns:Array = new Array();
myColumns.push(cell_datagrid_col1);
myColumns.push(cell_datagrid_col2);
myColumns.push(cell_datagrid_col3);
cell_datagrid.columns = myColumns;


There appears to be a problem with the dataField assignment because i am getting a Grid but with no entries from the XML.

But if i do the following, it will work just fine.

xml_set = <cell name="Myname" ip="192.168.1.1" status="Good"/>;


But when i try and put two things in the xml i get a compile time error


xml_set =
<cell name="Myname1" ip="192.168.1.1" status="Good"/>
<cell name="Myname2" ip="192.168.1.2" status="Bad"/>;


So my only option is to use


xml_set =
<xml_set>
<cell name="MyName1" ip="192.168.1.1" status="Good"/>
<cell name="MyName2" ip="192.168.1.2" status="Bad"/>
</xml_set>;



Does anyone know what i have to put in the "dataField" property of each DataGridColumn to solve this problem?

Thank you

magquatre
08-10-2007, 07:55 PM
Haha alright i figured it out, it was rather simple actually

i changed the dataProvider line


var cell_datagrid:DataGrid = new DataGrid();
var xml_set:XML = new XML();
xml_set =
<xml_set>
<cell name="MyName1" ip="192.168.1.1" status="Good"/>
<cell name="MyName2" ip="192.168.1.2" status="Bad"/>
</xml_set>;


cell_datagrid.dataProvider = xml_set.cell; // HERE!

var cell_datagrid_col1:DataGridColumn = new DataGridColumn();
cell_datagrid_col1.dataField = "@name";
cell_datagrid_col1.headerText = "Name";

var cell_datagrid_col2:DataGridColumn = new DataGridColumn();
cell_datagrid_col2.dataField = "@ip";
cell_datagrid_col2.headerText = "IP";

var cell_datagrid_col3:DataGridColumn = new DataGridColumn();
cell_datagrid_col3.dataField = "@status";
cell_datagrid_col3.headerText = "Status";

var myColumns:Array = new Array();
myColumns.push(cell_datagrid_col1);
myColumns.push(cell_datagrid_col2);
myColumns.push(cell_datagrid_col3);
cell_datagrid.columns = myColumns;