많은 열이있는 DataGrid가 있고 그 중 하나의 열에 ItemRenderer를 사용하는 단추 집합이 들어 있습니다. DataGrid 자체에는 패널을 표시하는 클릭 이벤트가 있습니다. 그러나 단추 중 하나를 클릭하면 DataGrid의 클릭 된 이벤트가 실행되지 않아야합니다. 이것을 어떻게 할 수 있습니까? 현재 버튼 클릭과 데이터 그리드 이벤트 모두 버튼을 클릭하면 전달됩니다.Flex 4.6 - 이벤트 처리 충돌
Monitoring.mxml 데이터 격자과 열 중 하나가 세트에게 버튼 저장 의 itemRenderer를 사용하고있다 :
다음은 현재 구현이다. ButtonControlsItemRenderer.mxml 내부
<s:GridColumn width="300" dataField="" headerText="Control Buttons"
itemRenderer="com.example.ItemRenderer.ButtonControlsItemRenderer">
</s:GridColumn>
, 나는 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
}
감사합니다 정말 당신의 도움을 주셔서 감사합니다!
답장을 보내 주셔서 감사합니다. 시도했지만 DataGrid의 클릭 이벤트가 여전히 트리거되었습니다. 나는 버튼 클릭 이벤트 만 전달하면됩니다. – Gzzzy
stopImmediatePropagation을 btn_logButtonHandler와 btn_AdvisoryButtonHandler에 모두 추가 했습니까? – Pan
그래도 여전히 작동하지 않습니다. eventPhase 및 eventCurrentTarget을 인쇄하고 DataGrid의 클릭 이벤트가 먼저 실행되는 것으로 보입니다. – Gzzzy