jj: first usable version of lookup grid

This commit is contained in:
Jonathan Jenne
2018-10-12 16:17:18 +02:00
parent 650e6fe365
commit f939e0760c
10 changed files with 100 additions and 62 deletions

View File

@@ -1,9 +1,9 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Grid Partial Class Grid
Inherits System.Windows.Forms.UserControl Inherits System.Windows.Forms.UserControl
'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. 'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _ <System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean) Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try Try
If disposing AndAlso components IsNot Nothing Then If disposing AndAlso components IsNot Nothing Then
@@ -20,10 +20,10 @@ Partial Class Grid
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _ <System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent() Private Sub InitializeComponent()
Me.TextBox1 = New System.Windows.Forms.TextBox() Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.Button1 = New System.Windows.Forms.Button() Me.btnOpenForm = New System.Windows.Forms.Button()
Me.SuspendLayout() Me.SuspendLayout()
' '
'TextBox1 'TextBox1
@@ -33,29 +33,30 @@ Partial Class Grid
Me.TextBox1.Size = New System.Drawing.Size(231, 20) Me.TextBox1.Size = New System.Drawing.Size(231, 20)
Me.TextBox1.TabIndex = 0 Me.TextBox1.TabIndex = 0
' '
'Button1 'btnOpenForm
' '
Me.Button1.Location = New System.Drawing.Point(237, 0) Me.btnOpenForm.Location = New System.Drawing.Point(237, 0)
Me.Button1.Name = "Button1" Me.btnOpenForm.Name = "btnOpenForm"
Me.Button1.Size = New System.Drawing.Size(37, 20) Me.btnOpenForm.Size = New System.Drawing.Size(30, 20)
Me.Button1.TabIndex = 1 Me.btnOpenForm.TabIndex = 1
Me.Button1.Text = "Button1" Me.btnOpenForm.Text = "..."
Me.Button1.UseVisualStyleBackColor = True Me.btnOpenForm.UseVisualStyleBackColor = True
' '
'LookupGrid 'Grid
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.AutoSize = True
Me.BackColor = System.Drawing.Color.Transparent Me.BackColor = System.Drawing.Color.Transparent
Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.btnOpenForm)
Me.Controls.Add(Me.TextBox1) Me.Controls.Add(Me.TextBox1)
Me.Name = "LookupGrid" Me.Name = "Grid"
Me.Size = New System.Drawing.Size(323, 57) Me.Size = New System.Drawing.Size(270, 23)
Me.ResumeLayout(False) Me.ResumeLayout(False)
Me.PerformLayout() Me.PerformLayout()
End Sub End Sub
Friend WithEvents TextBox1 As Windows.Forms.TextBox Friend WithEvents TextBox1 As Windows.Forms.TextBox
Friend WithEvents Button1 As Windows.Forms.Button Friend WithEvents btnOpenForm As Windows.Forms.Button
End Class End Class

View File

@@ -1,7 +1,28 @@
Public Class Grid Imports System.ComponentModel
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Public Class Grid
<Category("Einstellungen"), Description("Gibt an, ob mehrere Werte auswählbar sind"), DefaultValue(False)>
Public Property MultiSelect As Boolean
<Category("Einstellungen"), Description("Gibt an, ob neue Werte hinzugefügt werden können"), DefaultValue(False)>
Public Property AllowAddNewValues As Boolean
<Category("Einstellungen"), Description("Gibt an, ob das Hinzufügen von identischen Werten erlaubt ist"), DefaultValue(False)>
Public Property PreventDuplicates As Boolean
<Browsable(False)>
Public Property DataSource As DataTable
<Browsable(False)>
Public Property SelectedValues As New List(Of Object)
Private Sub btnOpenForm_Click(sender As Object, e As EventArgs) Handles btnOpenForm.Click
Dim frm As New frmLookupGrid() With {
.MultiSelect = MultiSelect,
.AddNewValues = AllowAddNewValues,
.PreventDuplicates = PreventDuplicates,
.DataSource = DataSource,
.SelectedValues = SelectedValues
}
frm.ShowDialog()
End Sub End Sub
End Class End Class

View File

@@ -2,16 +2,17 @@
Imports DevExpress.XtraGrid.Views.Base Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Registrator Imports DevExpress.XtraGrid.Registrator
Public Class LookupGridControl Namespace LookupGrid
Inherits GridControl Public Class LookupGridControl
Inherits GridControl
Protected Overrides Function CreateDefaultView() As BaseView
Return CreateView("LookupGridView")
End Function
Protected Overrides Sub RegisterAvailableViewsCore(ByVal collection As InfoCollection)
MyBase.RegisterAvailableViewsCore(collection)
collection.Add(New GridViewInfoRegistrator())
End Sub
End Class
Protected Overrides Function CreateDefaultView() As BaseView
Return CreateView("LookupGridView")
End Function
Protected Overrides Sub RegisterAvailableViewsCore(ByVal collection As InfoCollection)
MyBase.RegisterAvailableViewsCore(collection)
collection.Add(New GridViewInfoRegistrator())
End Sub
End Class
End Namespace

View File

@@ -1,18 +1,21 @@
Imports System.Windows.Forms Imports System.Windows.Forms
Imports DevExpress.XtraGrid.Views.Grid Imports DevExpress.XtraGrid.Views.Grid
Namespace LookupGrid
Public Class GridHandler
Inherits Handler.GridHandler
Public Class GridHandler Public Sub New(ByVal gridView As GridView)
Inherits Handler.GridHandler MyBase.New(gridView)
End Sub
Public Sub New(ByVal gridView As GridView) Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
MyBase.New(gridView) MyBase.OnKeyDown(e)
End Sub If e.KeyData = Keys.Delete AndAlso View.State = GridState.Normal Then
View.DeleteRow(View.FocusedRowHandle)
End If
End Sub
End Class
End Namespace
Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
MyBase.OnKeyDown(e)
If e.KeyData = Keys.Delete AndAlso View.State = GridState.Normal Then
View.DeleteRow(View.FocusedRowHandle)
End If
End Sub
End Class

