0

我的 web 应用程序以以下格式提供 XML:

<Vendor name="Infosys Limited" adopTotal="120" totalstrength="775" FY10Q1="162" FY10Q2="132" FY10Q3="229" FY10Q4="254" FY11Q1="282" FY11Q2="243" FY11Q3="238" FY11Q4="233" FY12Q1="237" FY12Q2="136" FY12Q3="101" FY12Q4="120"/>
<Vendor name="Wipro" adopTotal="42" totalstrength="1181" FY10Q1="9" FY10Q2="12" FY10Q3="53" FY10Q4="67" FY11Q1="85" FY11Q2="76" FY11Q3="84" FY11Q4="82" FY12Q1="98" FY12Q2="51" FY12Q3="39" FY12Q4="42"/>
<Vendor name="Zensar Technologies Inc" adopTotal="187" totalstrength="1408" FY10Q1="207" FY10Q2="197" FY10Q3="428" FY10Q4="490" FY11Q1="511" FY11Q2="479" FY11Q3="471" FY11Q4="440" FY12Q1="440" FY12Q2="308" FY12Q3="137" FY12Q4="187"/>
<Vendor name="Hcl Technologies Limited" adopTotal="0" totalstrength="342" FY10Q1="0" FY10Q2="0" FY10Q3="0" FY10Q4="0" FY11Q1="3" FY11Q2="0" FY11Q3="9" FY11Q4="0" FY12Q1="0" FY12Q2="1" FY12Q3="1" FY12Q4="0"/>
<Vendor name="Mahindra Satyam" adopTotal="73" totalstrength="12" FY10Q1="106" FY10Q2="69" FY10Q3="50" FY10Q4="63" FY11Q1="117" FY11Q2="203" FY11Q3="192" FY11Q4="195" FY12Q1="208" FY12Q2="139" FY12Q3="53" FY12Q4="73"/>
<Vendor name="TCS" adopTotal="48" totalstrength="106" FY10Q1="54" FY10Q2="75" FY10Q3="140" FY10Q4="164" FY11Q1="164" FY11Q2="140" FY11Q3="147" FY11Q4="134" FY12Q1="124" FY12Q2="83" FY12Q3="49" FY12Q4="48"/>

但是 Datagrid 没有遵循这种格式。列应该根据 xml 变量来。列的顺序与 xml 不同。

我只是将 dataprovider 添加到 datagrid 中。请帮忙。

谢谢里米

4

3 回答 3

0

您必须明确定义列,如下所示:

<s:DataGrid dataProvider="{dp}">
    <s:columns>
        <s:ArrayList>
            <s:GridColumn dataField="@name" headerText="Name" />
            <s:GridColumn dataField="@adopTotal" headerText="Adop" />
            <s:GridColumn dataField="@totalstrength" headerText="Strength" />
        </s:ArrayList>
    </s:columns>
</s:DataGrid>

它与旧的 mx DataGrid 非常相似:

<mx:DataGrid dataProvider="{dp}">
    <mx:columns>
        <mx:DataGridColumn dataField="..." headerText="..." />
    </mx:columns>
</mx:DataGrid>

dataField属性确定要在该列中显示的属性。
headerText属性确定将在列标题中显示的标签。@符号指的是 XML 属性;你不需要它与常规收藏。

于 2012-06-20T13:05:04.767 回答
0

您声明属性的方式不反映在内部读取属性的顺序。为了确保列的正确顺序,请在您的数据网格中手动创建它们。

例如

        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="@name" headerText="Name"/>
                <mx:DataGridColumn dataField="@adopTotal" headerText="Total"/>
                 <....

            </mx:columns>
        </mx:DataGrid>
于 2012-06-20T13:10:46.263 回答
0

数据网格定义:

<s:DataGrid id="datagrid" dataProvider="{dp}"/>

当您从后端接收数据时,为 xml 中的每个属性调用以下函数:

private function addDataGridColumn(dataField:String):void
{
    var dgc:DataGridColumn = new DataGridColumn(dataField);
    var cols:Array = datagrid.columns;
    cols.push(dgc);
    datagrid.columns = cols;
}

希望有帮助。

于 2012-06-20T13:56:36.043 回答