57 lines
2.7 KiB
VB.net
57 lines
2.7 KiB
VB.net
Imports DevExpress.Data.Helpers
|
|
Imports DevExpress.Data.Filtering
|
|
Imports DevExpress.XtraGrid.Views.Base
|
|
Imports System.Reflection
|
|
|
|
Namespace LookupGrid
|
|
Public Class LookupGridView
|
|
Inherits DevExpress.XtraGrid.Views.Grid.GridView
|
|
|
|
Private _simpleSearch As Boolean
|
|
Public Sub New()
|
|
Me.New(Nothing)
|
|
End Sub
|
|
Public Property SimpleSearch() As Boolean
|
|
Get
|
|
Return _simpleSearch
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
_simpleSearch = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Sub New(ByVal grid As DevExpress.XtraGrid.GridControl)
|
|
MyBase.New(grid)
|
|
' put your initialization code here
|
|
End Sub
|
|
Protected Overrides ReadOnly Property ViewName() As String
|
|
Get
|
|
Return "LookupGridView"
|
|
End Get
|
|
End Property
|
|
Protected Overrides Function ConvertGridFilterToDataFilter(ByVal criteria As CriteriaOperator) As CriteriaOperator
|
|
Dim originalFindFilterText As String = Convert.ToString(GetType(ColumnView).InvokeMember("findFilterText", BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.GetField, Nothing, Me, New Object() {}))
|
|
If SimpleSearch Then
|
|
If Not (String.IsNullOrEmpty(originalFindFilterText)) Then
|
|
GetType(ColumnView).InvokeMember("findFilterText", BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.SetField, Nothing, Me, New Object() {String.Concat("""", originalFindFilterText, """")})
|
|
End If
|
|
Dim findCriteria As CriteriaOperator = Nothing
|
|
Dim _lastParserResults As FindSearchParserResults = Nothing
|
|
If Not (String.IsNullOrEmpty(FindFilterText)) Then
|
|
_lastParserResults = (New FindSearchParser()).Parse(FindFilterText, GetFindToColumnsCollection())
|
|
GetType(ColumnView).GetField("lastParserResults", BindingFlags.NonPublic Or BindingFlags.Instance).SetValue(Me, _lastParserResults)
|
|
If Not IsServerMode Then
|
|
_lastParserResults.AppendColumnFieldPrefixes()
|
|
End If
|
|
findCriteria = DxFtsContainsHelperAlt.Create(_lastParserResults, FilterCondition.Contains, IsServerMode)
|
|
End If
|
|
GetType(ColumnView).InvokeMember("findFilterText", BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.SetField, Nothing, Me, New Object() {originalFindFilterText})
|
|
Return criteria And findCriteria
|
|
End If
|
|
Return MyBase.ConvertGridFilterToDataFilter(criteria)
|
|
End Function
|
|
End Class
|
|
|
|
End Namespace
|
|
|