2013-03-29 48 views
0

我有DevExpress GridView我有一個數據表作爲數據源。現在我有一個隱藏列,用於使用CustomFilterRow事件過濾視圖。現在的問題是,當用戶放入任何過濾器時,它會被忽略,因爲CustomFilterRow事件中的e.Handled事件設置爲True。我想要的是使用用戶的過濾器字符串來過濾視圖,保持我的過濾器處於活動狀態,即不管用戶提供什麼過濾器,它都會添加我最初在CustomFilterRow事件中提供的過濾器算法。添加ActiveFilterString子句到DevExpress GridView CustomFilterRow

Private Sub GridView_Dept_CustomRowFilter(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.RowFilterEventArgs) Handles GridView_Dept.CustomRowFilter 
    If IsLoadComplete = False Then 
     Exit Sub 
    End If 
    Dim view As GridView = CType(sender, GridView) 
    Dim dv As DataView = view.DataSource 
    If Not IsEqual(dv(e.ListSourceRow).Item("EXUSER"), Me.GridViewUser.GetFocusedRowCellValue("EXUSER")) Then 
     e.Visible = False 
     e.Handled = True 
    End If 
End Sub 

的DevExpress - 9.2的.Net - 2.0 VS - 2008年

附: - 由於公司政策,我不能升級到更高版本。

回答

0

剛剛發現了答案。如果我將e.Handled =True作爲事件中的最後一行,並始終得到執行,那麼用戶自定義過濾器始終會被忽略,但如果我在自定義條件塊中寫入e.Handled = True,則一切工作正常。

因此,如果事件參數對象中有e.Handled屬性的任何事件,請注意將e.Handled屬性設置爲True。您應該始終確保只在滿足覆蓋默認功能的情況下將e.Handled屬性設置爲True。在函數結尾處將e.Handled屬性設置爲True將始終覆蓋默認功能,這可能不是所需的行爲。