我有一個包含搜索字段的表單。 當用戶按Enter鍵時,我使用httpservice向mySQL數據庫發送查詢。 在某些情況下(很多)有幾條記錄,所以打開一個新窗口以顯示帶有數據網格的記錄,以便用戶選擇好的結果。帶有參數
我的問題是如何將選定的信息發送到第一個窗口(文本字段)。 我是派遣事件的方式,但我沒有找到如何使用!
你能幫我找到解決辦法嗎?
感謝
我有一個包含搜索字段的表單。 當用戶按Enter鍵時,我使用httpservice向mySQL數據庫發送查詢。 在某些情況下(很多)有幾條記錄,所以打開一個新窗口以顯示帶有數據網格的記錄,以便用戶選擇好的結果。帶有參數
我的問題是如何將選定的信息發送到第一個窗口(文本字段)。 我是派遣事件的方式,但我沒有找到如何使用!
你能幫我找到解決辦法嗎?
感謝
如果你想在MDI環境,我建議你使用某種共享模型(又稱調解員或演示模型)內進行通信,保持所需的窗口之間的合同。
class SelectionPM{
[Bindable]
public var selectedItem:Object;
}
使用案例:
窗口1具有SelectionPM的實例,當你打開窗口2傳遞 SelectionPM實例它,然後在窗口2切換選擇更新SelectionPM.selectedItem 財產數據網格。這將 將綁定鏈傳播到Window1,您可以根據需要使用 SelectionPM.selectedItem。
理想情況下,您可以使用IoC容器進行模型注入,但這是另一回事。
這可能看起來很多工作,但如果您在應用程序中保留此方法,您將從中受益。
乾杯!
謝謝你的回答,但它似乎很難像我這樣的新手;-) – Flex60460
下面是一組四個類作爲基礎。顯然你不想在構造函數中做如下的實際工作。
public class App
{
public static var eventDispatcher:EventDispatcher = new EventDispatcher();
public function App()
{
new Window1();
}
}
class AppEvent extends Event
{
public static const DATA_READY:String = "APPEVENT.DATA_READY";
public var data:Object;
public function AppEvent(type:String, data:Object)
{
super(type);
this.data = data;
}
}
class Window1
{
public function Window1()
{
App.eventDispatcher.addEventListener(AppEvent.DATA_READY, onDataReady);
...DO STUFF...
new Window2();
}
private function onDataReady(evt:AppEvent) : void
{
...DO STUFF WITH "evt.data"....
}
}
class Window2
{
public function Window2()
{
...GET DATA FROM SERVER AND PUT IT IN "data"...
App.eventDispatcher.dispatchEvent(new AppEvent(AppEvent.DATA_READY, data));
}
}
</pre>
你是如何創建新窗口的?它是一個新的NativeWindow嗎?或者你是否一般使用該術語來指代應用程序中的另一個屏幕? – JeffryHouser
不知道我是否正確理解了你,但這裏有:子類事件,因此它可以包含數據字段並在「其他」窗口中分派 – Henrik
第一個窗口是自定義窗口擴展窗口(使用myCustomWindo.open(true)創建) 。對於第二個窗口,我彈出彈出PopUpManager.createPopUp(this,TextAreaWindow);其他選項是創建一個窗口作爲第一個謝謝 – Flex60460