2011-08-15 4 views
1

XtraGrid의 데이터 소스가 다시 할당 될 때 확장 된 그룹화를 유지하는 데 문제가 있습니다.DevExpress XtraGrid SaveGridLayout

BACKGROUND

형태는 왼쪽과 오른쪽의 수직 그리드에 XtraGrid있다. XtraGrid는 양식의 컨트롤러입니다.

사용자가 그룹 헤더로 열 (예 : 고객)을 드래그합니다. 그런 다음 고객을 확장하여 주문 헤더 세부 정보를 봅니다. 그런 다음 사용자는 다음 중 하나를 수행합니다.

- 주문 중 하나를 클릭하면 주문 세부 정보가 데이터베이스에서 가져오고 양식의 오른쪽에 수직 그리드가 채워집니다. 사용자가 수정 한 다음 변경.

또는

- 클릭은의 사용자가 작성하고 저장 할 수있는 빈 수직 그리드를 표시하는 메뉴에서 새로 만들기를 추가합니다.

업데이트 또는 삽입 후 페이지의 왼쪽에있는 XtraGrid를 채우는 데이터 소스가 완전히 갱신됩니다. 그리드의 데이터 소스 속성에 할당 된 DataTable을 반환하는 데이터베이스에 대해 다른 쿼리가 실행됩니다 ; 다음 초점은 업데이트 된 행 또는 새로 삽입 된 행으로 설정 : 그러나

DevExpress.XtraGrid.Views.Base.ColumnView vw; 
    vw = MyXtraGrid.DefaultView as DevExpress.XtraGrid.Views.Base.ColumnView; 
    // <snip> routine to determine the row 
    vw.FocusedRowHandle = i 

.....

내가 사용자의 확장 된 모든 고객의 확대를 마칠.

private void SaveGridLayout() 
    { 
    (ControllerList as DevExpress.XtraGrid.GridControl).MainView.SaveLayoutToStream(GridLayoutStream);  
    } 

과 그리드의 데이터 소스가 업데이트 또는 삽입 및 포커스 행 후 다시 할당 된 재설정 된 후, 나는 호출 RestoreGridLayout 방법 : 그래서, 저장하거나 삽입하기 전에, 나는 SaveGridLayout 메소드를 호출 :

private void RestoreGridLayout() 
{ 
(ControllerList as DevExpress.XtraGrid.GridControl).MainView.RestoreLayoutFromStream(GridLayoutStream); 
} 

GridLayoutStream BTW는, 폼 범위의 변수이다.

하지만이 방법은 효과가 없습니다. 확장 된 그룹이 폐쇄되고 있습니다. 내가 잘못한 일이 누구에게나 명백한 것인가?

감사

답변

1

내가 잘못 아니에요 경우, XtraGrid 확장 그룹 행에 대한 정보를 보존하지 않습니다. 이 제한 사항을 해결하려면 How to preserve the XtraGrid View state 문서의 접근 방식을 사용하십시오.

+0

감사합니다, platon, 도움. – Tim