【问题标题】:columns are not coming in order like in xml to datagrid列没有像 xml 到 datagrid 那样按顺序排列
【发布时间】:2012-06-22 14:43:34
【问题描述】:

我的网络应用程序提供以下格式的 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 中。 请帮忙。

谢谢 里米

【问题讨论】:

    标签: xml apache-flex datagrid


    【解决方案1】:

    数据网格定义:

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

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

      <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 属性;常规收藏不需要它。

      【讨论】:

      • 您好RIAstar,感谢您的回复。但是列(xml 属性)是由 web 服务创建的。它是动态的。是否有任何其他方式来生成列?请帮忙。谢谢
      • @mukherjeerimi 如您所见,'columns' 属性在一种情况下是一个数组,而在另一种情况下是 IList。在这两种情况下,您都可以动态创建列类。但是,XML 属性没有顺序,因此如果您希望在服务器端定义列,则必须将这些信息一起发送。
      【解决方案3】:

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

      例如

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

      【讨论】:

        猜你喜欢
        • 2016-08-25
        • 1970-01-01
        • 2011-06-18
        • 1970-01-01
        • 2019-01-08
        • 2018-05-20
        • 2011-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多