繁体   English   中英

如何从Actionscript中定位MXML中的Flex 3数据网格?

[英]How can I target a Flex 3 datagrid in MXML from Actionscript?

我在mxml文件(flex 3)中定义了一个数据网格:

我正在使用一个外部类连接到一个sqlite数据库并生成一些结果(这是有效的,我可以跟踪结果)。

我该如何针对外部类在mxml中生成的datagrid? 我努力了:

Application.application.resultsGrid.dataProvider = results.data;

并获取“错误:访问未定义属性的应用程序”。 来自amxmlc编译器。

我也尝试过:

[Bindable]
public var resultsGrid:DataGrid;

在类的属性。

看来我需要包含import mx.core。*; 现在可以了。

我不太明白你的回答。 我不是通过执行以下操作来绑定dataprovider属性吗?

Application.application.resultsGrid.dataProvider = result.data;

我来自PHP背景,并且在那种环境下熟悉OOP,所以Flex中的习惯用法对我来说很陌生。

更新:您问题的措辞使我困惑:(

如果需要从数据库中填充datagrid,则实际上应该在绑定dataProvider属性。

正如brd664所说,您实际在做什么

Application.application.resultsGrid.dataProvider = result.data; 

实际上是一项任务。 就像为变量赋值一样

var a : uint = 1;

绑定为您提供了更多的结构,并允许您基于单个属性更新来填充多个组件。 绑定还有很多其他好处,而这篇文章可能涵盖了太多。

这是绑定工作原理的简单示例。 请注意,有一个可绑定的属性...单击按钮时,它将将该属性设置为textInput中任何值。 然后,此更新将导致绑定触发并更新已绑定到该属性的所有内容。 这是flex的最大功能之一(它在Silverlight和WPF中也得到了广泛使用,可能还有许多我不知道的其他技术)。 无论如何...尝试一下,看看是否可以从绑定中更新组件。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">

    <mx:Script>
        <![CDATA[

            private var _myData : String

            [Bindable]
            public function get myData() : String
            {
                return _myData;
            }
            public function set myData(value : String) : void
            {
                _myData = value;
            }

            private function clickHandler(event : MouseEvent) : void
            {
                myData = myTextInput.text;
            }
        ]]>
    </mx:Script>
    <mx:VBox>
        <mx:HBox>
            <mx:Label text="{myData}" />
            <mx:Label text="{myData}" />
            <mx:Label text="{myData}" />
        </mx:HBox>
        <mx:TextInput id="myTextInput" text="TYPE HERE" />
        <mx:Button label="CLICK TO BIND" click="clickHandler(event)" />
    </mx:VBox>

</mx:Application>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM