Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/GridMainDemo/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/GridMainDemo/Modules/DataSummaries.vb

Imports System.Collections
Imports System.ComponentModel
Imports System.Data.OleDb
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.Utils
Imports DevExpress.Data
Imports DevExpress.XtraGrid
Imports DevExpress.XtraEditors

Namespace DevExpress.XtraGrid.Demos
    ''' <summary>
    ''' Summary description for DataSummaries.
    ''' </summary>
    Partial Public Class DataSummaries
        Inherits TutorialControl

        Public Sub New()
            '
            ' Required for Windows Form Designer support
            '
            CreateWaitDialog()
            InitializeComponent()
            TutorialInfo.WhatsThisCodeFile = "VB\GridMainDemo\Modules\DataSummaries.vb"
            TutorialInfo.WhatsThisXMLFile = "DataSummaries.xml"
            InitNWindData()
            InitSummaries()
            InitEditing()
            '
            ' TODO: Add any constructor code after InitializeComponent call
            '
        End Sub
        '<gridControl1>
        Private gsiSummary, gsiMultiSummary, gsiMultiSummaryDetail, gsiDisplaySummary, gsiDisplaySummaryDetails As GridGroupSummaryItemCollection
        '</gridControl1>

        Private displaySummary As Boolean = False

        Protected Overrides ReadOnly Property PaintViews() As PaintView()
            Get
                Return New PaintView() {New PaintView(advBandedGridView1, "Pastel#3"), New PaintView(gridView1, "Pastel#2")}
            End Get
        End Property
#Region "Init"
        Public Overrides ReadOnly Property ExportView() As DevExpress.XtraGrid.Views.Base.BaseView
            Get
                Return advBandedGridView1
            End Get
        End Property


        Private ReadOnly Property CurrentGrid() As GridControl
            Get
                Return gridControl1
            End Get
        End Property
        Private ReadOnly Property CurrentView() As GridView
            Get
                Return advBandedGridView1
            End Get
        End Property
        Private ReadOnly Property CurrentDetailView() As GridView
            Get
                Return gridView1
            End Get
        End Property

        Protected Overrides Sub InitMDBData(ByVal connectionString As String)
            Dim oleDBAdapter As New OleDbDataAdapter("SELECT * FROM Products", connectionString)
            SetWaitDialogCaption(My.Resources.LoadingProducts)
            oleDBAdapter.Fill(dsNWindProducts1.Products)

            oleDBAdapter = New OleDbDataAdapter("SELECT * FROM [Order Details]", connectionString)
            SetWaitDialogCaption(My.Resources.LoadingOrderDetails)
            oleDBAdapter.Fill(dsNWindProducts1.Order_Details)

            oleDBAdapter = New OleDbDataAdapter("SELECT * FROM Suppliers", connectionString)
            SetWaitDialogCaption(My.Resources.LoadingSuppliers)
            oleDBAdapter.Fill(dsNWindProducts1.Suppliers)
        End Sub
        Private dsXML As New DataSet()
        Protected Overrides Sub InitXMLData(ByVal dataFileName As String)
            dsXML.ReadXml(dataFileName)
            Me.gridControl1.LevelTree.Nodes(0).RelationName = "ProductsOrderDetails"
            Me.gridControl1.DataSource = dsXML.Tables("Products")
            Me.repositoryItemLookUpEdit1.DataSource = dsXML.Tables("Suppliers")
            Me.colSubTotal.UnboundType = UnboundColumnType.Decimal
        End Sub

        Private Sub InitEditing()
            gridControl1.ForceInitialize()
            colSupplierID.GroupIndex = 0
            colPrice.GroupIndex = 0
            SetShowFooter(chShowFooter.Checked)
            OnButtonChecked(chSummary)
        End Sub
        Private Sub InitMasterDetailAppearance()
            CurrentView.BeginUpdate()
            CurrentView.ExpandAllGroups()
            CurrentView.FocusedRowHandle = 0
            CurrentView.SetMasterRowExpanded(CurrentView.FocusedRowHandle, True)
            CurrentView.EndUpdate()
        End Sub
        '<gridControl1>
        Private Sub InitSummaries()
            '~row summary 
            gsiSummary = New GridGroupSummaryItemCollection(CurrentView)
            gsiSummary.Add(SummaryItemType.Count, "ProductID")

            '~multi row summary 
            gsiMultiSummary = New GridGroupSummaryItemCollection(CurrentView)
            gsiMultiSummary.Add(SummaryItemType.Count, "ProductID")
            gsiMultiSummary.Add(SummaryItemType.Average, "UnitPrice", Nothing, My.Resources.AvgByPriceFormatCurrency)

            '~multi row summary for detail 
            gsiMultiSummaryDetail = New GridGroupSummaryItemCollection(CurrentDetailView)
            gsiMultiSummaryDetail.Add(SummaryItemType.Count, "OrderID")
            gsiMultiSummaryDetail.Add(SummaryItemType.Sum, "SubTotal", Nothing, My.Resources.SubTotalFormatCurrency)

            '~row footer summary 
            gsiDisplaySummary = New GridGroupSummaryItemCollection(CurrentView)
            gsiDisplaySummary.Add(SummaryItemType.Max, "UnitsOnOrder", colUnitsOnOrder, My.Resources.MaxFormat)
            gsiDisplaySummary.Add(SummaryItemType.Sum, "UnitsInStock", colUnitsInStock, My.Resources.SumFormat)
            gsiDisplaySummary.Add(SummaryItemType.Average, "UnitPrice", colUnitPrice, My.Resources.AvgFormatCurrency)
            gsiDisplaySummary.Add(SummaryItemType.Count, "ProductName", colProductName)

            '~row footer summary for details 
            gsiDisplaySummaryDetails = New GridGroupSummaryItemCollection(CurrentDetailView)
            gsiDisplaySummaryDetails.Add(SummaryItemType.Sum, "SubTotal", colSubTotal, My.Resources.SumFormatCurrency)
            gsiDisplaySummaryDetails.Add(SummaryItemType.Min, "Quantity", colQuantity, My.Resources.MinFormat)
        End Sub
        '</gridControl1>

        Private Sub DataSummaries_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            InitMasterDetailAppearance()
        End Sub
#End Region
#Region "Editing"
        '<chShowFooter>
        Private Sub SetShowFooter(ByVal show As Boolean)
            CurrentView.OptionsView.ShowFooter = show
            CurrentDetailView.OptionsView.ShowFooter = show
        End Sub
        Private Sub chShowFooter_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chShowFooter.CheckedChanged
            Dim chb As DevExpress.XtraEditors.CheckButton = TryCast(sender, DevExpress.XtraEditors.CheckButton)
            SetShowFooter(chb.Checked)
        End Sub
        '</chShowFooter>

        Private Function GetCheckedCaption() As String
            If chSummary.Checked Then
                Return chSummary.Tag.ToString()
            End If
            If chMultiSummary.Checked Then
                Return chMultiSummary.Tag.ToString()
            End If
            If chDisplaySummary.Checked Then
                Return chDisplaySummary.Tag.ToString()
            End If
            Return String.Empty
        End Function

        Private Sub SaveDisplaySummary()
            If displaySummary Then
                gsiDisplaySummary.Assign(CurrentView.GroupSummary)
                gsiDisplaySummaryDetails.Assign(CurrentDetailView.GroupSummary)
                CurrentView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleIfExpanded
                CurrentDetailView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleIfExpanded
            End If
            displaySummary = False
        End Sub
#End Region
        Private Function GetSubTotalFromDataRow(ByVal row_Renamed As DataRow) As Decimal
            Dim q As Decimal = Convert.ToDecimal(row_Renamed("Quantity"))
            Dim p As Decimal = Convert.ToDecimal(row_Renamed("UnitPrice"))
            Dim d As Decimal = Convert.ToDecimal(row_Renamed("Discount"))
            Return q * p * (1 - d)
        End Function

        Private Sub gridView1_CustomUnboundColumnData(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs) Handles gridView1.CustomUnboundColumnData
            If e.IsSetData OrElse e.Column.FieldName <> "SubTotal" Then
                Return
            End If
            Dim view As GridView = TryCast(sender, GridView)
            e.Value = GetSubTotalFromDataRow(CType(e.Row, DataRowView).Row)
        End Sub

        Private updateInfo As Boolean = False
        Private Sub chSummary_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chDisplaySummary.CheckedChanged, chMultiSummary.CheckedChanged, chSummary.CheckedChanged
            If updateInfo Then
                Return
            End If
            OnButtonChecked(TryCast(sender, CheckButton))
        End Sub

        '<gridControl1>
        Private Sub OnButtonChecked(ByVal button As CheckButton)
            If button.Tag Is Nothing Then Return
            updateInfo = True
            Dim caption As String = button.Tag.ToString()
            Select Case caption
                Case "Summary"
                    chSummary.Checked = True
                    chDisplaySummary.Checked = False
                    chMultiSummary.Checked = chDisplaySummary.Checked
                    SaveDisplaySummary()
                    CurrentView.GroupSummary.Assign(gsiSummary)
                    CurrentDetailView.GroupSummary.Assign(gsiSummary)
                Case "Multi Summary"
                    chMultiSummary.Checked = True
                    chDisplaySummary.Checked = False
                    chSummary.Checked = chDisplaySummary.Checked
                    SaveDisplaySummary()
                    CurrentView.GroupSummary.Assign(gsiMultiSummary)
                    CurrentDetailView.GroupSummary.Assign(gsiMultiSummaryDetail)
                Case "Display Summary"
                    chDisplaySummary.Checked = True
                    chSummary.Checked = False
                    chMultiSummary.Checked = chSummary.Checked
                    displaySummary = True
                    CurrentView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways
                    CurrentDetailView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways
                    CurrentView.GroupSummary.Assign(gsiDisplaySummary)
                    CurrentDetailView.GroupSummary.Assign(gsiDisplaySummaryDetails)
            End Select
            updateInfo = False
        End Sub
        '</gridControl1>
    End Class
End Namespace