private async Task SetupGrid(RadGridView grid, List? achData) { achElectronicPaymentsTypeList = new(); achElectronicPaymentsDCTypeList = new(); grid.CreateCell += gvSummaryDrawerID_CreateCell; grid.ReadOnly = false; grid.MasterTemplate.AutoGenerateColumns = true; grid.MasterTemplate.ReadOnly = true; var achTypeData = achData .GroupBy(p => new { p.Type, p.DebitCreditType }) .Select(g => new { Type = g.Key.Type, DebitCreditType = g.Key.DebitCreditType, PaymentType = string.Empty, EpayGLNumber = string.Empty, BankAccount = string.Empty, AmountCollected = g.Sum(n => n.AmountCollected), ReturnAmount = g.Sum(n => n.ReturnAmount) }); foreach (var item in achTypeData) { achElectronicPaymentsTypeList.Add(new ACHElectronicPaymentsType { Type = item.Type, DebitCreditType = item.DebitCreditType, AmountCollected = item.AmountCollected, ReturnAmount = item.ReturnAmount }); } var achTypeDCTypeData = achData .GroupBy(p => new { p.Type, p.DCType, p.DebitCreditType }) .Select(g => new { Type = g.Key.Type, DCType = g.Key.DCType, DebitCreditType = g.Key.DebitCreditType, PaymentType = string.Empty, EpayGLNumber = string.Empty, BankAccount = string.Empty, AmountCollected = g.Sum(n => n.AmountCollected), ReturnAmount = g.Sum(n => n.ReturnAmount) }); foreach (var item in achTypeDCTypeData) { achElectronicPaymentsDCTypeList.Add(new ACHElectronicPaymentsDCType { Type = item.Type, DebitCreditType = item.DebitCreditType, DCType = item.DCType, AmountCollected = item.AmountCollected, ReturnAmount = item.ReturnAmount }); } foreach (var item in achData) { item.EpayGLNumber = string.Empty; item.BankAccount = 0; } if (achData is not null) { GridViewTemplate template1 = new GridViewTemplate(); template1.AutoGenerateColumns = true; template1.DataSource = achElectronicPaymentsDCTypeList; template1.AllowAddNewRow = false; template1.ReadOnly = false; template1.Caption = ""; grid.MasterTemplate.Templates.Add(template1); GridViewRelation relation1 = new GridViewRelation(grid.MasterTemplate); relation1.ChildTemplate = template1; relation1.RelationName = "TypeType"; relation1.ParentColumnNames.Add("Type"); relation1.ChildColumnNames.Add("Type"); grid.Relations.Add(relation1); GridViewTemplate template2 = new GridViewTemplate(); template2.AutoGenerateColumns = true; template2.DataSource = achData.Where(n => n.AmountCollected != 0).ToList(); template2.AllowAddNewRow = false; template2.ReadOnly = true; template2.Caption = "Payments"; template1.Templates.Add(template2); GridViewRelation relation2 = new GridViewRelation(template1); relation2.ChildTemplate = template2; relation2.RelationName = "TypeDCType"; relation2.ParentColumnNames.Add("Type"); relation2.ParentColumnNames.Add("DCType"); relation2.ChildColumnNames.Add("Type"); relation2.ChildColumnNames.Add("DCType"); grid.Relations.Add(relation2); GridViewTemplate template3 = new GridViewTemplate(); template3.AutoGenerateColumns = true; template3.DataSource = achData.Where(n => n.ReturnAmount != 0).ToList(); template3.AllowAddNewRow = false; template3.ReadOnly = true; template2.Caption = "Returns"; template1.Templates.Add(template3); GridViewRelation relation3 = new GridViewRelation(template1); relation3.ChildTemplate = template3; relation3.RelationName = "TypeDCType"; relation3.ParentColumnNames.Add("Type"); relation3.ParentColumnNames.Add("DCType"); relation3.ChildColumnNames.Add("Type"); relation3.ChildColumnNames.Add("DCType"); grid.Relations.Add(relation3); } //grid.TableElement.PageViewMode = PageViewMode.ExplorerBar; grid.DataSource = achElectronicPaymentsTypeList; grid.MasterTemplate.Columns["DebitCreditType"].IsVisible = false; grid.MasterTemplate.Columns["Type"].Width = 230; grid.MasterTemplate.Columns["Type"].HeaderText = "Type"; grid.MasterTemplate.Columns["Type"].HeaderTextAlignment = ContentAlignment.MiddleLeft; grid.MasterTemplate.Columns["PaymentType"].Width = 115; grid.MasterTemplate.Columns["PaymentType"].HeaderText = "Payment Type"; grid.MasterTemplate.Columns["PaymentType"].HeaderTextAlignment = ContentAlignment.MiddleLeft; grid.MasterTemplate.Columns["EpayGLNumber"].Width = 150; grid.MasterTemplate.Columns["EpayGLNumber"].HeaderText = "E-Pay GL Number"; grid.MasterTemplate.Columns["EpayGLNumber"].HeaderTextAlignment = ContentAlignment.MiddleLeft; grid.MasterTemplate.Columns["BankAccount"].Width = 150; grid.MasterTemplate.Columns["BankAccount"].HeaderText = "Bank Account"; grid.MasterTemplate.Columns["BankAccount"].HeaderTextAlignment = ContentAlignment.MiddleLeft; grid.MasterTemplate.Columns["AmountCollected"].Width = 180; grid.MasterTemplate.Columns["AmountCollected"].HeaderText = "Amount Collected"; grid.MasterTemplate.Columns["AmountCollected"].HeaderTextAlignment = ContentAlignment.MiddleRight; grid.MasterTemplate.Columns["AmountCollected"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Columns["ReturnAmount"].Width = 180; grid.MasterTemplate.Columns["ReturnAmount"].HeaderText = "Return Amount"; grid.MasterTemplate.Columns["ReturnAmount"].HeaderTextAlignment = ContentAlignment.MiddleRight; grid.MasterTemplate.Columns["ReturnAmount"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Columns["Deposit"].Width = 180; grid.MasterTemplate.Columns["Deposit"].HeaderText = "Deposit"; grid.MasterTemplate.Columns["Deposit"].HeaderTextAlignment = ContentAlignment.MiddleRight; grid.MasterTemplate.Columns["Deposit"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].ShowColumnHeaders = false; grid.MasterTemplate.Templates[0].Columns["Type"].IsVisible = false; grid.MasterTemplate.Templates[0].Columns["DebitCreditType"].IsVisible = false; grid.MasterTemplate.Templates[0].Columns["DCType"].Width = 230; grid.MasterTemplate.Templates[0].Columns["DCType"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["DCType"].ReadOnly = true; grid.MasterTemplate.Templates[0].Columns["PaymentType"].Width = 100; grid.MasterTemplate.Templates[0].Columns["PaymentType"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["PaymentType"].ReadOnly = true; if (AuthServices.Instance.IsAuthorized((int)ESecurityCheckPoints.Form_Deposit_ChangeGLonEDeposit)) { gvDrawerSummary.MasterTemplate.Templates[0].Columns.Remove("EpayGLNumber"); List glData = await dailyDrawerManager.GetElectronicChartOfAccountsAsync("D", 1); var comboColumn = new GridViewComboBoxColumn(); comboColumn.Name = "EpayGLNumber"; comboColumn.FieldName = "EpayGLNumber"; comboColumn.DataSource = glData; comboColumn.DisplayMember = "Description"; comboColumn.ValueMember = "ID"; comboColumn.Width = 175; gvDrawerSummary.Templates[0].Columns.Add(comboColumn); gvDrawerSummary.Templates[0].Columns.Move(8, 4); } else { grid.MasterTemplate.Templates[0].Columns["EpayGLNumber"].Width = 150; grid.MasterTemplate.Templates[0].Columns["EpayGLNumber"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["EpayGLNumber"].ReadOnly = true; } if (AuthServices.Instance.IsAuthorized((int)ESecurityCheckPoints.Form_Deposit_ChangeBankAccountonDeposit)) { gvDrawerSummary.MasterTemplate.Templates[0].Columns.Remove("BankAccount"); List data = await dailyDrawerManager.GetBankAccountsElectronicPaymentAcct(1); List bankData = new(); foreach (var item in data) { bankData.Add(new StringValue { ID = item.BankID.ToString(), Description = item.Name }); } var comboColumn = new GridViewComboBoxColumn(); comboColumn.Name = "BankAccount"; comboColumn.FieldName = "BankAccount"; comboColumn.DataSource = bankData; comboColumn.DisplayMember = "Description"; comboColumn.ValueMember = "ID"; comboColumn.Width = 175; gvDrawerSummary.Templates[0].Columns.Add(comboColumn); gvDrawerSummary.Templates[0].Columns.Move(8, 5); } else { grid.MasterTemplate.Templates[0].Columns["BankAccount"].Width = 150; grid.MasterTemplate.Templates[0].Columns["BankAccount"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["BankAccount"].ReadOnly = true; } grid.MasterTemplate.Templates[0].Columns["AmountCollected"].Width = 180; grid.MasterTemplate.Templates[0].Columns["AmountCollected"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["AmountCollected"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].Columns["AmountCollected"].ReadOnly = true; grid.MasterTemplate.Templates[0].Columns["ReturnAmount"].Width = 180; grid.MasterTemplate.Templates[0].Columns["ReturnAmount"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["ReturnAmount"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].Columns["ReturnAmount"].ReadOnly = true; grid.MasterTemplate.Templates[0].Columns["Deposit"].Width = 180; grid.MasterTemplate.Templates[0].Columns["Deposit"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Columns["Deposit"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].Columns["Deposit"].ReadOnly = true; //return; for (int i = 0; i <= 1; i++) { grid.MasterTemplate.Templates[0].Templates[i].Columns["Type"].IsVisible = false; grid.MasterTemplate.Templates[0].Templates[i].Columns["DCType"].IsVisible = false; grid.MasterTemplate.Templates[0].Templates[i].Columns["DebitCreditType"].IsVisible = false; grid.MasterTemplate.Templates[0].Templates[i].Columns["Name"].Width = 200; grid.MasterTemplate.Templates[0].Templates[i].Columns["Name"].HeaderText = "Payments"; grid.MasterTemplate.Templates[0].Templates[i].Columns["Name"].HeaderTextAlignment = ContentAlignment.MiddleLeft; grid.MasterTemplate.Templates[0].Templates[i].Columns["PaymentType"].Width = 100; grid.MasterTemplate.Templates[0].Templates[i].Columns["PaymentType"].HeaderText = "Type"; grid.MasterTemplate.Templates[0].Templates[i].Columns["PaymentType"].HeaderTextAlignment = ContentAlignment.MiddleLeft; grid.MasterTemplate.Templates[0].Templates[i].Columns["EpayGLNumber"].Width = 150; grid.MasterTemplate.Templates[0].Templates[i].Columns["EpayGLNumber"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Templates[i].Columns["BankAccount"].Width = 150; grid.MasterTemplate.Templates[0].Templates[i].Columns["BankAccount"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Templates[i].Columns["AmountCollected"].Width = 180; grid.MasterTemplate.Templates[0].Templates[i].Columns["AmountCollected"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].Templates[i].Columns["AmountCollected"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Templates[i].Columns["ReturnAmount"].Width = 180; grid.MasterTemplate.Templates[0].Templates[i].Columns["ReturnAmount"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].Templates[i].Columns["ReturnAmount"].HeaderText = string.Empty; grid.MasterTemplate.Templates[0].Templates[i].Columns["Deposit"].Width = 180; grid.MasterTemplate.Templates[0].Templates[i].Columns["Deposit"].FormatString = "{0:#,##0.00}"; grid.MasterTemplate.Templates[0].Templates[i].Columns["Deposit"].HeaderText = string.Empty; } } private void gvSummaryDrawerID_CreateCell(object sender, GridViewCreateCellEventArgs e) { if (e.CellType == typeof(GridDetailViewCellElement)) { e.CellElement = new CustomGridDetailViewCellElement(e.Column, e.Row); } } public class CustomGridDetailViewCellElement : GridDetailViewCellElement { public CustomGridDetailViewCellElement(GridViewColumn column, GridRowElement row) : base(column, row) { } protected override Type ThemeEffectiveType { get { return typeof(GridDetailViewCellElement); } } protected override IRadPageViewProvider CreatePageViewProvider() { IRadPageViewProvider provider = base.CreatePageViewProvider(); provider = new RadPageViewExplorerBarProvider(); return provider; } }