방금 발생한 문제를 디버깅하기 위해 테스트 프로젝트를 만들었으니 여기에 무슨 일이 벌어지고 있는지 이해할 수 없습니다 ...이 테스트 프로젝트에서는 폼이 하나 있는데, TabControl 및 "DataGridView"(dgvTest)를 tabControl (2 페이지 이상)의 "background"페이지에 추가합니다. 내가 그것을에서 년대 tabPage을 선택하려고 후 (내가 그 AutoGenerateDataBoundColumns를 호출 의미) 내가 이것을 실행하는 경우 DataGridView에는 완전히 초기화 얻을 것이다, 지금사용자 지정된 열을 사용하여 DataGridView를 지연로드
private void Form1_Load(object sender, EventArgs e)
{
dgvTest.DataSource = GetDataSource();
DataGridViewColumn customColumn = new DataGridViewColumn(new DataGridViewTextBoxCell());
customColumn.DataPropertyName = "SampleColumn";
dgvTest.Columns.Insert(dgvTest.Columns["SampleColumn"].Index, customColumn);
//#region Attempt #1
//dgvTest.Columns.Remove("SampleColumn");
//customColumn.Name = "SampleColumn";
//#endregion
#region Attempt #2
dgvTest.Columns["SampleColumn"].Visible = false;
customColumn.Name = "SampleColumnCbo";
#endregion
dgvTest.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
private DataTable GetDataSource()
{
DataTable result = new DataTable();
result.Columns.Add("SampleColumn");
result.Columns.Add("Q");
//no rows needed
return result;
}
: 여기 내가 문제를 재현하는 데 사용했던 코드입니다 ... 어느 시점에서 "CellType 속성이 null이므로 열을 추가 할 수 없습니다."라는 InvalidOperationException이 throw됩니다. 또는 DataGridView 컨트롤의 열 중 하나 이상에 셀 템플릿이 없습니다. "(기본적으로, 똑같은,하지만 나는 초기 상태에서 코드를 최소화하기 전에 초기 프로젝트와 테스트 프로젝트의 초기 단계에서 첫 번째 메시지 만 받았다. 이상한 점은 dgvTest가 첫 번째 tagPage에 배치되거나 직접 Form 자체에 배치되면이 Exception이 발생하지 않는다는 것입니다.
아이디어가 있으십니까? 미리 감사드립니다.
참고 : 근본 원인은 같은 DataTable의 컬럼에 바인딩이 DGV 열이있는 것 같다 : 내가 주석이 'customColumn.DataPropertyName = "SampleColumn을";' 임무, 그것은 모두 괜찮아요 ... 내가 그것을 원했던 것처럼 자동으로 데이터 바인딩되지 않습니다 제외하고. : -s –