DataGrid가 있고 DataProvider를 내 데이터로 설정했습니다. 데이터가 변경되면 DataGrid가 선택된 행을 잃고 스크롤 막대가 위로 이동합니다. 선택 및 스크롤 위치를 어떻게 유지합니까?데이터가 변경 될 때 DataGrid에서 선택을 유지하는 방법은 무엇입니까?
답변
당신은 위치를 유지하려면 : 첫째
var myVertPos:int = new int(myDG.verticalScrollPosition);
코드를 실행 선택된 인덱스
var myidx:int = new int(myDG.selectedIndex);
및 스크롤 위치를 캡처,
어떤에서 함수가 데이터를 변경됩니다 그러면 데이터가 변경되고 위의 단계가 거꾸로됩니다.
myDG.selectedIndex = myidx;
myDG.verticalScrollPosition = myVertPos;
아, 선택한 색인이 DG에있는 항목의 길이를 초과하지 않았는지 확인하고 마지막 색인이 있으면 선택하십시오. 내 경험에 의하면 최대보다 큰 수직 스크롤 위치를 설정하면 최대 값으로 스크롤됩니다.
새 dataProvider가 selectedItem을 다른 인덱스에 넣는 경우 어떻게됩니까? – Robusto
그것은 .. 그 이유는 내가 OP의 의도 (항목을 유지하거나 색인을 유지)를 요청하려고했기 때문에'var myItem : Object = myDG '와 같은 것을 사용하여 아이템을 유지할 수 있다고 생각합니다. selectedItem;과'myDG.selectedItem = myItem;'하지만 나는 많은 테스트를 거치지 않고 그것을 어떻게 작동 시킬지 확신 할 수 없다. 그런 다음 스크롤 위치를 어떻게 든 찾아야합니다. 항목을 유지 관리하는 것이 훨씬 더 복잡합니다 :-) – invertedSpear
내 목록의 항목 수가 변경되지 않고 관련 데이터만으로 충분할 것 같습니다. 감사. –
방법이 있습니다. DataGrid 클래스를 확장하고 String 속성 uniqueIdField를 추가해야합니다.
uniqueIdField의 vaule을 고유 한 데이터 집합의 개체 속성으로 설정합니다.
다음과 같이 set dataProvider 메소드를 대체하십시오. 열이 정렬되지 않으면이 메소드가 작동합니다. FIXED * 이제는 열을 정렬 할 때 올바른 행을 표시하지만 스크롤바가 값에 영향을 미치지 않습니다 (정렬에 영향을주는 속성 중 하나가 변경됨). *
아래 코드는 스크롤바를 올바른 위치로 설정합니다. (: 개체 값) : 보이드 { VAR의 vScroll :
오버라이드 기능 dataProvider의 공개 설정 INT = 0; 우리는 이전 선택 항목 // 재 선택되는지 체크하고 (uniqueIdField.length> 0 & &의 selectedItem = NULL!) 경우 현재 위치보다 저장 {// uniqueIdData = this.selectedItem [uniqueIdField]; vScroll = this.verticalScrollPosition; }
super.dataProvider = value;
if(uniqueIdField.length > 0
&& uniqueIdData != null
&& selectedItems.length <= 1)
{
var에 currentObj : 개체; var found : Boolean = false;
if(dataProvider is ArrayCollection)
{
//find object in dataprovider
for(var i:int=0; i < dataProvider.length; i++)
{
currentObj = dataProvider.getItemAt(i);
if(currentObj[uniqueIdField] == uniqueIdData)
{
this.selectedItem = currentObj;
found = true;
vScroll = this.selectedIndex;
break;
}
}
if(!found)
{
this.selectedItem = null;
uniqueIdData = null;
}
}
// 항목이 선택된 발견되었음을 통지 또는 null this.verticalScrollPosition = vScroll; dispatchEvent (새 ListEvent (ListEvent.변화));
- 1. 데이터가 변경 될 때 전자 메일 트리거
- 2. 데이터가 변경 될 때 값 변환기가 호출되지 않음
- 3. 데이터가 변경 될 때 ListView 행 강조 표시
- 4. 기본 데이터가 변경 될 때 뷰 표시 새로 고침
- 5. 동적으로 변경되는 옵션을 사용하여 양식에서 올바른 선택을 유지하는 방법은 무엇입니까?
- 6. 데이터가 변경 될 때 콤보 상자를 새로 고치는 기본 방법은 무엇입니까?
- 7. WPF Toolkit DataGrid에서 행 선택을 방지하려면 어떻게합니까?
- 8. 선택을 취소 할 때까지 선택 UI 상태를 유지하는 방법은 무엇입니까?
- 9. CoreData 데이터가 백그라운드 스레드에로드 될 때
- 10. ListBox.Item의 크기가 변경 될 때 이벤트 트리거
- 11. 탭이 변경 될 때 탭 활동을 다시로드하는 방법은 무엇입니까?
- 12. 텍스트가 변경 될 때 UIBarButtonItem에주의를 끌 수있는 방법은 무엇입니까?
- 13. 변수의 값이 변경 될 때 이벤트를 트리거하는 방법은 무엇입니까?
- 14. asp.net : 세션에서 데이터가 손실 될 때
- 15. DataGrid에서 열 변경
- 16. 활성화 될 때 현지화 변경
- 17. 주소가 수동으로 변경 될 때 자동으로지도 업데이트
- 18. 데이터가 빠르게 변경되는 경우 Excel과의 연결을 유지하는 방법은 무엇입니까?
- 19. ItemsSource가 변경 될 때 SelectionChanged를 음소거하는 방법
- 20. 데이터가 비동기 적으로 변경 될 때 클래스의 데이터를 반복하는 올바른 방법
- 21. NSManagedObject가 변경 될 때마다 수정 날짜를 설정하는 방법은 무엇입니까?
- 22. 모든 스레드가 완료 될 때까지 JVM을 유지하는 방법은 무엇입니까?
- 23. 데이터가 파싱 될 때까지 디스플레이를 지연시키는 방법은 무엇입니까?
- 24. Cursor가 업데이트 될 때 Listview의 headerView를 업데이트하는 방법은 무엇입니까?
- 25. 필터가 변경 될 때 Datagrid가 업데이트되지 않습니다.
- 26. UIAlertView가 표시 될 때 관찰하는 방법은 무엇입니까?
- 27. 이름 풀을 유지하는 방법은 무엇입니까?
- 28. 텍스트 선택을 구현하는 방법은 무엇입니까?
- 29. 서블릿 세션을 유지하는 방법은 무엇입니까?
- 30. designMode에서 Iframe의 콘텐츠가 변경 될 때 찾기
선택한 항목이 변경된 경우에도 선택한 위치를 유지 하시겠습니까? 또는 선택한 항목을 새 위치에 유지하더라도 유지 관리 하시겠습니까? – invertedSpear