我正在使用C#4.0 WinForms。我有一個DataGridView,它的所有列都在設計器中設置。 「房間」列是DataGridViewComboBoxColumn列。DataGridView與ComboBox列顯示System.Data.DataRowView而不是DisplayMember
所有單元顯示正確的信息,包括房間列。但是,當我單擊DropDown for Room時,列表中的項目會顯示一些說明System.Data.DataRowView而不是DisplayMember屬性的實際值的行數。
我的代碼如下所示:
DataTable dttRooms = GetDataTable(); //Returns rows with RoomID (GUID) and RoomType (string) columns
List<RoomType> roomType = new List<RoomType> { };
foreach (DataRow dr in dttRooms.Rows)
{
roomType.Insert(roomType.Count, new RoomType { RoomID = Convert.ToString(dr["RoomID"]), RoomName = Convert.ToString(dr["RoomType"]) });
}
DataGridViewComboBoxColumn dgvc;
dgvc = (DataGridViewComboBoxColumn)dgvItems.Columns["Room"];
dgvc.HeaderText = "Room";
dgvc.DataPropertyName = "RoomID";
dgvc.DisplayMember = "RoomName";
dgvc.ValueMember = "RoomID";
dgvc.DataSource = roomType;
dgvItems.DataSource = dtForGridView; //dtForGridView contains a RoomID column with the GUID of the corresponding room.
我已經定義了RoomType類,如下:
public class RoomType
{
public string RoomID { get; set; }
public string RoomName { get; set; }
}
如果我更改數據庫中的項目的房間,它正確地顯示了GridView combobox列如預期。
我已經設置了列的DisplayMember和ValueMember。但是,當我拉下拉下來更改值時,有正確數量的行,但它們似乎忽略了其DisplayMember屬性。我一直在試圖弄清楚我做錯了什麼。我花了好幾個小時來看所有類似的問題,並嘗試了幾乎所有的東西。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
謝謝約翰。欣賞建議。 –