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.Accessibility
|
||||
Imports DevExpress.XtraEditors.Controls
|
||||
Imports DevExpress.XtraGrid.Views.Base
|
||||
Imports DevExpress.XtraGrid.Columns
|
||||
|
||||
<ToolboxItem(True)>
|
||||
Public Class LookupControl3
|
||||
@ -50,11 +52,12 @@ Public Class RepositoryItemLookupControl3
|
||||
Private Const TAG_DROPDOWN = "openDropdown"
|
||||
Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm"
|
||||
|
||||
Public Const CustomEditName As String = "LookupControl3"
|
||||
|
||||
Private _R As Resources.ResourceManager = My.Resources.Strings.ResourceManager
|
||||
Private _SelectedValues As New List(Of String)
|
||||
Private _MultiSelect As Boolean = False
|
||||
Private _ReadOnly As Boolean = False
|
||||
Public Const CustomEditName As String = "LookupControl3"
|
||||
|
||||
Public Property AllowAddNewValues As Boolean
|
||||
Public Property PreventDuplicates As Boolean
|
||||
@ -227,6 +230,22 @@ Public Class RepositoryItemLookupControl3
|
||||
End Try
|
||||
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
|
||||
If MultiSelect = False Then
|
||||
e.Cancel = True
|
||||
|
||||
@ -21,6 +21,8 @@ Public Class frmLookup
|
||||
LookupControl31.Properties.DataSource = oTable
|
||||
|
||||
LookupControl32.Properties.MultiSelect = True
|
||||
LookupControl32.Properties.DisplayMember = "Col1"
|
||||
LookupControl32.Properties.ValueMember = "Col1"
|
||||
LookupControl32.Properties.DataSource = oTable
|
||||
End Sub
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user