LookupGrid: BestFit for Value Column

This commit is contained in:
Jonathan Jenne 2021-04-12 15:51:54 +02:00
parent e7287e4b24
commit 86ec33251b
2 changed files with 17 additions and 8 deletions

View File

@ -1,5 +1,6 @@
Imports System.Windows.Forms
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Grid
@ -12,6 +13,8 @@ Public Class frmLookupGrid
Public Property NewValues As New HashSet(Of String)
Public Const COLUMN_SELECTED = "SELECTED"
Public Const COLUMN_VALUE = "VALUE"
Public Const TABLE_TEMP = "TEMP"
Private _DataColumn As Integer
Private _DataSourceTemp As DataTable
@ -25,21 +28,21 @@ Public Class frmLookupGrid
' Original Datasource soll nicht verändert werden
If DataSource Is Nothing Then
_DataSourceTemp = New DataTable("TEMP")
_DataSourceTemp.Columns.Add(New DataColumn("VALUE"))
_DataSourceTemp = New DataTable(TABLE_TEMP)
_DataSourceTemp.Columns.Add(New DataColumn(COLUMN_VALUE))
Else
_DataSourceTemp = DataSource.Copy()
End If
If MultiSelect Then
If Not _DataSourceTemp.Columns.Contains(COLUMN_SELECTED) Then
Dim selectedColumn = New DataColumn() With {
.ColumnName = "SELECTED",
Dim oSelectedColumn = New DataColumn() With {
.ColumnName = COLUMN_SELECTED,
.DataType = GetType(Boolean),
.DefaultValue = False
}
_DataSourceTemp.Columns.Add(selectedColumn)
selectedColumn.SetOrdinal(0)
_DataSourceTemp.Columns.Add(oSelectedColumn)
oSelectedColumn.SetOrdinal(0)
End If
End If
@ -87,6 +90,10 @@ Public Class frmLookupGrid
' Spaltenbreite anpassen
_View.BestFitColumns()
' Datenspalte zusätzlich in der Breite anpassen
Dim oDataColumn As GridColumn = _View.Columns.Item(_DataColumn)
oDataColumn.BestFit()
End Sub
Private Sub SaveSelectedValues()
@ -205,7 +212,7 @@ Public Class frmLookupGrid
Private Sub viewLookup_ShowingEditor(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles viewLookup.ShowingEditor
Dim rowHandleIsNewItemRow = (_View.FocusedRowHandle = GridControl.NewItemRowHandle)
Dim columnIsCheckboxColumn = _View.FocusedColumn.FieldName = "SELECTED"
Dim columnIsCheckboxColumn = (_View.FocusedColumn.FieldName = COLUMN_SELECTED)
' Prevent editing of Data Column/allow editing for Checkbox Column and NewValue Row
If rowHandleIsNewItemRow Or columnIsCheckboxColumn Then

View File

@ -45,7 +45,8 @@ Public Class frmLookup
Dim oDatatable As New DataTable
Dim oColumns As New List(Of DataColumn) From {
New DataColumn("Col1", GetType(String)),
New DataColumn("Col2", GetType(String))
New DataColumn("Col2", GetType(String)),
New DataColumn("Col3", GetType(String))
}
oDatatable.Columns.AddRange(oColumns.ToArray)
@ -54,6 +55,7 @@ Public Class frmLookup
Dim oRow = oDatatable.NewRow()
oRow.Item("Col1") = Item
oRow.Item("Col2") = Item & "_" & "SomeLong Random(String) !!!111einself"
oRow.Item("Col3") = Item & "_" & "SomeLong OTHER Random(String) !!!111einself"
oDatatable.Rows.Add(oRow)
Next