We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
close icon

Adding a custom header row in GridComputingControl

hi there, I am using a gridGroupingControl to bind with a DataTable in my form and am facing a problem. i am trying to add another header row in the grid, other than the already present column headers row, but am not being able to do so. I was wondering if anyone could provide any help in this matter. prompt reply will be appreciated. thanks, Atif.

3 Replies

AD Administrator Syncfusion Team September 22, 2004 01:01 PM UTC

Hi Atif, You can derive a class from GridChildTable and add your own custom rows there. To do this you also need to derive GridEngine and override the childtable factory method and register your custom engine. In QueryCellStyleInfo you can then specify contents for these rows. See attached example. Stefan GroupCustomers_4400.zip


AI Atif Iqbal Malik September 23, 2004 03:31 AM UTC

thanks Stefan. I am still unsure about where exactly to write code for adding header rows. if in (public class GroupingChildTable : GridChildTable) then which function/method? and which property of which object (ColumnDescriptor, TableDescriptor, etc.) do i have to access in order to add custom rows in the gridGroupingControl? i''ll appreciate if you could write i or 2 lines of code to clarify. thanks for your help. Atif


AD Administrator Syncfusion Team September 23, 2004 09:18 AM UTC

Hi Atif, they will be added in the OnInitializeSections override of GroupingChildTable. Look for the following lines in the sample: // GroupingEngineFactory provides a modified GridChildTable that adds an extra section GridEngineFactory.Factory = new GroupingEngineFactory(); this.groupingGrid1.QueryCellStyleInfo += new GridTableCellStyleInfoEventHandler(groupingGrid1_QueryCellStyleInfo); this.groupingGrid1.TableModel.QueryCoveredRange += new Syncfusion.Windows.Forms.Grid.GridQueryCoveredRangeEventHandler(TableModel_QueryCoveredRange); // QueryCoveredRange might or might not be of use for you ... private void TableModel_QueryCoveredRange(object sender, Syncfusion.Windows.Forms.Grid.GridQueryCoveredRangeEventArgs e) { GridTableModel tm = sender as GridTableModel; Element el = tm.Table.DisplayElements[e.RowIndex]; if (el is ColumnHeaderRow) { GridTableCellStyleInfo style = tm[e.RowIndex, e.ColIndex]; //if (style.TableCellIdentity.Column.Name == "CustomerID" // || style.TableCellIdentity.Column.Name == "CompanyName") if (e.ColIndex >= 3 && e.ColIndex <= 4) e.Range = GridRangeInfo.Cells(e.RowIndex, 3, e.RowIndex, 4); e.Handled = true; } } // groupingGrid1_QueryCellStyleInfo lets you specify the text to be displayed in the additional headers private void groupingGrid1_QueryCellStyleInfo(object sender, GridTableCellStyleInfoEventArgs e) { e.Style.CellTipText = e.TableCellIdentity.Info; if (e.TableCellIdentity.DisplayElement is ExtraSection) { e.Style.CellValue = "Extra"; } } public class GroupingEngineFactory : GridEngineFactoryBase { public override GridEngine CreateEngine() { return new GroupingEngine(); } } public class GroupingEngine : GridEngine { public override ChildTable CreateChildTable(Element parent) { return new GroupingChildTable(parent); } } public class ExtraSection : EmptySection { public ExtraSection(Group parent) : base(parent) { } public override DisplayElementKind Kind { get { return DisplayElementKind.None; } } public override int GetElementCount() { return 1; } public override int GetVisibleCount() { return 1; } public override double GetYAmountCount() { return 40; } } public class GroupingChildTable : GridChildTable { public GroupingChildTable(Element parent) : base(parent) { } protected override void OnInitializeSections(bool hasRecords, SortColumnDescriptorCollection fields) { base.OnInitializeSections(hasRecords, fields); EndInit(); if (this.IsTopLevelGroup) { // Search for Detailssection for (int n = 0; n < Sections.Count; n++) { Section s = this.Sections[n]; if (s is DetailsSection) { // Insert before Details InvalidateCounter(); this.Sections.Insert(n, new ExtraSection(this)); break; } } } } public override bool IsChildVisible(Element el) { if (this.IsTopLevelGroup && el is ExtraSection) { return true; } else return base.IsChildVisible(el); } } Stefan

Loader.
Live Chat Icon For mobile
Up arrow icon