我有一個DataGridView綁定到綁定到從Oracle數據庫加載的數據表的綁定源。 (順便說一句,我不認爲數據庫連接可能會導致此)datatable.GetChanges()總是顯示DataGridView的第一行
我也DataGridViewComboBoxColumn綁定到一類的人(只有「有」的ID和名稱),所以我可以顯示/允許編輯名稱而不是ID。我的問題是現在,在數據綁定完成後,c#自動「選擇」DGV的第一個單元格 - 請參閱附加的圖片。
我也有使用這小小的一段代碼,以確保數據的完整性:
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);
關於編輯2:這不完全是一個空對象,您應該將您的blankPerson的主鍵設置爲DBNull.Value。雖然國際海事組織,更簡單的方法來解決您的問題,而不觸及前端的任何東西是隻使用UNION SELECT NULL,NULL在您的查詢,ADO.NET會自動將這些NULL轉換爲相應的.NET類型(即DBNull.Value);我使用了相同的技術,它的工作原理。但首先,讓您的DtoPerson的主鍵爲對象類型,以便您的ORM/DAL可以爲其分配DBNull – 2011-01-25 23:45:09