我一直有这个问题。 为了简单起见,假设我们有2个名为“books”和“categories”的数据库表,其中包含以下模式:
书(id,title,catId)
类别(id,catName)
显然,“books”表中的“catId”字段是外键,并指定图书所属的类别。
我已经创建了必要的LinQ to Sql类并创建了必要的bindingSource对象。 我想要做的是显示DataGridView对象中的所有书籍。我希望它有一个名为“Category”的列,其类型为 DataGridViewComboBoxColumn ,其中包含所有现有类别,并且每本书都显示特定书所属的类别。用户可以通过在组合框中选择其他类别来重新分配图书的类别。
我已经成功完成了我想要的 ComboBox ,它可以正常工作。 但是当谈到 DataGridView 时,我无法理解它。
非常感谢任何帮助 到目前为止,我已经花了几天时间想出办法但没有运气: - (
答案 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
}