Telerik Forums
KendoReact Forum
1 answer
62 views
TaskBoard is not in the list of filtering tags or available to tag below the question

Add this to general discussion
Wissam
Telerik team
 answered on 28 Aug 2023
0 answers
286 views
Grid's excel export group header functionality is not working as expected, although Excel export group footer is working as expected.

Project Dependencies: 
        "@progress/kendo-data-query": "1.5.4",
        "@progress/kendo-drawing": "1.9.4",
        "@progress/kendo-licensing": "1.3.0",
        "@progress/kendo-react-animation": "5.1.0",
        "@progress/kendo-react-data-tools": "5.1.0",
        "@progress/kendo-react-dateinputs": "5.1.0",
        "@progress/kendo-react-dropdowns": "5.1.0",
        "@progress/kendo-react-excel-export": "5.1.0",
        "@progress/kendo-react-grid": "5.1.0",
        "@progress/kendo-react-buttons":"5.1.0",
        "@progress/kendo-react-inputs": "5.1.0",
        "@progress/kendo-react-intl": "5.1.0",
        "@progress/kendo-react-pdf": "5.1.0",
        "@progress/kendo-react-treeview": "5.1.0",
        "@progress/kendo-theme-material": "3.31.0",

"react": "17.0.2",

Expectation: Excel export should display the group headers/footers.

Actual result: Excel export doesn't render the group headers, with footers being displayed as expected.

How to reproduce: 

1. For the following columns and grid data, create the following group descriptors (for example) and render function to use for the group headers(footers):


const data = () => [
		{
			key: "1",
			item_one: "Item_One One",
			item_two: "Item_Two Two",
			item_three: 5,
			item_four_one: "Item_Four_One 1",
			item_four_two: "Item_Four_Two 2",
			item_four_three: "Item_Four_Three 1",
			selected: false
		},
		{
			key: "2",
			item_one: "Item_One One",
			item_two: "Item_Two Three",
			item_three: 6,
			item_four_one: "Item_Four_One 1",
			item_four_two: "Item_Four_Two 2",
			item_four_three: "Item_Four_Three 1",
			selected: false
		},
		{
			key: "3",
			item_one: "Item_One Two",
			item_two: "Item_Two Five",
			item_three: 1,
			item_four_one: "Item_Four_One 1",
			item_four_two: "Item_Four_Two 2",
			item_four_three: "Item_Four_Three 1",
			selected: false
		},
		{
			key: "4",
			item_one: "Item_One Two",
			item_two: "Item_Two Three",
			item_three: 6,
			item_four_one: "Item_Four_One 1",
			item_four_two: "Item_Four_Two 2",
			item_four_three: "Item_Four_Three 1",
			selected: false
		}
	];

	const columns = (): Column[] => [
		{
			field: "item_one",
			title: "Item One",
			filterType: "text",
		},
		{
			field: "item_two",
			title: "Item Two",
			filterType: "text",
		},
		{
			field: "item_three",
			title: "Item Three",
			filterType: "numeric",
		},
		{
			field: "item_four",
			title: "Item Four",
			children: [
				{
					field: "item_four_one",
					title: "Item Four One"
				},
				{
					field: "item_four_two",
					title: "Item Four Two",
				},
				{
					field: "item_four_three",
					title: "Item Four three",
				}
			]
		},
	];


	const groups = [
		{field: "item_one", aggregates: [{ field: "item_three", aggregate: "sum" }] },
		{field: "item_two", aggregates: [{ field: "item_three", aggregate: "sum" }] }
	];

	const groupRenderer = (aggregates, field) => {
		const aggregate = aggregates.item_three.sum;
		if (field === "item_three") {                    
			return(aggregate && <> Total Item Three: {aggregate} </>)
		}
		return null;
	}



2. map the columns into the `ExcelExportColumnProps`:


const excelReportColumns = columns.map((column) => {
		return {
			field: column.field,
			title: column.title,
			children: column.children,
			groupHeader: (props: ExcelExportGroupHeaderProps) => groupRenderer(props.aggregates, props.field),
		} as ExcelExportColumnProps;
	}


3. pass those properties in the `ExcelExport` component:


return (
		<ExcelExport
			{...restExcelExportProps}
			creator={author}
			data={process(data, { sort: sortDesc, filter: filterDesc, group: groups }).data}
			ref={excelExporter}
			columns={excelReportColumns}
			group={groups}
		>
		</ExcelExport>
	)


4. Export the Excel file and notice that it doesn't render the group headers correctly. This only works for the excel group *footers*.

Remarks:

a) This procedure produces the expected results when the mapping in step 2 (above) is the following for the groupFooters:


