DataFilter 干扰 UltraCombo 上的 AutoComplete Inside UltraGrid

DataFilter Interferes with AutoComplete on UltraCombo Inside UltraGrid

我在 UltraGrid 中设置了一个 UltraCombo,自动完成设置为 "Suggest"。 UltraCombo 具有 "Name" 的 DisplayMember 和 "ID" 的 ValueMember。我发现,当我将 DataFilter 附加到 UltraCombo 时(我想让它在值为零时显示为空白),如果他们键入的数字恰好与 ID 匹配并且也以名称开头,它将执行自动完成,但基础值永远不会改变。因此,不会触发 AfterUpdate 或 CellChange,当您离开单元格时,它会恢复为空白。我怎样才能让自动完成工作并仍然将零值显示为空白?这是我的代码(请注意,如果您注释掉设置 UltraCombo1.DataFilter 的行,更新工作正常,但您会丢失 DataFiltering):

Imports Infragistics.Win.UltraWinGrid
Imports Infragistics.Win

Public Class Form1

    Public Sub New()
        InitializeComponent()
        Dim datatableCombo = New DataTable
        datatableCombo.Columns.Add("ID", GetType(Integer))
        datatableCombo.Columns.Add("Name", GetType(String))
        datatableCombo.Rows.Add({1, "123"})
        datatableCombo.Rows.Add({2, "234"})
        datatableCombo.Rows.Add({3, "456"})

        UltraCombo1.DataFilter = New MyDataFilter()
        UltraCombo1.DataSource = datatableCombo
        UltraCombo1.ValueMember = "ID"
        UltraCombo1.DisplayMember = "Name"

        Dim position As Integer = 0
        UltraCombo1.DisplayLayout.Bands(0).Columns("ID").Hidden = False
        UltraCombo1.DisplayLayout.Bands(0).Columns("ID").Header.VisiblePosition = position
        position += 1
        UltraCombo1.DisplayLayout.Bands(0).Columns("Name").Hidden = False
        UltraCombo1.DisplayLayout.Bands(0).Columns("Name").Header.VisiblePosition = position
        position += 1

        Dim datatableGrid = New DataTable
        datatableGrid.Columns.Add("ID", GetType(Integer))
        datatableGrid.Columns.Add("Name", GetType(String))
        UltraGrid1.DataSource = datatableGrid

        UltraGrid1.DisplayLayout.GroupByBox.Hidden = True
        UltraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.True
        UltraGrid1.DisplayLayout.Override.AllowAddNew = AllowAddNew.TemplateOnBottom

        UltraGrid1.DisplayLayout.Bands(0).Columns("ID").EditorComponent = UltraCombo1
        UltraGrid1.DisplayLayout.Bands(0).Columns("ID").CellClickAction = CellClickAction.EditAndSelectText
        UltraGrid1.DisplayLayout.Bands(0).Columns("ID").Style = ColumnStyle.DropDownValidate
    End Sub

    Public Class MyDataFilter
        Implements Infragistics.Win.IEditorDataFilter

        Public Function Convert(ByVal convertArgs As Infragistics.Win.EditorDataFilterConvertArgs) As Object Implements Infragistics.Win.IEditorDataFilter.Convert
            ' Shouldn't affect anything?
            convertArgs.Handled = False
            Return Nothing
        End Function
    End Class

End Class

您需要将 AutoCompleteMode 设置为网格列而不是 Ultracombo。当 UltraCombo 被设置为 EditorComponent 时,网格使用它的编辑器。如果在这种情况下将 AutoCompleteMode 设置为组合,它不会在网格中产生任何影响。 如果将 AutoCompleteMode 设置为网格的列,则不需要将 DataFilter 设置为组合。

原来这是 Infragistics 11.2 中的错误。我不确定他们在什么时候修复了它,但版本 15.2 不会发生这种情况。