Files
2020-06-09 10:30:25 +02:00

127 lines
5.7 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp.Win.Editors
Imports DevExpress.XtraGrid
Imports DevExpress.Xpo
Imports DevExpress.Data.Filtering
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.ExpressApp.Editors
Public Class ServiceFinderVC
Inherits DevExpress.ExpressApp.ViewController(Of ListView)
Private _GridListEditor_Selected As GridListEditor
Private _GridListEditor_Select As GridListEditor
Private gridView As ColumnView
Private currentView As ListView
Private falseCriteria As CriteriaOperator = CriteriaOperator.Parse("1=0")
Private Delegate Sub EditCellDelegate()
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
If View.Id = "ServiceFinder_ServiceSelect_ListView" Then
currentView = CType(View, ListView)
AddHandler currentView.ControlsCreated, AddressOf AutoFilterRowController_ControlsCreated
End If
End Sub
Protected Overrides Sub OnViewControlsCreated()
MyBase.OnViewControlsCreated()
If View.Id = "ServiceFinder_ServiceSelected_ListView" Then
_GridListEditor_Selected = TryCast(View.Editor, GridListEditor)
If _GridListEditor_Selected IsNot Nothing Then
AddHandler _GridListEditor_Selected.GridView.CellValueChanged, AddressOf ServiceFinder_ServiceSelected_ListView_CellValueChanged
End If
End If
If View.Id = "ServiceFinder_ServiceSelect_ListView" Then
_GridListEditor_Select = TryCast(TryCast(View, ListView).Editor, GridListEditor)
For Each column As DevExpress.XtraGrid.Columns.GridColumn In _GridListEditor_Select.GridView.Columns
column.OptionsFilter.ImmediateUpdateAutoFilter = False
If column.FieldName = "Services.ShortName" Then
column.OptionsFilter.AutoFilterCondition = Columns.AutoFilterCondition.Contains
End If
Next
If _GridListEditor_Select IsNot Nothing Then
AddHandler _GridListEditor_Select.ColumnCreated, AddressOf Services_ListView_ColumnCreated
AddHandler _GridListEditor_Select.GridView.ColumnFilterChanged, AddressOf GridView_ColumnFilterChanged
AddHandler _GridListEditor_Select.GridView.CellValueChanged, AddressOf ServiceFinder_ServiceSelect_ListView_CellValueChanged
AddHandler _GridListEditor_Select.GridView.RowClick, AddressOf ServiceFinder_ServiceSelect_RowClick
End If
End If
End Sub
Private Sub AutoFilterRowController_ControlsCreated(ByVal sender As Object, ByVal e As EventArgs)
Dim grid As GridControl = TryCast(currentView.Control, GridControl)
gridView = TryCast(grid.FocusedView, ColumnView)
If gridView.ActiveFilter.IsEmpty Then
currentView.CollectionSource.Criteria("FalseCriteria") = falseCriteria
End If
AddHandler gridView.ActiveFilter.Changed, AddressOf ActiveFilter_Changed
End Sub
Private Sub ActiveFilter_Changed(ByVal sender As Object, ByVal e As EventArgs)
If (CType(sender, ViewFilter)).IsEmpty Then
currentView.CollectionSource.Criteria("FalseCriteria") = falseCriteria
Else
If currentView.CollectionSource.Criteria.ContainsKey("FalseCriteria") Then
currentView.CollectionSource.Criteria.Remove("FalseCriteria")
End If
End If
End Sub
Private Sub ServiceFinder_ServiceSelected_ListView_CellValueChanged(sender As Object, e As CellValueChangedEventArgs)
End Sub
Private Sub Services_ListView_ColumnCreated(sender As Object, e As ColumnCreatedEventArgs)
e.Column.OptionsFilter.ImmediateUpdateAutoFilter = False
End Sub
Private Sub Timer_Elapsed()
_GridListEditor_Select.GridView.GridControl.Invoke(New EditCellDelegate(AddressOf Edit_QTT_Will_Cell))
End Sub
Private Sub Edit_QTT_Will_Cell()
'e.KeyCode = System.Windows.Forms.Keys.Enter And
If _GridListEditor_Select.GridView.FocusedRowHandle = GridControl.AutoFilterRowHandle And _GridListEditor_Select.GridView.RowCount >= 1 Then
'_GridListEditor_Select.GridView.FocusedColumn = _GridListEditor_Select.GridView.GetVisibleColumn(_GridListEditor_Select.FindColumn("QTT_Will").VisibleIndex)
_GridListEditor_Select.GridView.FocusedColumn = _GridListEditor_Select.GridView.Columns("QTT_Will")
_GridListEditor_Select.GridView.HideEditor()
_GridListEditor_Select.GridView.FocusedRowHandle = _GridListEditor_Select.GridView.GetVisibleRowHandle(0)
_GridListEditor_Select.GridView.ShowEditor()
If _GridListEditor_Select.GridView.ActiveEditor IsNot Nothing Then
_GridListEditor_Select.GridView.ActiveEditor.Focus()
End If
End If
End Sub
Private Sub GridView_ColumnFilterChanged(sender As Object, e As EventArgs)
Dim timer As System.Timers.Timer = New System.Timers.Timer(200)
AddHandler timer.Elapsed, AddressOf Timer_Elapsed
timer.Enabled = True
timer.AutoReset = False
End Sub
Private Sub ServiceFinder_ServiceSelect_ListView_CellValueChanged(sender As Object, e As CellValueChangedEventArgs)
End Sub
Private Sub ServiceFinder_ServiceSelect_RowClick(sender As Object, e As Views.Grid.RowClickEventArgs)
End Sub
End Class