C#DataGridViewComboBoxColumn绑定问题

时间:2010-09-21 09:04:27

标签: c# winforms data-binding datagridview

嘿大家好!我想这是我在StackOverFlow.com上的第一篇文章: - )

我一直有这个问题。 为了简单起见,假设我们有2个名为“books”“categories”的数据库表,其中包含以下模式:

  书(id,title,catId)
  类别(id,catName)

显然,“books”表中的“catId”字段是外键,并指定图书所属的类别。

我已经创建了必要的LinQ to Sql类并创建了必要的bindingSource对象。 我想要做的是显示DataGridView对象中的所有书籍。我希望它有一个名为“Category”的列,其类型为 DataGridViewComboBoxColumn ,其中包含所有现有类别,并且每本书都显示特定书所属的类别。用户可以通过在组合框中选择其他类别来重新分配图书的类别。

我已经成功完成了我想要的 ComboBox ,它可以正常工作。 但是当谈到 DataGridView 时,我无法理解它。

非常感谢任何帮助 到目前为止,我已经花了几天时间想出办法但没有运气: - (

2 个答案:

答案 0 :(得分:8)

这应该有效:

// 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

答案 1 :(得分:0)

我设法通过覆盖相关类中的ToString()方法来做到这一点。 对于您而言,您可以添加类别的定义:

public override string ToString()
{
   return this.catName
}