2013-04-09 60 views
0

我已花了大約三個星期試圖找到有關此信息,並沒有成功。 與編輯相關的DGV設置: DGV上的只讀爲假 編輯模式是DGV上的按鍵。Visual C#DataGridView編輯;設置了所有可能的編輯選項;將不會編輯

代碼是在這裏: http://pastebin.com/eCv3iBcF

但是,試圖編輯,什麼都不會發生,盒子剛剛轉顏色從選擇的時候;鼠標不會改變識別文本,擊鍵無效。

這是應該做什麼(至少在我的頭和根據tut): 致電表。 填充DGV。 允許通過按鍵對所選字段進行編輯。

回答

2

問題是,您將BindingSource對象的數據源設置爲SQLDataReader對象。這是一個只讀對象。

DataReader僅限於只讀且只能轉發。也就是, 從數據庫檢索到的信息不能被 DataReader修改,DataReader也不能以隨機順序檢索記錄。 相反,一個DataReader被限制在 時間 順序訪問記錄,從第一個到最後一個,一個紀錄。」

您應該使用DataAdpater,而不是和填充的DataTable。 。

您然後使用數據表作爲數據源爲您的BindingSource

Alternativley,你罐剔你的DataReader這樣的: -

using(SqlDataReader reader = command.ExecuteReader()) 
      { 
       DataTable data = new DataTable(); 
       data.Load(reader); 

      } 

希望這有助於。

+0

非常感謝你,現在是編輯。 – 2013-04-09 19:15:09

0

更改編碼像下面......它會幫助你...

string query = "SELECT * FROM catalog"; 
using (MySqlConnection con = new MySqlConnection (connectionString)) 
{ 
con.Open(); 
using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query , con)) 
{ 
    DataSet ds = new DataSet(); 
    dataAdapter.Fill(ds); 
    dataGridView1.DataSource = ds.Tables[0]; 
} 
con.Close(); 
} 
+0

綁定源不會使其成爲只讀,DataReader對象爲只讀的事實使其不可編輯。你的代碼可以工作,但是不需要去掉BindingSource。 – Derek 2013-04-09 17:41:22

+0

謝謝您,此代碼和上面提供的信息使DGV現在可編輯。 – 2013-04-09 19:16:08

+0

@LouisMilotte:這段代碼解決了你的問題......? – Pandian 2013-04-10 09:01:01