2011-06-12 2 views
2

2 개의 DataGridView가 있는데, 일종의 MasterDetail 테이블입니다. Detail DataGridView에 "dgw"라는 문제가 있습니다. 그것의 DataSource는 datatable, dgw.DataSource=DataTable;입니다. 코드에서 변경 이름 같은 열을 사용하여 일부 열을 추가하고 열의 유형을 변경하고 열의 유형을 변경하고 일부 열을 보이지 않게합니다.DataSource 새로 고침 후 DataGridview의 "스키마"를 유지하는 방법

문제는 다시 dgw의 DataSource를 다시 설정하면 문제가 발생합니다. 행이 Master DataGridView에서 변경되면 dgw의 열이있는 모든 작업이 중단되고 변경 한 내용이없는 "못생긴"열이 표시됩니다.

이것은 dgw의 DataSource를 새로 고치는 방법이며, MasterDataGridView의 모든 행 변경시 코드가 호출됩니다.

dgw.DataSource = typeof(DataTable); 
dgw.DataSource = GetVCVDataSource(dataTable); 

몇 가지 해결책이 있으며 첫 번째 줄에서 작업해야한다고 생각했지만 아이디어를 얻지 못했을 것입니다. dgw.DataSource = null;이 나오기 전에는 데이터 소스를 할당하는 동안 발생한 이벤트를 해제하는 데 사용했습니다.

몇 가지 쉬운 솔루션이 있어야한다고 생각하지만 해결하지 못합니다.

감사합니다.

+0

왜 그냥 데이터 그리드에 서식 않는 방법 당신은 당신이 그리드를 다시 포맷하는 메소드를 호출 데이터 소스를 설정할 때마다 작성 해달라고? –

+0

나는 그것이 정확한 해결책이 아니라고 확신하기 때문에. 당신은 그것을 반복해서해야만합니다. 마크 그래벨은 제가 길을 찾도록 도왔습니다. – pesaak

답변

1

나는 첫 번째 줄이 너를 해치고 있다고 의심한다. 다음이 더 적합 할 것이다 : 중간에 다른 유형에 대해 걱정할 필요없이 바인딩됩니다

xx.DataSource = null; 
xx.DataSource = GetVCVDataSource(dataTable); 

.

또한,에서 어떤 시점 이전 (한 번 만) :

xx.AutoGenerateColumns = false; 
+0

감사합니다. 나는 그것이 어리 석다는 것을 알았다! 조용한 복잡한 코드의 일부로 dgw.AutoGenerateColumns = false;를 설정하는 것을 잊었습니다. Btw. DataSource null 또는 typeof (DataTable)를 설정하면이 두 경우 모두 제대로 작동하는 것처럼 보입니다. – pesaak