用 subsonic & vb.net 填充 datagridview 组合框列

Posted

技术标签:

【中文标题】用 subsonic & vb.net 填充 datagridview 组合框列【英文标题】:populating a datagridview combobox column with subsonic & vb.net 【发布时间】:2009-05-14 19:09:33 【问题描述】:

正如标题所说,我正在尝试在 datagridview 中填充组合框列。

这是我目前所拥有的:

Dim lc As System.Web.UI.WebControls.ListItemCollection = _
    DataAccess.Part.GetListItems()

dgvcboPart.DataSource = lc

' This is a standalone combo box and it works ok
cboTest.DataSource = lc

关于我缺少什么的任何建议?

谢谢 托尼·W

【问题讨论】:

【参考方案1】:

我首先建议你将你的 Collection 绑定到一个 BindingSource,然后将 BindingSource 添加到 DataGridView(这样你就知道位置了)

但是绑定 ComboBoxCell 应该非常简单。

假设您有一个包含两列 Id 和 Name 的 DataTable tblCurrency。 您必须将此绑定到您的列(我假设 0 列是您的 DataGridViewColumn)

     dgvcboPart.Columns(0).DataSource = tblCurrency
     dgvcboPart.Columns(0).ValueMember = "Id"
     dgvcboPart.Columns(0).DisplayMember = "Name"

然后您可以将 DataPropertyName 设置为 DataSource 中的属性。

     dgvcboPart.Columns(0).DataPropertyName = "Currency_Id"

小心,tblCurrency.Id 和 Currency_Id 必须是相同的类型(Int32 和 UInt32 不起作用)如果 Currency_Id 的值不在 tblCurrency 中,你会得到一个带有完整 StackTrace 的讨厌的 MessageBox(所以你应该处理 DataError 事件)

【讨论】:

【参考方案2】:
dgvcboPart.DataSource = lc
dgvcboPart.DataBind()

必须调用 databind 方法才能让魔法发生!

【讨论】:

Winforms,而不是 asp.net。所以“DataBind”不是“System.Windows.Forms.DataGridViewComboBoxColumn”的成员,不过谢谢

以上是关于用 subsonic & vb.net 填充 datagridview 组合框列的主要内容,如果未能解决你的问题,请参考以下文章

vb.net 如何让datagridview添加图片列

我正在尝试使用 sql select & vb .net 执行下一个语句

如何在 VB.NET 中按位移位?

在 VB.net 中询问我的语法

vb.net SQL更新查询无法完成

vb.Net & Access 是/否 sql 执行错误