[英]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.