2016-03-04 112 views
1

我有以下的应用程序代码:UltraCombo过滤器不起作用

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({0, ""}) 
     datatableCombo.Rows.Add({1, "123"}) 
     datatableCombo.Rows.Add({2, "234"}) 
     datatableCombo.Rows.Add({3, "456"}) 

     UltraCombo1.DataSource = datatableCombo 

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

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

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

    Private Sub UltraCombo1_InitializeLayout(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles UltraCombo1.InitializeLayout 
     UltraCombo1.ValueMember = "ID" 
     UltraCombo1.DisplayMember = "Name" 

     Dim band As UltraGridBand = Me.UltraCombo1.DisplayLayout.Bands(0) 

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

     band.Override.AllowRowFiltering = DefaultableBoolean.False 
     band.Override.RowFilterMode = RowFilterMode.AllRowsInBand 

     band.ColumnFilters("ID").FilterConditions.Clear() 
     band.ColumnFilters("ID").FilterConditions.Add(FilterComparisionOperator.NotEquals, 0) 
    End Sub 

End Class 

我相信这应该让这个组合框不显示零行,除非你实际键入一个零。但是当我运行它时,它确实显示零行。我的代码有问题吗?

回答

1

你是对的。该代码应该从下拉列表中隐藏零。如果您没有真正处理组合的InitializeLayout事件,则可能出现此错误的一个可能原因。您可以通过打开设计器,选择组合并检入属性窗口,如果UltraCombo1_InitializeLayout被选为InitializeLayout事件,可以轻松地进行检查。 你也可以在事件处理程序的某个地方放置一个断点,并看看你是否达到它。