LookupGrid: Filter datasource in popup according to selected values
This commit is contained in:
parent
0e951c630e
commit
f3f1925634
@ -8,6 +8,8 @@ Imports DevExpress.XtraEditors.ViewInfo
|
|||||||
Imports DevExpress.XtraEditors.Drawing
|
Imports DevExpress.XtraEditors.Drawing
|
||||||
Imports DevExpress.Accessibility
|
Imports DevExpress.Accessibility
|
||||||
Imports DevExpress.XtraEditors.Controls
|
Imports DevExpress.XtraEditors.Controls
|
||||||
|
Imports DevExpress.XtraGrid.Views.Base
|
||||||
|
Imports DevExpress.XtraGrid.Columns
|
||||||
|
|
||||||
<ToolboxItem(True)>
|
<ToolboxItem(True)>
|
||||||
Public Class LookupControl3
|
Public Class LookupControl3
|
||||||
@ -50,11 +52,12 @@ Public Class RepositoryItemLookupControl3
|
|||||||
Private Const TAG_DROPDOWN = "openDropdown"
|
Private Const TAG_DROPDOWN = "openDropdown"
|
||||||
Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm"
|
Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm"
|
||||||
|
|
||||||
|
Public Const CustomEditName As String = "LookupControl3"
|
||||||
|
|
||||||
Private _R As Resources.ResourceManager = My.Resources.Strings.ResourceManager
|
Private _R As Resources.ResourceManager = My.Resources.Strings.ResourceManager
|
||||||
Private _SelectedValues As New List(Of String)
|
Private _SelectedValues As New List(Of String)
|
||||||
Private _MultiSelect As Boolean = False
|
Private _MultiSelect As Boolean = False
|
||||||
Private _ReadOnly As Boolean = False
|
Private _ReadOnly As Boolean = False
|
||||||
Public Const CustomEditName As String = "LookupControl3"
|
|
||||||
|
|
||||||
Public Property AllowAddNewValues As Boolean
|
Public Property AllowAddNewValues As Boolean
|
||||||
Public Property PreventDuplicates As Boolean
|
Public Property PreventDuplicates As Boolean
|
||||||
@ -227,6 +230,22 @@ Public Class RepositoryItemLookupControl3
|
|||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Shadows Sub Popup(sender As LookupControl3, e As EventArgs) Handles Me.BeforePopup
|
||||||
|
Dim oView As ColumnView = sender.Properties.View
|
||||||
|
|
||||||
|
If DataSource IsNot Nothing AndAlso DataSource.Columns.Count > 0 Then
|
||||||
|
Dim oFirstColumn As String = DataSource.Columns.Item(0).ColumnName
|
||||||
|
|
||||||
|
Dim oWrapped = SelectedValues.Select(Function(v As String)
|
||||||
|
Return $"'{v}'"
|
||||||
|
End Function).ToArray()
|
||||||
|
Dim oValueString As String = String.Join(",", oWrapped)
|
||||||
|
Dim oCriterium As String = $"[{oFirstColumn}] IN ({oValueString})"
|
||||||
|
View.ActiveFilterCriteria = DevExpress.Data.Filtering.CriteriaOperator.Parse(oCriterium)
|
||||||
|
View.OptionsView.ShowFilterPanelMode = ShowFilterPanelMode.Never
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Sub HandleQueryPopup(sender As Object, e As CancelEventArgs) Handles Me.QueryPopUp
|
Public Sub HandleQueryPopup(sender As Object, e As CancelEventArgs) Handles Me.QueryPopUp
|
||||||
If MultiSelect = False Then
|
If MultiSelect = False Then
|
||||||
e.Cancel = True
|
e.Cancel = True
|
||||||
|
|||||||
@ -21,6 +21,8 @@ Public Class frmLookup
|
|||||||
LookupControl31.Properties.DataSource = oTable
|
LookupControl31.Properties.DataSource = oTable
|
||||||
|
|
||||||
LookupControl32.Properties.MultiSelect = True
|
LookupControl32.Properties.MultiSelect = True
|
||||||
|
LookupControl32.Properties.DisplayMember = "Col1"
|
||||||
|
LookupControl32.Properties.ValueMember = "Col1"
|
||||||
LookupControl32.Properties.DataSource = oTable
|
LookupControl32.Properties.DataSource = oTable
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user