【问题标题】:Responding to ItemClick events in rows, not the headers响应行中的 ItemClick 事件,而不是标题
【发布时间】:2009-05-13 23:12:12
【问题描述】:

我有一个响应 itemClick 事件的功能数据网格。一切正常,除了它还会在单击标题时触发 itemClick 事件。因此,它们不会对网格数据进行排序,而是触发改变状态的事件。我只想让点击事件响应被点击的行,而不是标题。

我到处搜索并翻阅我的书,我看到的每个示例似乎都有效,所以我想知道我在这里做错了什么:

<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>

编辑:

这里真正的问题是我的缓存设置。我正在使用具有单击事件而不是 itemClick 的缓存版本。所以 click 事件会响应网格上的所有点击,并且 itemClick 会根据需要执行,我需要做的就是关闭我的缓存。我是笨蛋,但感谢您的帮助。

【问题讨论】:

    标签: apache-flex datagrid flex3


    【解决方案1】:

    如何在您的事件处理程序中添加以下内容?

    if (event.rowIndex < 0) 
      return;
    

    【讨论】:

    • 谢谢,这很有魅力!但事实证明,主要的关键是我有一个缓存的模板,它有一个点击事件而不是 itemClick,所以如果我点击并关闭缓存,你的解决方案将起作用 LOL 缓存关闭 itemClick 工作正常。不过谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2016-03-10
    相关资源
    最近更新 更多