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는, 폼 범위의 변수이다.
하지만이 방법은 효과가 없습니다. 확장 된 그룹이 폐쇄되고 있습니다. 내가 잘못한 일이 누구에게나 명백한 것인가?
감사
감사합니다, platon, 도움. – Tim