我有一个包含搜索字段的表单。 当用户按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