2009-05-13 12 views
0

itemClickイベントに応答する機能的なデータグリッドがあります。すべてが機能しますが、ヘッダがクリックされたときにitemClickイベントがトリガされる点が異なります。そのため、グリッドデータを並べ替える代わりに、イベントをトリガして状態を変更します。私は、クリックイベントがヘッダーではなく、クリックされた行にしか反応しないようにしたい。ヘッダーではなく行のItemClickイベントに応答する

私はどこにでもGoogleで検索し、私の本を通じて掘って、私が見てきたすべての例が動作しているようですので、私はここで間違ってやっているかと思っていています

<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は必要に応じて、キャッシュをオフにする必要があります。ボーンヘッドは私のところにいるが、助けてくれてありがとう。

答えて

2

どのようにあなたのイベントハンドラに以下の追加について?

if (event.rowIndex < 0) 
    return; 
+0

おかげで、これは魅力のように働きました!それは主キーが判明したのは、itemClickの代わりにclickイベントを持つキャッシュされたテンプレートがあったからだ。あなたの解決策はうまくいくだろう。クリックしてキャッシュをオフにして、LOLをオフにする。しかし、ありがとう! – ethyreal

関連する問題