2012-09-01 80 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會經常做,但設置AutoGenerateColumns爲假,當你不希望它總體上是好的做法)