From 42eeeb8e98c9edabd6b18e1bd75e7f43c15d45cc Mon Sep 17 00:00:00 2001 From: UseMuse Date: Fri, 14 Feb 2020 12:44:10 +0300 Subject: [PATCH] everything works as before, the flag "displayedDataOnly" was added, the default value of which is true - which means, unload only what is displayed on the screen, otherwise, unload all data --- .../Controllers/HomeController.cs | 7 ++--- AspNetCoreServerSide/wwwroot/js/app.js | 26 +++++++++++++++++-- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/AspNetCoreServerSide/Controllers/HomeController.cs b/AspNetCoreServerSide/Controllers/HomeController.cs index d7f36e0..b46d4e6 100644 --- a/AspNetCoreServerSide/Controllers/HomeController.cs +++ b/AspNetCoreServerSide/Controllers/HomeController.cs @@ -78,11 +78,12 @@ public async Task LoadTable([FromBody]JqueryDataTablesParameters } } - public async Task GetExcel() + public async Task GetExcel(bool displayedDataOnly) { var param = HttpContext.Session.GetString(nameof(JqueryDataTablesParameters)); - - var results = await _demoService.GetDataAsync(JsonSerializer.Deserialize(param)); + var _param = JsonSerializer.Deserialize(param); + _param.Length = displayedDataOnly ? _param.Length : -1; + var results = await _demoService.GetDataAsync(_param); return new JqueryDataTablesExcelResult(_mapper.Map>(results.Items), "Demo Sheet Name", "Fingers10"); } diff --git a/AspNetCoreServerSide/wwwroot/js/app.js b/AspNetCoreServerSide/wwwroot/js/app.js index fde6c24..4c07208 100644 --- a/AspNetCoreServerSide/wwwroot/js/app.js +++ b/AspNetCoreServerSide/wwwroot/js/app.js @@ -97,14 +97,36 @@ $(() => { buttons: [ { text: 'Export to Excel', - className: 'btn btn-sm btn-dark', + className: 'btn btn-sm btn-dark btn-export-excel', action: function (e, dt, node, config) { - window.location.href = "/Home/GetExcel"; + var t = e.target; + var $checkbox = $('#displayedDataOnly'); + var displayedDataOnly = $checkbox.val(); + if (t.nodeName !== 'BUTTON') { + e.preventDefault(); + if (displayedDataOnly === 'true') { + $checkbox.prop("checked", false); + displayedDataOnly = $checkbox.val('false'); + } + else { + $checkbox.prop("checked", true); + displayedDataOnly = $checkbox.val('true'); + } + + return; + } + else + window.location.href = `/Home/GetExcel?displayedDataOnly=${displayedDataOnly}`; }, init: function (api, node, config) { $(node).removeClass('dt-button'); + $(node).html(`Export to Excel
+ + +
`) } }, + { text: 'Create', className: 'btn btn-sm btn-success',