【问题标题】:How can I target a Flex 3 datagrid in MXML from Actionscript?如何从 Actionscript 定位到 MXML 中的 Flex 3 数据网格?
【发布时间】:2010-10-09 03:19:03
【问题描述】:

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

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

如何定位外部类在 mxml 中生成的数据网格?我试过了:

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

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

我也试过了:

[Bindable]
public var resultsGrid:DataGrid;

在类属性中。

【问题讨论】:

    标签: apache-flex datagrid air


    【解决方案1】:

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

    我不太明白你的回答。我是否没有通过以下方式绑定 dataprovider 属性:

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

    我来自 PHP 背景,熟悉该环境中的 OOP,因此 Flex 中的习语对我来说很陌生。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      更新:你问题的措辞让我很困惑:(

      如果您需要使用您的 db 填充数据网格,您确实应该考虑绑定 dataProvider 属性。

      【讨论】:

        猜你喜欢
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 2013-01-12
        • 1970-01-01
        • 2013-09-02
        相关资源
        最近更新 更多