2009-12-23 2 views
2

내 응용 프로그램에서 나는 RemoteObject에 바인딩 된 DataGrid가 있습니다. DataGrid에는 세부 정보가 포함 된 해당 양식이 있습니다. 사용자가 데이터 격자의 행을 클릭하면 양식은 DataGrid의 selectedItem에서 값으로 채 웁니다.플렉스 : 프로그래밍 방식으로 일부 행을 선택 - selectedItem null입니다

응용 프로그램이로드 될 때 을 내 DataGrid에서 프로그래밍 방식으로 선택하려고합니다. 이 작업을 수행하기 위해

, 나는 예로 validateNow()와 scrollToIndex()를

전화를해야합니다.

dg.selectedIndex = i; dg.validateNow();
dg.scrollToIndex (i);

이 코드를 응용 프로그램 creationComplete 처리기에 넣습니다.

이 모든 것이 효과적입니다. 원하는 행이 강조 표시되고 선택되며 selectedIndex는 i입니다. 문제는 데이터 에 액세스하여 세부 정보 양식을 채울 수 없다는 것입니다. dg.SelectedItem 속성을 검색하려고하면 null입니다.

하나는 프로그래밍 방식으로로드 에 그리드의 일부 행을 선택하고 행의 데이터에 액세스 않습니다 어떻게

?

감사

답변

0

DataGrid를 선택한 항목은 dataProvider 내의 아이템 가리키고 있습니다. DataGrid에서 선택한 항목을 알고 있으면 소스 데이터에서 해당 항목을 사용하여 양식의 초기 채우기를 수행하면됩니다.

+0

덕분에 null.I이 작업을 수행 할 수도 :를 DataGrid.dataProvider [I] 또는 뭔가 – Shuo

8

당신이 DG 데이터를 변경하고 같은 흐름에서 항목을 선택하는 경우, 당신 seleciton이 ListBase로부터의 방법으로 덮어 쓰게됩니다 기본적으로

dg.invalidateList(); 
dg.callLater(setRows, [1]); 

function selRows(indices:Array):void { 
    dg.selectedIndices = indices; 
    dg.validateNow(); 
    dg.scrollToRow(indices[0]); 
} 

사용, 당신은 현재의 GUI 업데이트 후 선택 사항을 설정해야하는 당신 callLater methoad를 사용해야합니다. 하는 dataProvider buddy.But 답장을

+0

GAH! 로 validateNow 내 selectedIndex의를 건드리지했다! 고맙습니다! – aschyiel

+0

대단하군요! 나는 데이터가 변경 이전에 선택한 항목을 저장하고 변경이 끝나면 다시 업데이트해야 비슷한 문제 (공급자 변경에 따라 데이터 그리드 선택 리셋)을했고, 나는 당신의 callLater 솔루션을 사용 할 때까지 작동하지 않았다. 10 배! – Ofir

관련 문제