2016-03-04 87 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事件,可以輕鬆地進行檢查。 你也可以在事件處理程序的某個地方放置一個斷點,並看看你是否達到它。