Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net DataFilter干扰UltraGrid内部UltraCombo上的自动完成_Vb.net_Infragistics - Fatal编程技术网

Vb.net DataFilter干扰UltraGrid内部UltraCombo上的自动完成

Vb.net DataFilter干扰UltraGrid内部UltraCombo上的自动完成,vb.net,infragistics,Vb.net,Infragistics,我在超级网格中有一个超级组合集,自动完成设置为“建议”。UltraCombo的DisplayMember为“Name”,ValueMember为“ID”。我发现,当我将数据过滤器附加到UltraCombo时(我希望在值为零时使其显示为空),如果他们键入一个恰好与ID匹配的数字并开始一个名称,它将自动完成,但基本值从未更改。因此不会触发AfterUpdate或CellChange,当您离开单元格时,它会恢复为空白。如何在自动完成工作的同时仍将零值显示为空白?以下是我的代码(注意,如果您注释掉设置U

我在超级网格中有一个超级组合集,自动完成设置为“建议”。UltraCombo的DisplayMember为“Name”,ValueMember为“ID”。我发现,当我将数据过滤器附加到UltraCombo时(我希望在值为零时使其显示为空),如果他们键入一个恰好与ID匹配的数字并开始一个名称,它将自动完成,但基本值从未更改。因此不会触发AfterUpdate或CellChange,当您离开单元格时,它会恢复为空白。如何在自动完成工作的同时仍将零值显示为空白?以下是我的代码(注意,如果您注释掉设置UltraCombo1.DataFilter的行,更新工作正常,但您会丢失DataFilter):


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

结果表明,这是Infragistics 11.2中的一个错误。我不确定他们在什么时候修复了它,但在15.2版中没有

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