如何使用js:Datagrid动态更新dataprovider

时间:2019-09-24 16:06:40

标签: apache-royale

js:dataGrid显示空白而不是数据。

dataGrid组件:

<j:VGroup id="VGroupContainer">
                <j:Button text="Load Data" width="200" height="60" click="OpenData(event)"/>

                <js:DataGrid  rowHeight="40" y="200" visible="true" id="dataGrid"  width="330">

                    <js:columns>
                            <js:DataGridColumn label="Name" dataField="Name" id="nameField" columnWidth="130"/>
                            <js:DataGridColumn label="SO" dataField="SOname" id="soField" columnWidth="100"/>
                            <js:DataGridColumn label="Email" dataField="Email" id="emailField" columnWidth="100"/>
                    </js:columns>

                </js:DataGrid>
</j:VGroup>

动态更新数据的功能。作为上下文,我将使用HTTPservice调用从服务器检索数据并相应地更新datagrid。出于测试目的,我使用以下内容:

protected function OpenData(event:MouseEvent):void
        {


                    var obj:Object=new Object();

                    obj.Name = "record 1"
                    obj.SOname = "SO1"
                    obj.Email = "email 1"
                    var obj2:Object=new Object();

                    obj2.Name = "record 2"
                    obj2.SOname = "SO2"
                    obj2.Email = "email 2"
                    var obj3:Object=new Object();

                    obj3.Name = "record 3"
                    obj3.SOname = "SO3"
                    obj3.Email = "email 3"

                    arrData.addItem(obj)
                    arrData.addItem(obj2)
                    arrData.addItem(obj3)

              dataGrid.dataProvider = arrData;

        }

每当我将dataProvider设置为一个值时,dataGrid似乎具有正确的行,但没有数据显示。您实际上可以单击并选择一行,但在视觉上没有任何单元格显示出来:

After Dataprovider is updated

最近有人在Datagrids的Apache Royale中工作过吗?我想知道我是否正在使用正确的组件。我是从s:Datagrids迁移而来的,从来没有这个问题。

1 个答案:

答案 0 :(得分:0)

您正在使用的基本实现被设计为非常轻量级,但是缺少内置的flex实现所附带的一些功能。

如果要从spark进行迁移,则使用spark仿真组件[1]可能会更容易。

如果您想保留轻量级的实现并随需添加功能,则只需添加更改通知器[2]。

[1] https://github.com/apache/royale-asjs/blob/develop/examples/mxroyale/tourdeflexmodules/src/spark/controls/DataGridExample.mxml

[2] https://github.com/apache/royale-asjs/blob/9db99c214d6ca9c300a11489d2421cf6920e9de4/examples/royale/ListExample/src/main/royale/MyInitialView.mxml#L178