Mini Kabibi Habibi

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

using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraPivotGrid.Demos.Helpers;
using System;
using System.Windows.Forms;

namespace DevExpress.XtraPivotGrid.Demos.Modules {
    public partial class AsynchronousMode : TutorialControl {
        bool isDataBaseGeneratorRunned = false;

        protected override bool HideCustFormWhenSwitchDemo {
            get { return false; }
        }
        public AsynchronousMode() {
            CreateWaitDialog();
            InitializeComponent();

            TutorialInfo.WhatsThisCodeFile = "CS\\PivotGridMainDemo\\Modules\\AsyncMode.cs";
            TutorialInfo.WhatsThisXMLFile = "DevExpress.XtraPivotGrid.Demos.CodeInfo.AsyncMode.xml";

            rgDataSources.SelectedIndex = 0;
            ServerParameters.LoadParameters();
        }
        void AsynchronousMode_Load(object sender, System.EventArgs e) {
            pivotGridControl.FieldsCustomization(splitContainerControl1.Panel2);
            UpdateGenerateDataSourceButtonPosition();
        }
        void AsynchronousMode_Resize(object sender, System.EventArgs e) {
            UpdateGenerateDataSourceButtonPosition();
        }
        void splitContainerControl1_SplitterMoved(object sender, EventArgs e) {
            UpdateGenerateDataSourceButtonPosition();
        }
        void UpdateGenerateDataSourceButtonPosition() {
            btnGenerateDataSource.Left = Math.Max(splitContainerControl1.SplitterBounds.Left - btnGenerateDataSource.Width, rgDataSources.Right + rgDataSources.Margin.Right);
        }
        //<btnGenerateDataSource>
        void btnGenerateDataSource_Click(object sender, EventArgs e) {
            RunDBGenerator("Return to Demo");
        }
        //</btnGenerateDataSource>
        //<rgDataSources>
        void rgDataSources_SelectedIndexChanged(object sender, EventArgs e) {
            DisableControls();
            switch(rgDataSources.SelectedIndex) {
                case 0:
                    Initialize(InitializerDataSource.OlapCube);
                    break;
                case 1:
                    Initialize(InitializerDataSource.TableDataSource);
                    break;
            }
        }
        //</rgDataSources>
        //<btnGenerateDataSource>
        void RunDBGenerator(string demoString) {
            using(frmSQLConnector formConnector = new frmSQLConnector(demoString)) {
                formConnector.ShowDialog();
                if(rgDataSources.SelectedIndex == 1) {
                    rgDataSources.Enabled = false;
                    isDataBaseGeneratorRunned = true;
                    Initialize(InitializerDataSource.TableDataSource);
                }
            }
        }
        //</btnGenerateDataSource>
        void Initialize(InitializerDataSource dataSourceType) {
            AsynchronousPivotInitializer.Initialize(pivotGridControl, AsyncInitializationCompleted, dataSourceType);
        }
        void DisableControls() {
            rgDataSources.Enabled = false;
            btnGenerateDataSource.Enabled = false;
        }
        void EnableControls() {
            rgDataSources.Enabled = true;
            btnGenerateDataSource.Enabled = true;
        }
        void AsyncInitializationCompleted(AsyncOperationResult result) {
            EnableControls();
            if(result == null) {
                if(!isDataBaseGeneratorRunned)
                    RunDBGenerator("Start Demo");
                pivotGridControl.Enabled = false;
                labelError.Text = rgDataSources.SelectedIndex == 0 ? AsynchronousPivotInitializer.OlapError : AsynchronousPivotInitializer.TableError;
                panelError.Visible = true;
            } else {
                pivotGridControl.Enabled = true;
                panelError.Visible = false;
            }
        }
        //<pivotGridControl>
        void pivotGridControl1_CellDoubleClick(object sender, PivotCellEventArgs e) {
            AsyncCompletedHandler showDrillDown = delegate(AsyncOperationResult result) {
                try {
                    ShowDrillDown((PivotDrillDownDataSource)result.Value);
                } catch(Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            };
            pivotGridControl.CreateDrillDownDataSourceAsync(e.ColumnIndex, e.RowIndex, showDrillDown);
        }        
        void ShowDrillDown(PivotDrillDownDataSource drillDownDataSource) {
            if(drillDownDataSource.RowCount == 0) {
                //Also shows for calculated datafields in this demo
                MessageBox.Show("DrillDown doesn't contains results");
                return;
            }
            XtraForm form = new XtraForm();
            form.Text = String.Format("Drill Down Results: {0} Rows", drillDownDataSource.RowCount);
            form.Width = 520;
            form.Height = 300;
            form.StartPosition = FormStartPosition.CenterParent;
            DataGridView grid = new DataGridView();
            grid.Parent = form;
            grid.DataBindingComplete += grid_DataBindingComplete;
            grid.Dock = DockStyle.Fill;
            grid.DataSource = drillDownDataSource;
            form.Icon = ResourceImageHelper.CreateIconFromResources("DevExpress.XtraPivotGrid.Demos.PivotGridMainDemo.ico", typeof(AsynchronousMode).Assembly);
            form.ShowDialog();
            form.Dispose();
        }
        //</pivotGridControl>
        void grid_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) {
            DataGridView grid = (DataGridView)sender;
            for(int i = 0; i < grid.ColumnCount; i++) {
                DataGridViewColumn column = grid.Columns[i];
                column.HeaderText = GetHeaderText(column.Name);
            }
        }
        string GetHeaderText(string drilldownColumnName) {
            for(int i = 0; i < pivotGridControl.Fields.Count; i++) {
                PivotGridField field = pivotGridControl.Fields[i];
                string fieldDrillDownColumnName = pivotGridControl.IsOLAPDataSource ? field.OLAPDrillDownColumnName : field.ExpressionFieldName;
                if(fieldDrillDownColumnName == drilldownColumnName)
                    return !string.IsNullOrEmpty(field.Caption) ? field.Caption : fieldDrillDownColumnName;
            }
            return drilldownColumnName;
        }
        void pivotGridControl_AsyncOperationCompleted(object sender, EventArgs e) {
            EnableControls();
        }
        void pivotGridControl_AsyncOperationStarting(object sender, EventArgs e) {
            DisableControls();
        }
    }
}