2011-01-13 115 views
0

我有一個DataGridView綁定到綁定到從Oracle數據庫加載的數據表的綁定源。 (順便說一句,我不認爲數據庫連接可能會導致此)datatable.GetChanges()總是顯示DataGridView的第一行

我也DataGridViewComboBoxColumn綁定到一類的人(只有「有」的ID和名稱),所以我可以顯示/允許編輯名稱而不是ID。我的問題是現在,在數據綁定完成後,c#自動「選擇」DGV的第一個單元格 - 請參閱附加的圖片。

alt text

我也有使用這小小的一段代碼,以確保數據的完整性:

private void _table_ColumnChanging(object sender, DataColumnChangeEventArgs e) 
    { 
     if (e.Column == _table.Columns["NEEDED_ID"]) 
     { 
      if (e.ProposedValue == null) 
      { 
       e.ProposedValue = System.DBNull.Value; 
      } 
     } 
    } 

現在用這個_table.GetChanges()總是返回DGV的第一行是「修改「但價值並沒有真正改變 - 它只是DBNull而不是null。我能否以某種方式避免自動選擇第一個單元格或如何避免此行爲?

編輯:與此同時,我發現將第一列更改爲不可編輯修復此問題。但這只不過是一種解決方法。我真的很感激爲此得到一個工作解決方案。

編輯2:我也有 '頂部' 的一個空的對象組合框,數據源

DtoPerson blankPerson = new DtoPerson(); 
    blankPerson.Name = String.Empty; 
    blankPerson.PersonRollenId = -1; 
    personList.Add(blankPerson); 
+0

關於編輯2:這不完全是一個空對象,您應該將您的blankPerson的主鍵設置爲DBNull.Value。雖然國際海事組織,更簡單的方法來解決您的問題,而不觸及前端的任何東西是隻使用UNION SELECT NULL,NULL在您的查詢,ADO.NET會自動將這些NULL轉換爲相應的.NET類型(即DBNull.Value);我使用了相同的技術,它的工作原理。但首先,讓您的DtoPerson的主鍵爲對象類型,以便您的ORM/DAL可以爲其分配DBNull – 2011-01-25 23:45:09

回答

0

嘗試將空在DataGridViewComboBoxColumn的DataSource。例如:

SELECT id, description 
FROM yourTable 
UNION 
SELECT NULL, NULL 
+0

我在數據源中有一個空Object(請參閱我的編輯) – basti 2011-01-21 13:10:02

0
GridViewName.ClearSelection(); 
+0

這裏不會工作:( – basti 2011-01-13 16:46:15

相關問題