jQuery Grid Grouping
- Getting Started
- Setting Up ASP.NET Core MVC
- Accessibility
- Chart
- ASP.NET
- Overview
- Getting Started
- Design-time Support
- ItemTypes
- Chart Elements
- Chart Types
- Area Chart
- Bar Chart
- Bubble Chart
- Line Chart
- Pie Chart
- Sparklines
- Donut Chart
- Scatter Chart
- Spline Chart
- SplineArea Chart
- RangeArea Chart
- RangeBar Chart
- RangeSpline Chart
- StepLine Chart
- StepArea Chart
- PolarLine Chart
- PolarArea Chart
- PolarBar Chart
- PolarSpline Chart
- PolarSplineArea Chart
- PolarScatter Chart
- Combining Chart Types
- Data Binding
- Exporting
- Localization
- Selection
- Zooming and Panning
- Appearance and Styling
- Server Side Events
- Client Events
- Supported Browsers
- ASP.NET Core
- ASP.NET MVC
- JAVA Apache Wicket
- API
- allowUTCFormatting
- applyAnimation
- axisX
- axisTickText
- axisType
- categoricalValues
- decimalTicks
- drawColor
- drawWidth
- endOffset
- fixedEnd
- inverseOrder
- max
- min
- minorPlotStripColor
- minorPlotStripDashStyle
- minorPlotStripWidth
- minorTicksColor
- minorTicksHeight
- minorTicksRepeat
- minorTicksWidth
- offset
- plotBands
- plotLines
- plotStripColor
- plotStripDashStyle
- plotStripWidth
- startOffset
- swapLocation
- ticksColor
- ticksHeight
- ticksPlacement
- ticksRepeat
- ticksWidth
- title
- axisY
- axisTickText
- axisType
- decimalTicks
- drawColor
- drawWidth
- endOffset
- fixedEnd
- inverseOrder
- max
- min
- minorPlotStripColor
- minorPlotStripDashStyle
- minorPlotStripWidth
- minorTicksColor
- minorTicksHeight
- minorTicksRepeat
- minorTicksWidth
- offset
- plotBands
- plotLines
- plotStripColor
- plotStripDashStyle
- plotStripWidth
- startOffset
- swapLocation
- ticksColor
- ticksHeight
- ticksPlacement
- ticksRepeat
- ticksWidth
- title
- backgroundColor
- borderColor
- borderRadius
- borderWidth
- chartAreaBackgroundColor
- chartAreaBackgroundImage
- chartAreaBorderColor
- chartAreaBorderWidth
- chartAreaPaddingBottom
- chartAreaPaddingLeft
- chartAreaPaddingRight
- chartAreaPaddingTop
- chartLegend
- dataSeries
- enableAutoFit
- events
- exportOptions
- height
- isInverted
- margin
- primaryHeader
- secondaryHeader
- seriesPalette
- seriesSettings
- area
- bar
- bubble
- donut
- line
- pie
- polararea
- polarbar
- polarline
- polarscatter
- polarspline
- polarsplinearea
- rangearea
- rangebar
- rangesplinearea
- scatter
- spline
- splinearea
- steparea
- stepline
- seriesType
- theme
- tooltipSettings
- width
- zoomMode
- Getting Started
- Events
- How-To
- Methods
- Styling
- Supported Browsers
- ASP.NET
- Barcode
- QR Code
- TagCloud
- TreeMap
- Grid
- ASP.NET
- ASP.NET Core
- ASP.NET MVC
- JAVA Apache Wicket
- JavaScript
- API
- Settings
- altRowTemplate
- altRows
- columnReorder
- columns
- dataSource
- detailCollapseCssClass
- detailCollapseText
- detailExpandCollapse
- detailExpandCssClass
- detailExpandText
- detailTemplate
- editing
- exportOptions
- filtering
- grouping
- height
- maxHeight
- noRecordsTemplate
- noRecordsText
- paging
- resizing
- rowHover
- rowTemplate
- scrolling
- selection
- showHeader
- sorting
- toolbar
- Events
- Properties
- Methods
- addRow
- cancelEditing
- clearSelection
- collapseRow
- dataItem
- deleteRow
- destroy
- editCell
- editRow
- expandRow
- exportCsv
- exportExcel
- exportPdf
- filter
- hideColumn
- insertRow
- isHidden
- isLocked
- lockColumn
- page
- pageSize
- refresh
- reorderColumn
- revertChanges
- saveChanges
- scrollTop
- select
- selectedRowIndices
- showColumn
- sort
- ungroup
- unlockColumn
- Settings
- Getting Started
- Autogenerated Editors
- Binding to Data
- Cancel User Iteraction
- Change Options Dynamically
- Columns
- Custom Editors
- Exporting
- Filtering
- Footer Total Aggregates
- Grouping
- Hierarchy
- Paging
- RTL
- Scrolling
- Selection
- Sorting
- Templates
- Themes
- Validation
- API
- Accordion
- AutoComplete
- Button
- Calendar
- CheckBox
- ColorPicker
- ComboBox
- ContextMenu
- DataSource
- DatePicker
- DateTimePicker
- Draggable
- DropDown
- Droppable
- Editor
- ListBox
- LoadingPanel
- MaskedTextBox
- Menu
- MonthYearPicker
- NumericTextBox
- Pager
- ProgressBar
- RadioButton
- Rating
- RecursiveDataSource
- Slider
- SplitButton
- Splitter
- Switch
- Tabs
- TextBox
- TimePicker
- Timeline
- Tooltip
- TreeView
- Upload
- Window
The shieldui grid has build in grouping. It can be enabled by adding a group to the underlying datasource component:
$("#grid").shieldGrid({ dataSource: { schema: { fields: { ProductID: { path: "ProductID", type: Number }, UnitPrice: { path: "UnitPrice", type: Number }, UnitsInStock: { path: "UnitsInStock", type: String }, Discontinued: { path: "Discontinued", type: Boolean } } }, data: products, group: [ { field: "ProductID", order: "asc" } ] }, columns: [ { field: "ProductID", title: "ProductID", width: "330px", groupFooterTemplate: "Count: {count}" }, { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "230px", groupFooterTemplate: "Count: {count}" }, { field: "UnitsInStock", title: "Units In Stock", width: "230px" }, { field: "Discontinued", width: "230px", groupFooterTemplate: "Count: {count}" } ] });
More information about DataSource widget grouping you can find here: DataSource Grouping
If you want to show group aggregates you need to add aggregate in the datasource group definition and then to add groupFooterTemplate
with aggregate expression:
$("#grid").shieldGrid({ dataSource: { schema: { fields: { ProductID: { path: "ProductID", type: Number }, UnitPrice: { path: "UnitPrice", type: Number }, UnitsInStock: { path: "UnitsInStock", type: String }, Discontinued: { path: "Discontinued", type: Boolean } } }, data: products, group: [ { field: "ProductID", order: "asc", aggregate: [{ field: "ProductID", aggregate: "count", type: Number }, { field: "UnitPrice", aggregate: "count", type: Number }] }, { field: "Discontinued", order: "asc", aggregate: [{ field: "ProductID", aggregate: "count", type: Number }] } ] }, columns: [ { field: "ProductID", title: "ProductID", width: "330px", groupFooterTemplate: "Count: {count}" }, { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "230px", groupFooterTemplate: "Count: {count}" }, { field: "UnitsInStock", title: "Units In Stock", width: "230px" }, { field: "Discontinued", width: "230px", groupFooterTemplate: "Count: {count}" } ] });
Live example of grouping with group aggregates functionlity can be found here: grid grouping with aggregates
The grid control supports dragging column header and group by it. To enable drag to group functionality you need to set grouping.showGroupHeader
to true
and grouping.allowDragToGroup
to true
:
$("#grid").shieldGrid({ dataSource: { schema: { fields: { ProductID: { path: "ProductID", type: Number }, UnitPrice: { path: "UnitPrice", type: Number }, UnitsInStock: { path: "UnitsInStock", type: String }, Discontinued: { path: "Discontinued", type: Boolean } } }, data: products, group: [ { field: "ProductID", order: "asc", aggregate: [{ field: "ProductID", aggregate: "count", type: Number }, { field: "UnitPrice", aggregate: "count", type: Number }] }, { field: "Discontinued", order: "asc", aggregate: [{ field: "ProductID", aggregate: "count", type: Number }] } ] }, grouping: { showGroupHeader: true, allowDragToGroup: true, message: "Test" }, columns: [ { field: "ProductID", title: "ProductID", width: "330px", groupFooterTemplate: "Count: {count}" }, { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "230px", groupFooterTemplate: "Count: {count}" }, { field: "UnitsInStock", title: "Units In Stock", width: "230px" }, { field: "Discontinued", width: "230px", groupFooterTemplate: "Count: {count}" } ] });
Live example of grouping with enabled drag to group functionlity can be found here: grid grouping