小弟剛開始學習C# winforms ,跟著培訓老師視頻做winform的練習出現了一個問題,
一旦datagridview 中combobox 的displaymember和 value member沒有一致,就報錯
這是出現問題的 陳述句
string majorSql = " select distinct tblmajor.majorname,tblmajor.majorID from TestClass" +
" left join tblmajor on TestClass.majorid = tblmajor.majorid";
DataTable majorDt = Sqlhelper.Sqlhelper.ExecuteDataTable(majorSql);
DataGridViewComboBoxColumn cbomajorname = DGVStu.Columns["majorname"] as DataGridViewComboBoxColumn;
cbomajorname.DisplayMember = "majorname";
cbomajorname.ValueMember = "majorid";
cbomajorname.DataSource = majorDt;
這是沒出現問題的陳述句
string majorSql = " select distinct tblmajor.majorname,tblmajor.majorID from TestClass" +
" left join tblmajor on TestClass.majorid = tblmajor.majorid";
DataTable majorDt = Sqlhelper.Sqlhelper.ExecuteDataTable(majorSql);
DataGridViewComboBoxColumn cbomajorname = DGVStu.Columns["majorname"] as DataGridViewComboBoxColumn;
cbomajorname.DisplayMember = "majorname";
cbomajorname.ValueMember = "majorname";
cbomajorname.DataSource = majorDt;
uj5u.com熱心網友回復:
報的錯是datagridviewcomboboxcell值無效uj5u.com熱心網友回復:
https://blog.csdn.net/u013992365/article/details/54292338?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.control這個大哥說的很清楚了。
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.datagridviewcomboboxcolumn?redirectedfrom=MSDN&view=net-5.0。
參照msdn,
一種典型方案是將控制元件 DataGridView 系結到父資料庫表,并將下拉串列系結到相關的子表。 例如,您可以將DataGridView 控制元件系結 到一個 包含列ProductID的Orders 表 ,并將 column DataSource 屬性設定 為包含列 ProductID 和列ProductName 的Products 表 。 在這種情況下,您可以將 "列" "ProductID"的 DataPropertyName 屬性設定為 Orders.ProductID以填充該列的單元值 。 但是,若要在單元和下拉串列中顯示實際產品名稱,則可以 Products 通過將 ValueMember 屬性設定為 "ProductID" 并將 DisplayMember 屬性設定為 "ProductName",將這些值映射到表。
------吐槽下官方msdn因為關鍵字有超鏈接導致 ,段落陳述句不通順 ,我已做了調整----------
總之 cbocol這一列的DataPropertyName 為datagirdview中的系結大表的某一列名稱一致
而這個一列的取值要與cbocol.DataSource 中的一列對應
并且
cbocol.ValueMember 也是與上述兩列 一致
cbocol.DisplayMember 只是一個顯示的映射,不是實際值
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/261201.html
標籤:C#
