Unplanned
Last Updated: 28 Oct 2021 14:42 by ADMIN
Rob
Created on: 28 Oct 2021 14:42
Category: TreeList
Type: Feature Request
1
Improve TreeList's Excel export performance

Exporting large amounts of data is very slow. 8000 records with 25+ columns take approximately 50 seconds to be sent to the export action. Increasing the number of records past 8k slows the export further, to a point where it takes minutes for the data to be sent to the controller.

Exemplary configuration:

@(Html.Kendo().TreeList<MVCTreeListTest.Models.CategoryModel>()
	.Name("treelist")
	.Columns(columns =>
	{
		columns.Add().Field(e => e.Name).Width(200);
		columns.Add().Field(e => e.Description).Width(300);
		columns.Add().Field(e => e.Field1);
		columns.Add().Field(e => e.Field2);
		columns.Add().Field(e => e.Field3);
		columns.Add().Field(e => e.Field4);
		columns.Add().Field(e => e.Field5);
		columns.Add().Field(e => e.Field6);
		columns.Add().Field(e => e.Field7);
		columns.Add().Field(e => e.Field8);
		columns.Add().Field(e => e.Field9);
		columns.Add().Field(e => e.Field10);
		columns.Add().Field(e => e.Field11);
		columns.Add().Field(e => e.Field12);
		columns.Add().Field(e => e.Field13);
		columns.Add().Field(e => e.Field14);
		columns.Add().Field(e => e.Field15);
		columns.Add().Field(e => e.Field16);
		columns.Add().Field(e => e.Field17);
		columns.Add().Field(e => e.Field18);
		columns.Add().Field(e => e.Field19);
		columns.Add().Field(e => e.Field20);
		columns.Add().Field(e => e.Field21);
		columns.Add().Field(e => e.Field22);
		columns.Add().Field(e => e.Field23);
	})
	.Toolbar(tools => tools.Excel())
	.Filterable(filterable => filterable
	.Extra(false))
	.Excel(excel => excel
		.FileName("Test.xlsx")
		.Filterable(true)
		.AllPages(true)
		.ForceProxy(true)
		.ProxyURL(Url.Action("Export", "Home"))
	)
	.Sortable()
	.DataSource(dataSource => dataSource
		.PageSize(250)
		.ServerOperation(false)
		.Read(read => read.Action("GetItemCategories", "Home"))
		.Model(m =>
		{
			m.Id(f => f.Id);
			m.ParentId(f => f.ParentCategoryId);
			m.Expanded(true);
			m.Field(f => f.Name);
			m.Field(f => f.Description);
			m.Field(f => f.IsActive);
		})
	)
	.Height(600)
)

0 comments