Hi All
I just want to learn when i do custom excel export i want to get filtered data from ajax request
I tried .view() but it just return data on screen like if i have 20 data and show just 10 of them i get just 10 of them
on the other hand i tried .data() function but that is returning all data and i have really huge data like 15k data
How to get just filtered data?
here my grid and js functon and controller
@( Html.Kendo().Grid<Orpac.Controllers.DashboardsController.ATGAlerts>() .Name("grdProductAlert").AutoBind(false) .HtmlAttributes("width: 100%;cellpadding:0;") .DataSource(d => d.Ajax().Read(r => r.Action("GridProductAlertBinding", "Dashboards").Type(HttpVerbs.Get)).ServerOperation(false)) .Columns(columns => { columns.Bound(e => e.BelIdent).Title("Id").Width("auto"); columns.Bound(e => e.StationCode).Title("Station Code").Width("auto"); columns.Bound(e => e.StationName).Title("Station Name").Width("auto"); columns.Bound(e => e.BelTarih).Title("Date Time").ClientTemplate("#= kendo.toString(BelTarih, 'MM/dd/yyyy') #").ClientGroupHeaderTemplate("DateTime" + ": #= kendo.toString(value, 'MM/dd/yyyy') #").Width("auto"); columns.Bound(e => e.BelInsTime).Title("Alert Time").ClientTemplate("#= kendo.toString(BelInsTime, 'MM/dd/yyyy HH:mm tt') #").ClientGroupHeaderTemplate("DateTime" + ": #= kendo.toString(value, 'MM/dd/yyyy HH:mm tt') #").Width("auto"); columns.Bound(e => e.ProductCode).Title("Product Code").Width("auto"); columns.Bound(e => e.BelAlarm).Title("Alarm").Width("auto"); columns.Bound(e => e.BelLevelPerc).Title("Level %").Width("auto"); columns.Bound(e => e.BelTotCapacity).Title("Total Capacity").Width("auto"); columns.Bound(e => e.BelFuelVolume).Title("Available Volume").Width("auto"); } ) .ToolBar(toolBar => { toolBar.Custom().Text(" ").HtmlAttributes(new { @class = "btnexcel", href = "#", onclick= "testexcel()" }); toolBar.Custom().Text((string)ViewData["ClearFilter"]).HtmlAttributes(new { @class = "k-button", id = "cleargrid", href = "#", onclick = "clearFiltersFuelLevel()" }); } ) .Selectable() .Sortable() .Pageable(pageable => pageable .Refresh(true) .PageSizes(true) .ButtonCount(5)) .Filterable(filterable => filterable .Extra(false) .Operators(operators => operators .ForString(str => str.Clear() .StartsWith((string)ViewData["Startswith"]) .Contains((string)ViewData["Contains"]) )) ) .Groupable() .Scrollable(scrolling => scrolling.Height("100%")) .Resizable(config => { config.Columns(true); }) .Reorderable(config => { config.Columns(true); }) .ColumnMenu() )here my js
function testexcel() { var grid = $("#grdProductAlert").data('kendoGrid'); var viewdata = { data: grid.dataSource.view() }; var url = '../Dashboards/ExportCsvList'; $.ajax({ type: "POST", url: url, traditional:true, data: { request: viewdata.data }, success: function (msg) { } });}
here my conroller
public FileResult ExportCsvList(List<ATGAlerts> request) { //Get the data representing the current grid state - page, sort and filter var products = request; using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) { /* Create the worksheet. */ SpreadsheetDocument spreadsheet = Excel.CreateWorkbook(stream); Excel.AddBasicStyles(spreadsheet); Excel.AddAdditionalStyles(spreadsheet); Excel.AddWorksheet(spreadsheet, "ProductAlert"); Worksheet worksheet = spreadsheet.WorkbookPart.WorksheetParts.First().Worksheet; //create columns and set their widths Excel.SetColumnHeadingValue(spreadsheet, worksheet, 1, "Ident", false, false); Excel.SetColumnWidth(worksheet, 1, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 2, "Station Code", false, false); Excel.SetColumnWidth(worksheet, 2, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 3, "Station Name", false, false); Excel.SetColumnWidth(worksheet, 3, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 4, "Date Time", false, false); Excel.SetColumnWidth(worksheet, 4, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 5, "Alert Time", false, false); Excel.SetColumnWidth(worksheet, 5, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 6, "Product Code", false, false); Excel.SetColumnWidth(worksheet, 6, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 7, "Alarm", false, false); Excel.SetColumnWidth(worksheet, 7, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 8, "Level %", false, false); Excel.SetColumnWidth(worksheet, 8, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 9, "Total Capacity", false, false); Excel.SetColumnWidth(worksheet, 9, 50); Excel.SetColumnHeadingValue(spreadsheet, worksheet, 10, "Available Volume", false, false); Excel.SetColumnWidth(worksheet, 10, 50); /* Add the data to the worksheet. */ // For each row of data... for (int idx = 0; idx < products.Count; idx++) { // Set the field values in the spreadsheet for the current row. Excel.SetCellValue(spreadsheet, worksheet, 1, (uint)idx + 2, products[idx].BelIdent.ToString(), false, false); Excel.SetCellValue(spreadsheet, worksheet, 2, (uint)idx + 2, products[idx].StationCode, false, false); Excel.SetCellValue(spreadsheet, worksheet, 3, (uint)idx + 2, products[idx].StationName, false, false); Excel.SetCellValue(spreadsheet, worksheet, 4, (uint)idx + 2, products[idx].BelTarih.Value, 1, false); Excel.SetCellValue(spreadsheet, worksheet, 5, (uint)idx + 2, products[idx].BelInsTime.Value, 1, false); Excel.SetCellValue(spreadsheet, worksheet, 6, (uint)idx + 2, products[idx].ProductCode, false, false); Excel.SetCellValue(spreadsheet, worksheet, 7, (uint)idx + 2, products[idx].BelAlarm, false, false); Excel.SetCellValue(spreadsheet, worksheet, 8, (uint)idx + 2, products[idx].BelLevelPerc.ToString(), false, false); Excel.SetCellValue(spreadsheet, worksheet, 9, (uint)idx + 2, products[idx].BelTotCapacity.ToString(), false, false); Excel.SetCellValue(spreadsheet, worksheet, 10, (uint)idx + 2, products[idx].BelFuelVolume.ToString(), false, false); } /* Save the worksheet and store it in Session using the spreadsheet title. */ worksheet.Save(); spreadsheet.Close(); return File(stream.ToArray(), //The binary data of the XLS file "application/vnd.ms-excel", //MIME type of Excel files "ProductAlert.xlsx"); } }
please help