/
SimpleBusinessActionGridListViewController.vb
127 lines (126 loc) · 5.55 KB
/
SimpleBusinessActionGridListViewController.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Imports Microsoft.VisualBasic
Imports System
Imports DevExpress.Data
Imports DevExpress.Utils
Imports DevExpress.ExpressApp
Imports DevExpress.XtraEditors
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.ExpressApp.Model
Imports DevExpress.ExpressApp.Editors
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraEditors.Controls
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.ExpressApp.Win.Editors
Namespace WinSolution.Module.Win
Public Class SimpleBusinessActionGridListViewController
Inherits ViewController(Of ListView)
Private unboundModelColumn As IModelColumn
Private Const ButtonColumnCaption As String = "Action"
Private Const ButtonColumnName As String = "UnboundButtonColumn"
Private defaultButtonColumnColumnProperties As RepositoryItemButtonEdit
Private activebutton As New EditorButton(ButtonPredefines.OK)
Private inactivebutton As New EditorButton(ButtonPredefines.Close)
Private gridListEditor As GridListEditor
Public Sub New()
TargetObjectType = GetType(Order)
End Sub
Protected Overrides Overloads Sub OnViewControlsCreated()
MyBase.OnViewControlsCreated()
gridListEditor = TryCast(View.Editor, GridListEditor)
If gridListEditor IsNot Nothing Then
InitGridView()
InitButtonColumn()
End If
End Sub
Private Sub InitGridView()
AddHandler gridListEditor.GridView.CustomRowCellEdit, AddressOf gridView_CustomRowCellEdit
AddHandler gridListEditor.GridView.CustomRowCellEditForEditing, AddressOf gridView_CustomRowCellEdit
gridListEditor.GridView.OptionsBehavior.EditorShowMode = EditorShowMode.MouseDown
End Sub
Private Sub InitButtonColumn()
unboundModelColumn = TryCast((CType(gridListEditor.Model.Columns, IModelColumns)).GetNode(ButtonColumnName), IModelColumn)
If unboundModelColumn Is Nothing Then
unboundModelColumn = gridListEditor.Model.Columns.AddNode(Of IModelColumn)(ButtonColumnName)
unboundModelColumn.PropertyName = ButtonColumnName
unboundModelColumn.Width = 50
unboundModelColumn.PropertyEditorType = GetType(DefaultPropertyEditor)
For i As Integer = gridListEditor.Columns.Count - 1 To 0 Step -1
Dim cw As ColumnWrapper = gridListEditor.Columns(i)
If cw.PropertyName = unboundModelColumn.PropertyName Then
gridListEditor.RemoveColumn(cw)
Exit For
End If
Next i
gridListEditor.AddColumn(unboundModelColumn)
End If
Dim buttonColumn As GridColumn = gridListEditor.GridView.Columns(unboundModelColumn.PropertyName)
If buttonColumn IsNot Nothing Then
buttonColumn.UnboundType = UnboundColumnType.Boolean
buttonColumn.Caption = ButtonColumnCaption
buttonColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center
buttonColumn.VisibleIndex = 0
buttonColumn.OptionsColumn.AllowEdit = True
buttonColumn.OptionsColumn.AllowGroup = DefaultBoolean.False
buttonColumn.OptionsColumn.AllowMove = False
buttonColumn.OptionsColumn.AllowShowHide = False
buttonColumn.OptionsColumn.AllowSize = False
buttonColumn.OptionsColumn.AllowSort = DefaultBoolean.False
buttonColumn.OptionsColumn.FixedWidth = True
buttonColumn.OptionsColumn.ShowInCustomizationForm = False
buttonColumn.OptionsFilter.AllowFilter = False
InitButtonEditor()
End If
End Sub
Private Sub InitButtonEditor()
defaultButtonColumnColumnProperties = New RepositoryItemButtonEdit()
defaultButtonColumnColumnProperties.TextEditStyle = TextEditStyles.HideTextEditor
AddHandler defaultButtonColumnColumnProperties.Click, AddressOf buttonColumnColumnProperties_Click
gridListEditor.Grid.RepositoryItems.Add(defaultButtonColumnColumnProperties)
End Sub
Private Sub UpdateButtons(ByVal properties As RepositoryItemButtonEdit, ByVal active As Boolean)
Dim button As EditorButton
If active Then
button = inactivebutton
Else
button = activebutton
End If
If properties.Buttons(0).Kind <> button.Kind Then
properties.BeginInit()
properties.Buttons.Clear()
properties.Buttons.Add(button)
properties.EndInit()
End If
End Sub
Private Sub gridView_CustomRowCellEdit(ByVal sender As Object, ByVal e As CustomRowCellEditEventArgs)
If e.Column.FieldName = ButtonColumnName Then
Dim order As ISimpleBusinessAction = TryCast(gridListEditor.GridView.GetRow(e.RowHandle), ISimpleBusinessAction)
If order IsNot Nothing Then
Dim item As RepositoryItemButtonEdit = TryCast(defaultButtonColumnColumnProperties.Clone(), RepositoryItemButtonEdit)
UpdateButtons(item, order.Active)
e.RepositoryItem = item
End If
End If
End Sub
Private Sub buttonColumnColumnProperties_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim editor As ButtonEdit = CType(sender, ButtonEdit)
Dim order As ISimpleBusinessAction = TryCast(gridListEditor.GridView.GetFocusedRow(), ISimpleBusinessAction)
If order IsNot Nothing Then
order.SimpleBusinessAction()
UpdateButtons(editor.Properties, order.Active)
End If
End Sub
Protected Overrides Overloads Sub OnDeactivated()
If gridListEditor IsNot Nothing AndAlso gridListEditor.GridView IsNot Nothing Then
RemoveHandler gridListEditor.GridView.CustomRowCellEdit, AddressOf gridView_CustomRowCellEdit
RemoveHandler gridListEditor.GridView.CustomRowCellEditForEditing, AddressOf gridView_CustomRowCellEdit
If unboundModelColumn IsNot Nothing Then
unboundModelColumn.Remove()
End If
End If
If defaultButtonColumnColumnProperties IsNot Nothing Then
RemoveHandler defaultButtonColumnColumnProperties.Click, AddressOf buttonColumnColumnProperties_Click
End If
MyBase.OnDeactivated()
End Sub
End Class
End Namespace