2012-09-01 2 views
0

데이터를 액세스 데이터베이스에서 가져 오는 데 사용하는 DataGridView가 있습니다. 현재 양식이 메인 폼에 있고 양식이 열려있을 때 그리드가 회색으로 표시됩니다.DataGridView 고정 열

버튼을 클릭하면 정보가 열과 함께 나타납니다. 폼이 열릴 때 열이 데이터를 뺀 것을 볼 수 있도록 단추를 클릭하기 전에 열이 있어야합니다.

디자인 모드에서 열을 추가했지만 버튼을 클릭하면 다른 열이 추가됩니다.

현재 코드는 아래와 같습니다.

string sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=Sailing.accdb"; 
OleDbConnection conSailing = new OleDbConnection(sConnection); 
conSailing.Open(); 

string sQueryShipsPort = "Select ShipName, Weight FROM Ships WHERE Inport = True ;"; 
OleDbDataAdapter dataadapter = new OleDbDataAdapter(sQueryShipsPort, conSailing); 
DataSet ds = new DataSet(); 

dataadapter.Fill(ds, "Ships Table"); 
conSailing.Close(); 
dataGridView1.DataSource = ds; 
dataGridView1.DataMember = "Ships Table"; 

답변

0

이 문제를 해결하기 위해 수행해야 할 두 가지 작업이 있습니다. 먼저 데이터 테이블과의 관계를 만드는 열을 지정해야합니다. 두 번째로 데이터 격자에 열을 생성하지 말라고 지시해야합니다. 데이터 소스

데이터 바인딩 된 DataGridView 열 당신은 당신이 열을 편집 할 수있는 옵션이 표시됩니다 디자이너를 사용하여 그리드에 열을 추가합니다. 이것을 선택하면 DataGridViewColumn에 대한 속성 목록이 표시됩니다.

속성은 DataPropertyName입니다.이 속성은 데이터 원본의 어떤 속성을 바인딩 할지를 알려줍니다.

예를 들어 데이터 테이블에 'FirstName'열이 있으면 'FirstName'이되도록 추가 한 표의 이름 열에 DataPropertyName을 설정해야합니다.

자동 생성 열

당신이 당신의 데이터 소스가 데이터 소스를 추가 할 때 DataGridView가 자동으로 당신을 위해 열을 생성하는 것입니다 추가 할 때 더 많은 열을 볼 이유에서 그리드를 중지.

이 기능을 끄려면 DataGridView 속성 AutoGenerateColumns을 false로 설정해야합니다. 디자이너 나 코드를 통해이 작업을 수행 할 수 있습니다.

(때때로 당신은이 작업을 수행 할 필요가 없습니다 - 그냥 DataPropertyName를 설정하면 자주 할 것입니다 것으로 나타났습니다하지만 false로 AutoGenerateColumns을 설정하면 당신은 그것이 일반적으로 좋은 연습을하지 않을 경우)