0

我有 DevExpress GridView,我有一个数据表作为数据源。现在我有一个隐藏列,用于使用CustomFilterRow事件过滤视图。现在的问题是,当用户放入任何过滤器时,它会被忽略,因为e.Handled事件CustomFilterRow设置为True. 我想要的是还使用用户的过滤器字符串过滤视图,使我的过滤器保持活动状态,即无论用户提供什么过滤器,它都将始终添加我最初在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

PS - 由于公司政策,我不允许升级到更高版本。

4

1 回答 1

0

才知道答案。如果我将 写e.Handled =True为事件的最后一行,它总是被执行,那么用户自定义过滤器总是被忽略,但如果我e.Handled = True在我的自定义条件块中写入,那么一切正常。

因此,任何在事件参数对象中具有e.Handled属性的事件,请小心将e.Handled属性设置为True. 您应该始终确保将e.Handled属性设置为True仅在满足覆盖默认功能的条件内。将e.Handled属性设置True为函数末尾将始终覆盖默认功能,这可能不是所需的行为。

于 2013-04-01T09:11:35.943 回答