2016-03-03 1 views
1

У меня есть UltraCombo, установленный внутри UltraGrid, с автозавершением, установленным в «Suggest». У UltraCombo есть DisplayMember из «Name» и ValueMember «ID». Я обнаружил, что когда я прикрепляю DataFilter к UltraCombo (я хотел бы, чтобы он выглядел пустым, когда значение равно нулю), если они набирают цифру, которая соответствует идентификатору, а также запускает имя, оно выполнит автозаполнение, но базовое значение никогда не будет изменено. Таким образом, не запускается AfterUpdate или CellChange, и когда вы покидаете ячейку, она возвращается к пустой. Как я могу работать AutoComplete и все еще показывать нулевое значение как пустое? Вот мой код (Обратите внимание, если вы закомментировать строку, где UltraCombo1.DataFilter установлен, обновления отлично работает, но вы потеряете DataFiltering):DataFilter вмешивается с автозаполнением на UltraCombo Inside UltraGrid

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 

ответ

0

Оказывается, это была ошибка в Infragistics 11.2. Я не уверен, в какой момент они исправили это, но этого не происходит с версией 15.2.

1

Вам нужно установить AutoCompleteMode в столбец сетки, а не к Ultracombo. Когда UltraCombo установлен как EditorComponent, сетка использует свой редактор. Если вы установите AutoCompleteMode в комбо в этой ситуации, он не имеет никакого эффекта в сетке. Если вы установите AutoCompleteMode в столбец сетки, вам также не понадобится устанавливать DataFilter в комбо.

Смежные вопросы