【问题标题】:how to create a dynamic datagrid in flex如何在 flex 中创建动态数据网格
【发布时间】:2012-02-19 23:46:07
【问题描述】:

我正在尝试在 FLEX 中创建一个数据网格。问题是我希望它是 100% 动态的 - 即列和数据。

基本上我需要通过数据库查询的结果集填充数据网格,这些数据将通过标准的 java spring jdbc dao 层收集。该查询与 'select * from tablename' 一样通用,因此结果集可以从一个查询更改为另一个查询。

我的计划是将此结果集转换为某种形式的 java 对象,我最初的想法是某种 Map 将包含行的列名和值。

我苦苦挣扎的一点是,我需要将此结果集转换为 ActionScript 对象(通过 graniteds),然后我可以使用该对象来填充数据表。

我已经看到很多关于如何将列动态添加到数据网格的示例,并通过数据字段对象绑定数据 - 但如果我不知道我将拥有多少列或什么,我会坚持如何做到这一点列名将是。

希望这是有道理的。

谢谢

【问题讨论】:

    标签: java actionscript-3 apache-flex dynamic datagrid


    【解决方案1】:

    如果你知道如何动态创建列,那么是什么导致你卡住了呢?
    从数据库中提取值。将结果转换为ArrayList<Map>。然后在 actionscript 中,它将映射到 ArrayCollection(Object)。由于集合中的每个对象都将具有相同的结构(属性),因此您可以轻松创建数据网格:

    public function resultEventHandler(event:ResultEvent) {
        var res:ArrayCollection=event.result;
        if (!res || res.length == 0)
            return;
        var dg:DataGrid=new DataGrid();
        var typicalObj:Object=res.getItemAt(0);
        var columns:Array=[];
        //iterate through object properties
        for (var prop:String in typicalObj) {
            //set header text and dataField for new column
            var c:DataGridColumn=new DataGridColumn(prop);
            columns.push(c);
        }
        dg.columns=columns;
        dg.dataProvider=res;
        //add your datagrid on stage, do it as you need
        view.addElement(dg);
    }
    

    【讨论】:

    • 注意,这个例子是针对mx datagrid的,如果你想使用spark,列应该是ArrayCollection,只是一个观察。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2010-11-24
    • 2010-12-30
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多