develop

devExpress 그리드 소계. 커스텀.

파드파드 2019. 1. 17. 17:48
반응형

devExpress 그리드 소계. 커스텀.


출처 : https://www.devexpress.com/Support/Center/Question/Details/T199505/showing-subtotals-in-a-gridview


namespace T199505 {

    public partial class Form1 : DevExpress.XtraEditors.XtraForm {

        public Form1() {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e) {

            gridControl1.DataSource = CreateData();

            gridView1.Columns["UOM"].Visible = false;

            gridView1.CustomColumnDisplayText += gridView1_CustomColumnDisplayText;

            gridView1.CustomSummaryCalculate += gridView1_CustomSummaryCalculate;


            gridView1.Columns["Name"].Group();


            GridGroupSummaryItem item = new GridGroupSummaryItem();

            item.FieldName = "Quantity";

            item.SummaryType = DevExpress.Data.SummaryItemType.Custom;

            item.ShowInGroupColumnFooter = gridView1.Columns["Quantity"];

            gridView1.GroupSummary.Add(item);

        }


        int totalValue = 0;


        void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) {

            if (!e.IsGroupSummary)

                return;

            if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)

                totalValue = 0;

            else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)

                totalValue += Convert.ToInt32(e.FieldValue);

            else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize) {

                e.TotalValue = "Total = " + totalValue + " " + gridView1.GetRowCellValue(e.RowHandle, gridView1.Columns["UOM"]);

                e.TotalValueReady = true;

            }


        }


        void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) {

            if (e.Column == gridView1.Columns["Quantity"])

                e.DisplayText = e.Value + " " + gridView1.GetListSourceRowCellValue(e.ListSourceRowIndex, gridView1.Columns["UOM"]);

        }


        private DataTable CreateData() {

            DataTable dt = new DataTable();


            dt.Columns.Add("ID", typeof(int));

            dt.Columns.Add("Name", typeof(string));

            dt.Columns.Add("Quantity", typeof(string));

            dt.Columns.Add("UOM", typeof(string));


            for (int i = 0; i < 5; i++) {

                dt.Rows.Add(i, "Name" + i, 100 * (i + 1), "LBS");

                dt.Rows.Add(i, "Name" + i, 100 * (i + 10), "LBS");

            }


            return dt;

        }


    }

}

반응형