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. (Last updated on: June 24, 2019).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Adding a push button to the "Summary" Header

Thread ID:





19196 Sep 20,2004 11:17 PM UTC Sep 22,2004 08:39 PM UTC WinForms 6
Tags: Grouping
David Llewellyn
Asked On September 20, 2004 11:17 PM UTC

Hello, Is there any way in which I can add a "push button" to the right hand side of the summary headers on a grouping grid. I want to be able to use this button to select all checkboxes in a certain column, for that particular group. I can change the whole header into a large button, by the following code:- private void TableControl_PrepareViewStyleInfo(object sender, GridPrepareViewStyleInfoEventArgs e) { if(e.Style.CellType == "Header") { string formtext = e.Style.FormattedText.ToString(); e.Style.CellType = "PushButton"; e.Style.Description = formtext; } This makes the header into a large button with the description. But I would like a small button placed on the right hand side of the summary in the header row. Thanks, David.

Administrator [Syncfusion]
Replied On September 21, 2004 12:26 AM UTC

David, You could handle TableModel.QueryCoveredRange. The GridTable class internally handles QueryCoveredRange and executes the code below for DisplayElementKind.Caption: protected virtual void OnQueryCoveredRange(GridQueryCoveredRangeEventArgs e) { GridTable thisTable = this; if (e.RowIndex < thisTable.DisplayElements.Count) { Element el = thisTable.DisplayElements[e.RowIndex]; switch (el.Kind) { case DisplayElementKind.Caption: { int maxCaptionColCount = Math.Max(this.GetColumnIndentCount(), TableDescriptor.GetColCount()-1); int startCol = el.GroupLevel+1; IGridGroupOptionsSource g = el.ParentGroup as IGridGroupOptionsSource; if (g != null && !g.GroupOptions.ShowCaptionPlusMinus) { startCol--; } int d = (RelatedTables.Count > 0) ? 1 : 0; if (!((GridTable) el.ParentTable).TableOptions.ShowRecordPlusMinus) d = 0; if (e.ColIndex >= startCol && e.ColIndex <= maxCaptionColCount) { if (g == null || !g.GroupOptions.ShowCaptionSummaryCells) { e.Range = GridRangeInfo.Cells(e.RowIndex, startCol, e.RowIndex, maxCaptionColCount); e.Handled = true; } else { e.Range = GridRangeInfo.Cell(e.RowIndex, e.ColIndex); if (e.Range.Left <= GetColumnIndentCount()) { e.Range = e.Range.UnionRange(GridRangeInfo.Cells(e.Range.Top, el.GroupLevel+1+d, e.Range.Bottom, GetColumnIndentCount())); e.Handled = true; } } } else if (e.ColIndex == el.GroupLevel) { e.Range = GridRangeInfo.Cell(e.RowIndex, e.ColIndex); e.Handled = true; // PlusMinus } else if (e.ColIndex > maxCaptionColCount) { e.Range = GridRangeInfo.Cell(e.RowIndex, e.ColIndex); e.Handled = true; } break; } } ] } So, what you could do is provide your own handler for QueryCoveredRange - copy paste above code into your handler and modify it to your needs. make sure to set e.Handled = true. This will instruct the grid not to exececute it''s own (above) covering mechanism for the DisplayElementKind.Caption Stefan

Administrator [Syncfusion]
Replied On September 21, 2004 12:37 AM UTC

Or maybe better would be to create your own cell type, derive it from GridHeaderCellRenderer/GridHeaderCellModel and register it with groupingControl.TableModel, e.g. as "MyCaption" cell type. Then you can assign that celltype to groupingControl.Appearance.GroupCaptionCell.CellType = "MyCaption". In your derived cell type you can add a button (as shown in the Grid\Samples\In Depth\CellButtons example) or simply override OnDraw and do your own custom drawing for the caption cell. Stefan

David Llewellyn
Replied On September 22, 2004 01:56 AM UTC

Hello Stefan. Thank you for your help. I have created a new gridcellbutton as you have suggested and it now looks good. Although, now I need to know what groupsummary header button has been clicked on. I am using a objectgrid_TableControlCellButtonClicked event, but how do I retrieve the summary data? For example, if the summary header is: Collection ID : Cars - 21 Items How do I interrogate this and retrieve this data? I need to be able to find the string "Cars".

David Llewellyn
Replied On September 22, 2004 04:36 AM UTC

Hello Stefan, Please ignore the last message that I posted. I realise that I could use this code on the event click to obtain the summary caption string:- Element el = this.objectgrid.Table.DisplayElements[e.Inner.RowIndex]; string captionsummary = el.Info.ToString(); Thanks for your help. David

Administrator [Syncfusion]
Replied On September 22, 2004 08:36 AM UTC

David, don''t rely on the Info property - this is more for help with debugging to find out what kind of object you are dealing with ... Better do this: Group g = this.objectgrid.Table.DisplayElements[e.Inner.RowIndex].ParentGroup; string captionsummary = g.Category; // or CategoriesToString(); or GridTableCellStyleInfo style = this.objectgrid.TableModel[e.Inner.RowIndex, e.Inner.ColIndex]; Group g = style.TableCellIdentity.DisplayElement.ParentGroup; ... Stefan

David Llewellyn
Replied On September 22, 2004 08:39 PM UTC

Hello Stefan, That works well. Thanks for your help. David.


This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

Please sign in to access our forum

This page will automatically be redirected to the sign-in page in 10 seconds.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile
Live Chat Icon