Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/Controls/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/Controls/SalesByYearData.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Windows
Imports GridDemo
Imports System.Collections
Imports System.Globalization
Imports DevExpress.Data
Imports DevExpress.Xpf.DemoBase
Imports DevExpress.Xpf.Grid
Imports DevExpress.Xpf.Editors.Settings
Imports DevExpress.Xpf.Editors
Imports System.Windows.Controls
Imports System.Data

Namespace GridDemo
	Public NotInheritable Class SalesByYearData
		Private Sub New()
		End Sub
		Public Shared Function GetColumnType(ByVal fieldName As String) As Type
			Return If(fieldName.Contains("Date"), GetType(DateTime), GetType(Integer))
		End Function
		Public Shared Function GetSalesByYearData(Optional ByVal byMonthReport As Boolean = False) As IList
			Dim columns As New List(Of String)()
			columns.Add("Date")
			If byMonthReport Then
				columns.Add("DateMonth")
			End If
			For Each row As DataRow In NWindData.Employees.Table.Rows
				Dim name As String = CStr(row("FirstName")) & " " & CStr(row("LastName"))
				If (Not columns.Contains(name)) Then
					columns.Add(name)
				End If
			Next row
			Dim table As New DataTable()
			For Each employe As String In columns
				table.Columns.Add(New DataColumn(employe) With {.DataType = GetColumnType(employe)})
			Next employe
			Dim random As New Random()
			For yearIndex As Integer = 10 To 1 Step -1
				Dim year As Integer = DateTime.Now.Year - yearIndex
				For month As Integer = 1 To 12
					Dim daysCount As Integer = If(byMonthReport, DateTime.DaysInMonth(year, month), 1)
					For day As Integer = 1 To daysCount
						Dim row As DataRow = table.NewRow()
						row("Date") = New DateTime(year, month, day)
						Dim startColumnIndex As Integer = 1
						If byMonthReport Then
							row("DateMonth") = row("Date")
							startColumnIndex += 1
						End If
						For columnIndex As Integer = startColumnIndex To columns.Count - 1
							row(columns(columnIndex)) = random.Next(30000 \ daysCount)
						Next columnIndex
						table.Rows.Add(row)
					Next day
				Next month
			Next yearIndex
			Return table.DefaultView

		End Function
	End Class
	Public Class SalesByYearDataColumnTemplateSelector
		Inherits DataTemplateSelector
		Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
			Dim context As ColumnGeneratorItemContext = CType(item, ColumnGeneratorItemContext)
			Dim grid As GridControl = CType(container, GridControl)
			Return CType(grid.Resources(If(context.PropertyDescriptor.Name = "Date", "DateColumnTemplate", "EmployeeColumnTemplate")), DataTemplate)
		End Function
	End Class
End Namespace