![](/img/trans.png)
[英]C# binding datagridviewcomboboxcolumn to list display, formatting, preferred Size error
[英]C# DataGridViewComboBoxColumn binding problem
大家好! 我想這是我在 StackOverFlow.com 上的第一篇文章:-)
我已經有一段時間遇到這個問題了。 為簡單起見,假設我們有 2 個名為“books”和“categories”的數據庫表,其架構如下:
書籍(ID,標題,catId)
類別(ID,貓名)
顯然, “ books”表中的“catId”字段是外鍵,指定一本書所屬的類別。
我已經創建了必要的 LinQ to Sql 類並創建了必要的 bindingSource 對象。 我想要做的是在 DataGridView 對象中顯示所有書籍。 我希望它有一個名為“Category”的列,它是DataGridViewComboBoxColumn類型,包含所有現有的類別,並為每本書顯示特定書籍所屬的類別。 用戶可以通過在組合框中選擇另一個類別來重新分配書籍的類別。
我已經設法用ComboBox做我想做的事,而且它按我的意願工作。 但是當涉及到DataGridView 時,我就是想不通。
任何幫助將不勝感激我花了幾天時間想辦法但到目前為止沒有運氣:-(
這應該有效:
// create the column (probably better done by the designer)
DataGridViewComboBoxColumn categoryColumn = ...
// bind it
categoryColumn.DataSource = db.Categories.ToList();
categoryColumn.DisplayMember = "catName"; // display category.catName
categoryColumn.ValueMember = "id"; // use category.id as the identifier
categoryColumn.DataPropertyName = "catId"; // bind the column to book.catId
我設法通過覆蓋相關類中的 ToString() 方法來做到這一點。 對於您的情況,您可以添加類別的定義:
public override string ToString()
{
return this.catName
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.