0

データソースとしてデータテーブルがあるDevExpressGridViewがあります。これで、イベントを使用してビューをフィルター処理するために使用される非表示の列ができ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.HandledTruee.HandledTruee.HandledTrue

于 2013-04-01T09:11:35.943 に答える