2012-07-24 4 views
1

양식로드시 DataGridView를 열별로 정렬하려고하지만 예외가 발생했습니다.DataGridView 열 정렬 예외

private void frm_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'dataSetExclusion.Exclude' table. You can move, or remove it, as needed. 
     this.excludeTableAdapter.Fill(this.dataSetExclusion.Exclude); 
     this.dgv.Sort(this.dgv.Columns["ID"], ListSortDirection.Ascending); 
    } 

DataGridView dgv의 열 머리글은 "ID"입니다. DataPropertyName은 "ExcludeID"입니다. 나는 컬럼 이름에 대해 "ID"와 "ExcludeID"를 모두 시도했지만 여전히 예외가 발생했습니다.

Value cannot be null.Parameter name: dataGridViewColumn 
+0

정렬 줄에 중단 점을 설정하고 this.dgv.Columns를 검사하는 경우 목록에 "ID"또는 "ExcludeID"가 표시됩니까? dgv.DataSource를 어디에 설정 했습니까? –

답변

2

시도는 컬럼의 이름 속성을 확인하기 위해, 하나는 잘못된 열을 사용하는하여 DataGridView에 를 구속하지 않았거나 이름.

양식로드시 그리드의 데이터 소스를 바인딩하지 않는 것처럼 보입니다. 당신은 (? dataSetExclusion.Exclude 당신은 그리드에서 원하는 것을 추측)이 같은 뭔가 코드를 변경해야합니다

private void frm_Load(object sender, EventArgs e) 
{ 
    // TODO: This line of code loads data into the 'dataSetExclusion.Exclude' table. You can move, or remove it, as needed. 
    this.excludeTableAdapter.Fill(this.dataSetExclusion.Exclude); 
    this.dgv.DataSource = this.dataSetExclusion.Exclude; 
    this.dgv.Sort(this.dgv.Columns["ID"], ListSortDirection.Ascending); 
} 

열 이름을 확인하는 여러 가지 방법이 있습니다 - 당신은 항상 브레이크 포인트를 배치 할 수 있습니다 메서드를 사용하고 디버거를 살펴 보거나 DataSet Designer를 살펴보십시오. 그리드의 열 이름은 디자이너의 열 이름과 일치합니다 (양식 디자이너 열과 데이터 속성 이름을 사용하는 경우 이름 대신 폼 디자이너에서 찾으십시오).

Name과 HeaderText는 일치 할 필요가 없으므로 HeaderText를 사용하면 제대로 작동하지 않습니다.

0

열의 이름이 텍스트 표현과 다를 수 있습니다. 설명서에 따르면 해당 인덱서는 Name 속성을 찾고 HeaderText 속성을 찾고 있지 않습니다. 열 디자이너는 이름을 변경하거나 현재 이름을 볼 수 있도록해야합니다. 이 문제의 두 가지 원인이 있습니다

enter image description here

0

아래 그림처럼