View File

@@ -3,7 +3,8 @@ Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Base.Handler Imports DevExpress.XtraGrid.Views.Base.Handler
Imports DevExpress.XtraGrid.Registrator Imports DevExpress.XtraGrid.Registrator
Public Class GridViewInfoRegistrator Namespace LookupGrid
Public Class GridViewInfoRegistrator
Inherits GridInfoRegistrator Inherits GridInfoRegistrator
Public Overrides ReadOnly Property ViewName() As String Public Overrides ReadOnly Property ViewName() As String
@@ -12,7 +13,7 @@ Public Class GridViewInfoRegistrator
End Get End Get
End Property End Property
Public Overrides Function CreateView(ByVal grid As GridControl) As BaseView Public Overrides Function CreateView(ByVal grid As GridControl) As BaseView
Return New LookupGridView(grid) Return New LookupGridView(TryCast(grid, GridControl))
End Function End Function
Public Overrides Function CreateHandler(ByVal view As BaseView) As BaseViewHandler Public Overrides Function CreateHandler(ByVal view As BaseView) As BaseViewHandler
Return New GridHandler(TryCast(view, LookupGridView)) Return New GridHandler(TryCast(view, LookupGridView))
@@ -20,3 +21,6 @@ Public Class GridViewInfoRegistrator
End Class End Class
End Namespace

View File

@@ -1,7 +1,7 @@
Partial Class LookupGridView Partial Class LookupGridView
Inherits System.ComponentModel.Component Inherits System.ComponentModel.Component
<System.Diagnostics.DebuggerNonUserCode()> _ <System.Diagnostics.DebuggerNonUserCode()>
Public Sub New(ByVal container As System.ComponentModel.IContainer) Public Sub New(ByVal container As System.ComponentModel.IContainer)
MyClass.New() MyClass.New()
@@ -12,7 +12,7 @@
End Sub End Sub
<System.Diagnostics.DebuggerNonUserCode()> _ <System.Diagnostics.DebuggerNonUserCode()>
Public Sub New() Public Sub New()
MyBase.New() MyBase.New()
@@ -22,7 +22,7 @@
End Sub End Sub
'Die Komponente überschreibt den Löschvorgang zum Bereinigen der Komponentenliste. 'Die Komponente überschreibt den Löschvorgang zum Bereinigen der Komponentenliste.
<System.Diagnostics.DebuggerNonUserCode()> _ <System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean) Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try Try
If disposing AndAlso components IsNot Nothing Then If disposing AndAlso components IsNot Nothing Then
@@ -39,7 +39,7 @@
'Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich. 'Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
'Das Bearbeiten ist mit dem Komponenten-Designer möglich. 'Das Bearbeiten ist mit dem Komponenten-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _ <System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent() Private Sub InitializeComponent()
components = New System.ComponentModel.Container() components = New System.ComponentModel.Container()
End Sub End Sub

View File

@@ -53,3 +53,4 @@ Namespace LookupGrid
End Class End Class
End Namespace End Namespace

View File

@@ -10,7 +10,7 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyTitle("LookupGrid")> <Assembly: AssemblyTitle("LookupGrid")>
<Assembly: AssemblyDescription("")> <Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")> <Assembly: AssemblyCompany("Digital Data")>
<Assembly: AssemblyProduct("LookupGrid")> <Assembly: AssemblyProduct("LookupGrid")>
<Assembly: AssemblyCopyright("Copyright © 2018")> <Assembly: AssemblyCopyright("Copyright © 2018")>
<Assembly: AssemblyTrademark("")> <Assembly: AssemblyTrademark("")>

View File

@@ -1 +1,3 @@
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -90,30 +90,35 @@ Public Class frmLookupGrid
view.FindFilterText = String.Empty view.FindFilterText = String.Empty
If MultiSelect Then If MultiSelect Then
Dim values As New List(Of Object) Dim oValues As New List(Of Object)
For index = 0 To viewLookup.DataRowCount - 1 For oIndex = 0 To viewLookup.DataRowCount - 1
Dim row As DataRow = view.GetDataRow(index) Dim oRow As DataRow = view.GetDataRow(oIndex)
Dim selected As Boolean = row.Item(0) Dim oSelected As Boolean = oRow.Item(0)
Dim value As Object = row.Item(1) Dim oValue As Object = oRow.Item(1)
If selected Then If oSelected Then
values.Add(value) oValues.Add(oValue)
End If End If
Next Next
' Doppelte Werte entfernen, wenn konfiguriert ' Doppelte Werte entfernen, wenn konfiguriert
If PreventDuplicates Then If PreventDuplicates Then
values = values.Distinct().ToList() oValues = oValues.Distinct().ToList()
End If End If
SelectedValues = values SelectedValues = oValues
Else Else
Dim rowHandle As Integer = view.GetSelectedRows().ToList().First() Dim oRowHandle As Integer = view.GetSelectedRows().ToList().FirstOrDefault()
Dim row As DataRow = view.GetDataRow(rowHandle) Dim oRow As DataRow = view.GetDataRow(oRowHandle)
Dim value = row.Item(0) Dim oValues As New List(Of Object)
SelectedValues = New List(Of Object) From {value} If oRow IsNot Nothing Then
Dim oValue = oRow.Item(0)
oValues.Add(oValue)
End If
SelectedValues = oValues
End If End If
End Sub End Sub