【发布时间】:2013-06-20 11:04:06
【问题描述】:
我有一个包含许多列的数据网格,其中一个列包含一组使用 ItemRenderer 的按钮。数据网格本身有一个显示面板的单击事件。但是,当单击任何按钮时,不应执行数据网格的单击事件。我怎样才能做到这一点?目前,当按钮被点击时,按钮点击和数据网格事件都会被调度。
下面是当前的实现:
Monitoring.mxml,其中有一个 datagrid,其中一列使用 ItemRenderer 来存储一组按钮。
<s:GridColumn width="300" dataField="" headerText="Control Buttons"
itemRenderer="com.example.ItemRenderer.ButtonControlsItemRenderer">
</s:GridColumn>
在 ButtonControlsItemRenderer.mxml 中,我有 2 个按钮 - 日志和咨询
<s:Button id="btn_log" width="49" height="35" label="Log"
click="btn_log_clickHandler(event)"/>
<s:Button id="btn_Advisory" width="81" height="35" label="Advisory"
click="btn_Advisory_clickHandler(event)"/>
这两个按钮通过这些功能将自定义事件发送到数据网格。
protected function btn_log_clickHandler(event:MouseEvent):void {
var myEventObject:Event = new Event("logButtonEventRenderer",true);
dispatchEvent(myEventObject);
}
protected function btn_Advisory_clickHandler(event:MouseEvent):void{
var myEventObject1:Event = new Event("AdvisoryButtonEventRenderer",true);
dispatchEvent(myEventObject1);
}
已声明事件元数据并已在 Monitoring.mxml 中添加事件侦听器:
[Event(name="logButtonEvent", type="com.example.GetSelectedSystemEvent")]
[Event(name="AdvisoryButtonEvent", type="flash.events.Event")]
dg_Events.addEventListener("logButtonEventRenderer",btn_logButtonHandler);
dg_Events.addEventListener("AdvisoryButtonEventRenderer",btn_AdvisoryButtonHandler);
protected function btn_logButtonHandler(event:Event):void{
// Do something;
}
protected function btn_AdvisoryButtonHandler(event:Event):void{
// Do something
}
//Datagrid Click Event
protected function dg_Events_gridClickHandler(event:GridEvent):void {
// Display Panel
}
非常感谢您的帮助!
【问题讨论】:
标签: actionscript-3 apache-flex datagrid event-handling flex4