const excelReportColumns = columns.map((column) => {
        return {
            field: column.field,
            title: column.title,
            children: column.children,
            groupFooter: (props: ExcelExportGroupFooterProps) => groupRenderer(props.aggregates, props.field),
        } as ExcelExportColumnProps;
    }



b) The `ExcelExportColumnProps` interface has the following properties (there are 2 properties named `groupHeader`):


export interface ExcelExportColumnProps extends ColumnBase {
		/**
		 * The options of the column data cells.
		 */
		cellOptions?: CellOptions;
		/**
		 * The field to which the column is bound.
		 */
		field?: string;
		/**
		 * The options of the column footer cell.
		 */
		footerCellOptions?: CellOptions;
		/**
		 * The column footer. Can be a function or a React component.
		 */
		footer?: Function | ExcelExportFooter;
		/**
		 * The options of the column group footer cells.
		 */
		groupFooterCellOptions?: CellOptions;
		/**
		 * The header of the group. Can be a function or a React component.
		 */
		groupHeader?: Function | ExcelExportGroupHeader;
		/**
		 * The footer of the group. Can be a function or a React component.
		 */
		groupHeader?: Function | ExcelExportGroupFooter;
		/**
		 * The options of the column group header cells.
		 */
		groupHeaderCellOptions?: CellOptions;
	}


Relevant screenshots: The footers are produced correctly, but not the headers.
Panagiotis
Top achievements
Rank 1
 asked on 24 Aug 2023
1 answer
201 views

I have a grid where the columns don't align properly with the header of the grid and also the grid unnecessarily has a horizontal scrollbar where it's not needed.

1)How can I make the scrollbar appear when there are more columns and not when there are one or two columns?

2)How to make the alignment in sync ?

Vessy
Telerik team
 answered on 24 Aug 2023
1 answer
536 views
I have a Drawer component with 8 items. On click of 1st item i should display another drawer component with 10 menu items.  Kindly help me
Konstantin Dikov
Telerik team
 answered on 23 Aug 2023
1 answer
116 views

I am using Kendo React UI framework for Front End development. Can anyone help as how to arrange file structure when it comes to complex project?

Bernd
Top achievements
Rank 5
Bronze
Bronze
Bronze
 answered on 23 Aug 2023
1 answer
275 views

We're using KendoReact components but finding the animations distracting - how can we disable them by default?

 

In jQuery kendo there was kendo.effects.disable()

is there anything like that for KendoReact?

Wissam
Telerik team
 answered on 23 Aug 2023
2 answers
228 views

Hello! I am trying to add drop down support to my Kendo React Spreadsheet element. I am following this set of docs but the result does not seem to be working when tested using the most recent React component.

 

Not working example - https://codesandbox.io/s/fervent-driscoll-2mwf49?file=/app/main.tsx

Working but not using react - http://dojo.telerik.com/IgiFEwEN

 

Any help would be greatly appreciated!

Wissam
Telerik team
 answered on 23 Aug 2023
1 answer
125 views
I am trying to find out if it is possible to set up a pivot grid with a local dataset that give the use more control over what to pivot. Basically I'd like to get a pivot grid to work more like an excel pivot table where I have a data set and then let the use configure what columns and rows they want out of that data. All examples seem to be using hardcoded column and row axes, is it possible to set up one or two defaults but then let the end user add more rows/columns via the configurator?
Konstantin Dikov
Telerik team
 answered on 22 Aug 2023
1 answer
92 views

Hi.

I have setup an example app with a Splitter component that devides the screen between a TreeView and a DataGrid component and setup a drag&drop scenario wher I am able to drag grid rows into the tree to add tree branches.

https://stackblitz.com/edit/vitejs-vite-k3wgr5?file=src%2FApp.tsx

If I want to use the drag handles in the Datagrid to drag a grid row onto the TreeView, the row vanishes under the left side of the Splitter window but I want to keep it visible when I drag it over the tree. I already had a similar issue a while ago and tried to use the same solution but it doesn't seem to work.

Can you help me out and show me how to keep the row visible while dragging it over the tree on the left?

Thanks,

Greetings,

Bernd

Konstantin Dikov
Telerik team
 answered on 21 Aug 2023
1 answer
219 views

I am using a Kendo Drawer, and I am facing two issues. Firstly, when I place a

 <DrawerContent>{props.children}</DrawerContent>

component and have children inside it, the content doesn't scroll properly. Secondly, I'm unsure how to consistently display a footer on all pages when using a Kendo Drawer.


Wissam
Telerik team
 answered on 18 Aug 2023
Narrow your results
Selected tags
Tags
+? more
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?