Mini Kabibi Habibi

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

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.Utils;
using DevExpress.Data;
using DevExpress.XtraGrid;
using DevExpress.XtraEditors;

namespace DevExpress.XtraGrid.Demos {
    /// <summary>
    /// Summary description for DataSummaries.
    /// </summary>
    public partial class DataSummaries : TutorialControl {
        public DataSummaries() {
            //
            // Required for Windows Form Designer support
            //
            CreateWaitDialog();
            InitializeComponent();
            TutorialInfo.WhatsThisCodeFile = "CS\\GridMainDemo\\Modules\\DataSummaries.cs";
            TutorialInfo.WhatsThisXMLFile = "DevExpress.XtraGrid.Demos.CodeInfo.DataSummaries.xml";
            InitNWindData();
            InitSummaries();
            InitEditing();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
        //<gridControl1>
        private GridGroupSummaryItemCollection gsiSummary, gsiMultiSummary, gsiMultiSummaryDetail, gsiDisplaySummary, gsiDisplaySummaryDetails;
        //</gridControl1>

        private bool displaySummary = false;

        protected override PaintView[] PaintViews {
            get {
                return new PaintView[] {
										   new PaintView(advBandedGridView1, "Pastel#3"), 
										   new PaintView(gridView1, "Pastel#2")
				};
            }
        }
        #region Init
        public override DevExpress.XtraGrid.Views.Base.BaseView ExportView { get { return advBandedGridView1; } }


        private GridControl CurrentGrid { get { return gridControl1; } }
        private GridView CurrentView { get { return advBandedGridView1; } }
        private GridView CurrentDetailView { get { return gridView1; } }

        protected override void InitMDBData(string connectionString) {
            OleDbDataAdapter oleDBAdapter = new OleDbDataAdapter("SELECT * FROM Products", connectionString);
            SetWaitDialogCaption(Properties.Resources.LoadingProducts);
            oleDBAdapter.Fill(dsNWindProducts1.Products);

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

            oleDBAdapter = new OleDbDataAdapter("SELECT * FROM Suppliers", connectionString);
            SetWaitDialogCaption(Properties.Resources.LoadingSuppliers);
            oleDBAdapter.Fill(dsNWindProducts1.Suppliers);
        }
        DataSet dsXML = new DataSet();
        protected override void InitXMLData(string dataFileName) {
            dsXML.ReadXml(dataFileName);
            this.gridControl1.LevelTree.Nodes[0].RelationName = "ProductsOrderDetails";
            this.gridControl1.DataSource = dsXML.Tables["Products"];
            this.repositoryItemLookUpEdit1.DataSource = dsXML.Tables["Suppliers"];
            this.colSubTotal.UnboundType = UnboundColumnType.Decimal;
        }

        private void InitEditing() {
            gridControl1.ForceInitialize();
            colSupplierID.GroupIndex = 0;
            colPrice.GroupIndex = 0;
            SetShowFooter(chShowFooter.Checked);
            OnButtonChecked(chSummary);
        }
        private void InitMasterDetailAppearance() {
            CurrentView.BeginUpdate();
            CurrentView.ExpandAllGroups();
            CurrentView.FocusedRowHandle = 0;
            CurrentView.SetMasterRowExpanded(CurrentView.FocusedRowHandle, true);
            CurrentView.EndUpdate();
        }
        //<gridControl1>
        private void 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", null, Properties.Resources.AvgByPriceFormatCurrency);

            /* ~multi row summary for detail */
            gsiMultiSummaryDetail = new GridGroupSummaryItemCollection(CurrentDetailView);
            gsiMultiSummaryDetail.Add(SummaryItemType.Count, "OrderID");
            gsiMultiSummaryDetail.Add(SummaryItemType.Sum, "SubTotal", null, Properties.Resources.SubTotalFormatCurrency);

            /* ~row footer summary */
            gsiDisplaySummary = new GridGroupSummaryItemCollection(CurrentView);
            gsiDisplaySummary.Add(SummaryItemType.Max, "UnitsOnOrder", colUnitsOnOrder, Properties.Resources.MaxFormat);
            gsiDisplaySummary.Add(SummaryItemType.Sum, "UnitsInStock", colUnitsInStock, Properties.Resources.SumFormat);
            gsiDisplaySummary.Add(SummaryItemType.Average, "UnitPrice", colUnitPrice, Properties.Resources.AvgFormatCurrency);
            gsiDisplaySummary.Add(SummaryItemType.Count, "ProductName", colProductName);

            /* ~row footer summary for details */
            gsiDisplaySummaryDetails = new GridGroupSummaryItemCollection(CurrentDetailView);
            gsiDisplaySummaryDetails.Add(SummaryItemType.Sum, "SubTotal", colSubTotal, Properties.Resources.SumFormatCurrency);
            gsiDisplaySummaryDetails.Add(SummaryItemType.Min, "Quantity", colQuantity, Properties.Resources.MinFormat);
        }
        //</gridControl1>

