DataGridViewComboBoxColumn自动完成

时间:2011-03-29 22:28:00

标签: vb.net

我的datagridview包含4个包含2个组合框的列。随着datagridview的初始加载,我可以用组合框选择一个项目,但是当我尝试用其他组合框选择一个项目时,我得到一个错误,显示“System.ArgumentException:DataGridViewComboBoxCell Value无效。请更换此默认对话框请处理dataerror事件“。当我点击它时总是会显示此消息。

任何建议都会非常感谢

提前致谢

Tirso的

这是代码

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
    If DataGridView1.CurrentCell.ColumnIndex = 0 Then
        Dim sSQL As String = "SELECT * FROM pr_employees LEFT OUTER JOIN pr_employees_other_info ON pr_employees.employee_id = pr_employees_other_info.employee_id"
        ReadSQL(sSQL)

        Dim dtTable As New DataTable
        dtTable.Load(reader)

        Dim cbo As ComboBox = CType(e.Control, ComboBox)
        cbo.DropDownStyle = ComboBoxStyle.DropDown
        cbo.AutoCompleteMode = AutoCompleteMode.SuggestAppend
        cbo.AutoCompleteSource = AutoCompleteSource.ListItems

        cbo.DataSource = dtTable
        cbo.DisplayMember = "first_name"
        cbo.ValueMember = "employee_id"
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

DGV仅对所有细胞和柱使用一个组合框。

在将其显示在其他单元格上之前,您需要将所有已签名的属性/事件移除到组合框。

使用EditingControlShowing,当控件是组合框时重置属性,然后将其分配给column = 0。

您可以使用自定义DataGridviewComboBoxCell(继承自)来执行相同的操作。

然后,您可以覆盖InitializeEditingControlDetachEditingControl