【问题标题】:Assigning an array of objects to a DataGrid将对象数组分配给 DataGrid
【发布时间】:2010-11-22 06:07:32
【问题描述】:

当 DataGrid 的 dataProvider 是对象数组时,如何将每列的 dataField 设置为对象的属性。

我有一个 ArrayCollection(比如 a),其中每个项目都是一个对象 例如a[i] = data:Object 其中对象数据有一些子属性 - data.namedata.titledata.content 等。

我有一个 DataGrid,我想在其中显示这些数据。

所以我说:

<mx:DataGrid id="entries" dataProvider="{resultRSS}">
  <mx:columns>
<mx:Array>
  <mx:DataGridColumn headerText="Title" dataField="data.title"/>
  <mx:DataGridColumn headerText="Date" dataField="data.created"/>
</mx:Array> 
  </mx:columns>
</mx:DataGrid>

这似乎根本不起作用。我得到一个空的 DataGrid。我应该如何分配 dataField 属性,以便它正确显示?我也试过{data.title}

谢谢。

编辑:我的数据样本

-[]arraycollection
--[0]
----id="id1"
----data.
------title="something"
------name="something"
------text="some html"
--[1]
----id="id2"
----data.
------title="something2"
------name="something2"
------text="some html2"

表应该是

 |title     |name      |text     |
 =================================
 |something |something |some html|
 |something2|something2|somehtml2|

【问题讨论】:

    标签: apache-flex mxml


    【解决方案1】:

    这是你的答案

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initialize()">
    
    <mx:Script>
        <![CDATA[
            import mx.collections.HierarchicalData;
    
            var a:Array = new Array();
            var o:Object = {};
            private function initialize():void{
              o["text"]="hello";
                      o["desc"]="Rahul";
              a.push(o);
            }
    
        ]]>
    </mx:Script>
    
    
        <mx:AdvancedDataGrid width="100%" height="100%" sortExpertMode="true" id="adg1" designViewDataType="tree" dataProvider="{new HierarchicalData(a)}">
            <mx:columns>
                <mx:AdvancedDataGridColumn headerText="text" dataField="text"/>
                <mx:AdvancedDataGridColumn headerText="desc" dataField="desc"/>
            </mx:columns>
        </mx:AdvancedDataGrid>
    
    </mx:Application>
    

    编辑-好的,现在根据您的数据丢弃我以前的答案试试这个

    var a:Array = new Array();
            var o:Object = {};      
            private function stringArrayToObjectArray():void{
                o["id"]="mauj";
                var oj:Object=new Object();
                oj["title"]="aaa";
                o["data"]=oj;
    
                var oj1:Object=new Object();
                oj1["id"]="mauj2";
                var oj2:Object=new Object();
                oj2["title"]="qqqq";
                oj1["data"]=oj2;
    
    
                a.push(o);      
                a.push(oj1);        
            }
    
             private function some_labelFunc(item:Object,th:Object):String {
                    return item.data.title;
                }
    
        ]]>
    </mx:Script>
    
    
    
        <mx:AdvancedDataGrid  width="100%" height="100%" sortExpertMode="true" id="adg1" dataProvider="{a}">
            <mx:columns>
                <mx:AdvancedDataGridColumn headerText="COMPANIES" dataField="data" labelFunction="some_labelFunc"/>
            </mx:columns>
        </mx:AdvancedDataGrid>
    
    </mx:Application>
    

    试试这个对不起这么糟糕的代码

    【讨论】:

    • 但问题是我不想将它显示为一棵树。我想将其显示为普通表格。唯一的问题是,dataField 的数据比平时深了一个对象。
    • 对于删除树类型只需删除 HierarchicalData 并添加您的集合,对于数据,您可以提供数据样本
    • 我添加了我的数据样本。
    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    相关资源
    最近更新 更多