        private void DataSummaries_Load(object sender, System.EventArgs e) {
            InitMasterDetailAppearance();
        }
        #endregion
        #region Editing
        //<chShowFooter>
        private void SetShowFooter(bool show) {
            CurrentView.OptionsView.ShowFooter = show;
            CurrentDetailView.OptionsView.ShowFooter = show;
        }
        private void chShowFooter_CheckedChanged(object sender, System.EventArgs e) {
            DevExpress.XtraEditors.CheckButton chb = sender as DevExpress.XtraEditors.CheckButton;
            SetShowFooter(chb.Checked);
        }
        //</chShowFooter>

        private string GetCheckedCaption() {
            if (chSummary.Checked) return chSummary.Tag.ToString();
            if (chMultiSummary.Checked) return chMultiSummary.Tag.ToString();
            if (chDisplaySummary.Checked) return chDisplaySummary.Tag.ToString();
            return string.Empty;
        }

        private void SaveDisplaySummary() {
            if (displaySummary) {
                gsiDisplaySummary.Assign(CurrentView.GroupSummary);
                gsiDisplaySummaryDetails.Assign(CurrentDetailView.GroupSummary);
                CurrentView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleIfExpanded;
                CurrentDetailView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleIfExpanded;
            }
            displaySummary = false;
        }
        #endregion
        decimal GetSubTotalFromDataRow(DataRow row) {
            decimal q = Convert.ToDecimal(row["Quantity"]);
            decimal p = Convert.ToDecimal(row["UnitPrice"]);
            decimal d = Convert.ToDecimal(row["Discount"]);
            return q * p * (1 - d);
        }

        private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) {
            if (e.IsSetData || e.Column.FieldName != "SubTotal") return;
            GridView view = sender as GridView;
            e.Value = GetSubTotalFromDataRow(((DataRowView)e.Row).Row);
        }

        bool updateInfo = false;
        private void chSummary_CheckedChanged(object sender, EventArgs e) {
            if (updateInfo) return;
            OnButtonChecked(sender as CheckButton);
        }

        //<gridControl1>
        private void OnButtonChecked(CheckButton button) {
            if(button.Tag == null) return;
            updateInfo = true;
            string caption = button.Tag.ToString();
            switch (caption) {
                case "Summary":
                    chSummary.Checked = true;
                    chMultiSummary.Checked = chDisplaySummary.Checked = false;
                    SaveDisplaySummary();
                    CurrentView.GroupSummary.Assign(gsiSummary);
                    CurrentDetailView.GroupSummary.Assign(gsiSummary);
                    break;
                case "Multi Summary":
                    chMultiSummary.Checked = true;
                    chSummary.Checked = chDisplaySummary.Checked = false;
                    SaveDisplaySummary();
                    CurrentView.GroupSummary.Assign(gsiMultiSummary);
                    CurrentDetailView.GroupSummary.Assign(gsiMultiSummaryDetail);
                    break;
                case "Display Summary":
                    chDisplaySummary.Checked = true;
                    chMultiSummary.Checked = chSummary.Checked = false;
                    displaySummary = true;
                    CurrentView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways;
                    CurrentDetailView.OptionsView.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways;
                    CurrentView.GroupSummary.Assign(gsiDisplaySummary);
                    CurrentDetailView.GroupSummary.Assign(gsiDisplaySummaryDetails);
                    break;
            }
            updateInfo = false;
        }
        //</gridControl1>
    }
}