繁体   English   中英

C# DataGridViewComboBoxColumn 绑定问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM