2011-04-23 5 views
0

나는 selectionMode="multipleRows"의 스파크 데이터 그릿을 가지고 있습니다.Flex 4.5 Spark DataGrid - selectionChange 핸들러에서 클릭 한 열 감지

데이터 그리드에 3 개의 열이 있습니다.

사용자의 클릭이 행의 세 번째 열에 해당 할 때 행 선택을 원하지 않습니다.

행 선택은 처음 두 열 중 하나를 클릭 한 경우에만 발생해야합니다.

어떻게해야합니까? DataGrid에 대해 selectionChanging 이벤트가 있지만 처리기에서받은 GridSelectionEvent 개체가 클릭이 발생한 열에 대한 정보를 제공하지 않는 것으로 보입니다.

감사합니다.

답변

0

나는 이것을 알아 냈습니다. 이것이 Spark DataGrid의 버그인지 잘 모르겠습니다. 다음은 확실히 해킹이며 깨끗하지 않습니다. DataGridselectionMode이 이외의 경우

const columnIndex:int = isCellSelection ? event.columnIndex : -1; 

이 라인은 columnIndex-1로 설정되게되어 다음 DataGrid.as 파일의 grid_mouseDownHandler 함수에서

은 광고가 GridSelectionMode.SINGLE_CELL 또는 GridSelectionMode.MULTIPLE_CELLS. 원래 질문에서 언급했듯이 이 GridSelectionMode.MULTIPLE_ROWS이되도록 DataGrid가 필요합니다.

DataGrid를 하위 클래스로 분류하고 grid_mouseDownHandler (기본적으로 전체 기능을 복사하여 붙여 넣기)을 다시 구현했습니다. 위의 줄만 변경하여 항상 columnIndexevent.columnIndex에 할당했습니다.

는 (나는 또한 그 기능 보호 또는 mx_internal 있었기 때문에 내 하위 클래스를 통해 grid_mouseDownHandler에 의해 참조 된 몇 가지 더 많은 기능을 복사했다. ( toggleSelection, extendSelection, isAnchorSet)

다음, selectionChanging 이벤트 핸들러는, 그냥 다음을 수행 할 수 :

if(2 == event.selectionChange.columnIndex) 
{ 
    event.preventDefault(); 
} 

내가이 깨끗한 해결책이 아니다 실현을하지만, 내가 coul 최고입니다 생각해. 어쩌면 누군가가 더 나은 해결책을 제시 할 수 있을까요?