我有一个响应itemClick事件的功能数据网格。一切正常,除了它还会在单击标题时触发itemClick事件。因此,不是对网格数据进行排序,而是触发改变状态的事件。我想只让click事件响应被点击的行,而不是标题。
我到处搜索并搜遍了我的书籍,我见过的每一个例子似乎都有用,所以我想知道我在这里做错了什么:
<mx:Script>
<![CDATA[
[Bindable]
public var acPrograms:ArrayCollection;
private function showGameDetail(event:ListEvent):void {
var programEvent:ProgramsEvent = new ProgramsEvent(ProgramsEvent.SHOW_DETAIL);
programEvent.selectedProgram = TvPrograms( event.currentTarget.selectedItem );
dispatchEvent(programEvent);
currentState = "details";
}
]]>
</mx:Script>
<mx:DataGrid id="gamesGrid" height="270" dataProvider="{acPrograms}"
itemClick="showGameDetail(event);">
<mx:columns>
<mx:DataGridColumn headerText="Date" dataField="dateOutput" width="90" />
<mx:DataGridColumn headerText="Time" dataField="startTime" width="70" />
<mx:DataGridColumn headerText="Title" dataField="subTitle" width="360" />
<mx:DataGridColumn headerText="Channel" dataField="channel" width="80" />
<mx:DataGridColumn headerText="Provider" dataField="provider" width="100" />
</mx:columns>
</mx:DataGrid>
编辑:
这里真正的问题是我的缓存设置。我正在使用具有click事件而不是itemClick的缓存版本。因此,click事件会响应网格上的所有点击,而itemClick会根据需要进行响应,我所需要的只是关闭我的缓存。对我来说是笨蛋,但感谢你的帮助。
答案 0 :(得分:2)
如何在事件处理程序中添加以下内容?
if (event.rowIndex < 0)
return;