![](/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.