2012-06-20 27 views
0

我的web應用在以下格式給XML:列不是爲了未來像在XML中的DataGrid

<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。

我簡單地將數據提供者添加到數據網格。 請幫忙。

感謝 里美

回答

0

Datagrid的定義:

<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; 
} 

。希望幫助。

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屬性;你不需要定期收藏。

+0

嗨RIAstar, 感謝您的回覆。但是列(xml屬性)是通過webservice創建的。它是動態的。 是否有任何其他方式來生成列?請幫忙。 謝謝 – mukherjeerimi

+0

@mukherjeerimi正如你所看到的,'columns'屬性在一種情況下是一個數組,而在另一種情況下是IList。在這兩種情況下,您都可以動態創建列類。但是,XML屬性沒有順序,所以如果希望在服務器端定義列,則必須一起發送該信息。 – RIAstar

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>