Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/Modules/LargeDataSet.xaml.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Navigation
Imports System.Windows.Shapes
Imports System.ComponentModel
Imports System.Collections
Imports DevExpress.Xpf.Editors.Settings
Imports DevExpress.Xpf.Grid
Imports DevExpress.Xpf.Editors
Imports System.Threading
Imports System.Windows.Threading
Imports DevExpress.Utils
Imports DevExpress.XtraGrid
Imports DevExpress.Data.Browsing
Imports DevExpress.Xpf.DemoBase

Namespace GridDemo
	<CodeFile("Controls/OutlookDataGenerator.(cs)"), CodeFile("ModuleResources/LargeDataSetClasses.(cs)")> _
	Partial Public Class LargeDataSet
		Inherits GridDemoModule
		Private vList As New VirtualList()
		Public Sub New()
			InitializeComponent()
			AssignDataSource()
		End Sub

		Private Sub AssignDataSource()
			setRowColumnCountButton.Cursor = Cursors.Wait
			vList.RecordCount = (CType(rowCountListBox.SelectedItem, CountInfo)).Value
			vList.ColumnCount = (CType(columnCountListBox.SelectedItem, CountInfo)).Value
			grid.ItemsSource = Nothing
			grid.Columns.Clear()
			grid.Columns.BeginUpdate()
			Dim properties As PropertyDescriptorCollection = (CType(vList, ITypedList)).GetItemProperties(Nothing)
			For Each propertyDescriptor As PropertyDescriptor In properties
				Dim column As New GridColumn()
				column.FieldName = propertyDescriptor.Name
				If column.FieldName.Contains("Subject") Then
					column.EditSettings = New MemoEditSettings() With {.PopupWidth = 300, .ShowIcon = False, .MemoTextWrapping=TextWrapping.Wrap, .MemoVerticalScrollBarVisibility = ScrollBarVisibility.Auto}
				End If
				If column.FieldName.Contains("Priority") Then
					column.SortMode = ColumnSortMode.Value
				End If
				If column.FieldName.Contains("Size") Then
					column.BestFitArea = BestFitArea.Header
				End If
				column.AllowEditing = (If((propertyDescriptor.Name = "ID(1)"), DefaultBoolean.False, DefaultBoolean.Default))
				column.Header = (If((propertyDescriptor.Name = "ID(1)"), "ID(1)", Nothing))
				column.AllowColumnFiltering = (If((propertyDescriptor.Name = "ID(1)"), DefaultBoolean.False, DefaultBoolean.True))
				Dim settings As BaseEditSettings = CreateEditSettings(propertyDescriptor.Name)
				If settings IsNot Nothing Then
					column.EditSettings = settings
				End If
				grid.Columns.Add(column)
			Next propertyDescriptor
			grid.Columns.EndUpdate()
			grid.ItemsSource = vList
			Dispatcher.BeginInvoke(DispatcherPriority.Render, New Action(AddressOf ClearCursorProperty))
		End Sub
  Private Sub ClearCursorProperty()
   setRowColumnCountButton.ClearValue(FrameworkElement.CursorProperty)
  End Sub
		Private Function CreateEditSettings(ByVal propertyName As String) As BaseEditSettings
			If propertyName = "ID(1)" Then
				Return New TextEditSettings() With {.DisplayFormat = "#,0", .HorizontalContentAlignment = EditSettingsHorizontalAlignment.Right}
			End If
			If propertyName.StartsWith("Size") Then
				Return New TextEditSettings() With {.Mask = "## ##0", .MaskType = MaskType.Numeric, .MaskUseAsDisplayFormat = True, .HorizontalContentAlignment = EditSettingsHorizontalAlignment.Right}
			End If
			If propertyName.StartsWith("Priority") Then
				Return New ComboBoxEditSettings() With {.ItemsSource = DevExpress.Data.Mask.EnumHelper.GetValues(GetType(Priority)), .IsTextEditable = False}
			End If
			Return Nothing
		End Function
		Private Sub setRowColumnCountButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
			AssignDataSource()
		End Sub

		Private Sub view_CustomBestFit(ByVal sender As Object, ByVal e As CustomBestFitEventArgs)
			If e.Column.FieldName <> "ID(1)" Then
				Return
			End If
			Dim largestIDHandles As New List(Of Integer)()
			For i As Integer = vList.Count - 1 To 0 Step -1
				Dim rowHanle As Integer = grid.GetRowHandleByListIndex(i)
				If rowHanle <> GridControl.InvalidRowHandle Then
					largestIDHandles.Add(rowHanle)
				End If
				If largestIDHandles.Count >= 100 Then
					Exit For
				End If
			Next i
			e.BestFitRows = largestIDHandles
		End Sub
	End Class
End Namespace