在DataGridView中填充DataGridViewComboBoxColumn

时间:2019-04-16 18:06:36

标签: vb.net

我有一个带有DataGridView的表单,该表单绑定到继承绑定列表的业务对象。请注意,DGV并非直接绑定到数据库。

我已经使用文本框使它运行良好,但是现在需要在第一个可见列中添加一个ComboBox。

当前,使用VB IDE设置列,而我将第一个可见的设置为DataGridViewComboBoxColumn。

Showing IDE setup column as DataGridViewComboBoxColumn

加载表单时,它将调用一个函数,该函数将DGV的数据源设置为一个对象,然后将每列的dataPropertyName设置为Object-BindingList的各种属性。

        myPurchaseOrderItems.getCPOItems(myPurchaseOrder.id)
        dgvPurchaseOrderItems.AutoGenerateColumns = False
        dgvPurchaseOrderItems.DataSource = myPurchaseOrderItems

        dgvPurchaseOrderItems.Columns(0).DataPropertyName = "cpo_id"
        dgvPurchaseOrderItems.Columns(1).DataPropertyName = "id"
        dgvPurchaseOrderItems.Columns(2).DataPropertyName = "product_code"
        dgvPurchaseOrderItems.Columns(3).DataPropertyName = "description" 
                     etc

前两列不可见。我有一个名为product_code的属性,如果将产品代码列设置为DataGridViewTextBoxColumn,它将填充“产品列”。

但是,当我在IDE中将列设置为DataGridViewComboBoxColumn时。我收到一个System.ArgumentException:DataGridViewComboBoxCell值无效。不足为奇,因为我还没有填充ComboBox。

如何填充?

我见过Adding and Populating DataGridViewComboBoxcolumn to Bound Datagridview

,但这看起来像是在DGV中添加了新列。我不想这样做,因为我已经通过IDE设置了列并为其指定了值。

我可以使用组合框应具有的值生成绑定列表,或者仅使用sql查询的结果。我只是不知道如何填充它。

谢谢!

0 个答案:

没有答案