Mini Kabibi Habibi
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>
}
}