From f7dd2685715e3b4fd89059ad8a917df5264445f0 Mon Sep 17 00:00:00 2001 From: Emrah KONDUR Date: Sat, 11 Mar 2023 17:54:05 +0300 Subject: [PATCH] #118 Persist search value of individual column with statesave --- DatatableJS.Net/JSHelper.cs | 24 ++++++++++++++++++++++-- DatatableJS/JSHelper.cs | 24 ++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/DatatableJS.Net/JSHelper.cs b/DatatableJS.Net/JSHelper.cs index 35ba2d8..b91cce2 100644 --- a/DatatableJS.Net/JSHelper.cs +++ b/DatatableJS.Net/JSHelper.cs @@ -73,14 +73,32 @@ public static MvcHtmlString Render(this GridBuilder grid) { var tfoot = grid._columnSearching ? $@" - - {string.Join(Environment.NewLine, grid._columns.Select(a => string.Format("{0}", a.Searchable ? $"" : "")))} + + {string.Join(Environment.NewLine, grid._columns.Select(a => string.Format("{0}", a.Searchable ? $"" : "")))} " : string.Empty; var tfootInit = string.Empty; + var initFootSearch = grid._stateSave ? + $@"var dtable = $('#{grid._name}').DataTable(); + var dState = dtable.state.loaded(); + var dCounter = -1; + if (dState) {{ + dtable.columns().eq(0).each(function(colIdx) {{ + var colSearch = dState.columns[colIdx].search; + if (dState.columns[colIdx].visible){{ + dCounter++; + }} + if (colSearch.search) {{ + $('input', $('.filters th')[dCounter]).val(colSearch.search); + }} + }}); + dtable.draw(); + }};" + : string.Empty; + if (!String.IsNullOrEmpty(grid._callBack.InitComplete) && grid._columnSearching == false) { tfootInit = "initComplete: function (settings, json) {"; @@ -102,6 +120,7 @@ public static MvcHtmlString Render(this GridBuilder grid) }} }}); }}); + {initFootSearch} }}," : string.Empty; } @@ -119,6 +138,7 @@ public static MvcHtmlString Render(this GridBuilder grid) }} }}); }}); + {initFootSearch} }}," : string.Empty; } diff --git a/DatatableJS/JSHelper.cs b/DatatableJS/JSHelper.cs index ae12eef..08502f7 100644 --- a/DatatableJS/JSHelper.cs +++ b/DatatableJS/JSHelper.cs @@ -58,14 +58,32 @@ public static IHtmlContent Render(this GridBuilder grid) { var tfoot = grid._columnSearching ? $@" - - {string.Join(Environment.NewLine, grid._columns.Select(a => string.Format("{0}", a.Searchable ? $"" : "")))} + + {string.Join(Environment.NewLine, grid._columns.Select(a => string.Format("{0}", a.Searchable ? $"" : "")))} " : string.Empty; var tfootInit = string.Empty; + var initFootSearch = grid._stateSave ? + $@"var dtable = $('#{grid._name}').DataTable(); + var dState = dtable.state.loaded(); + var dCounter = -1; + if (dState) {{ + dtable.columns().eq(0).each(function(colIdx) {{ + var colSearch = dState.columns[colIdx].search; + if (dState.columns[colIdx].visible){{ + dCounter++; + }} + if (colSearch.search) {{ + $('input', $('.filters th')[dCounter]).val(colSearch.search); + }} + }}); + dtable.draw(); + }};" + : string.Empty; + if (!String.IsNullOrEmpty(grid._callBack.InitComplete) && grid._columnSearching == false) { tfootInit = "initComplete: function (settings, json) {"; @@ -87,6 +105,7 @@ public static IHtmlContent Render(this GridBuilder grid) }} }}); }}); + {initFootSearch} }}," : string.Empty; } @@ -104,6 +123,7 @@ public static IHtmlContent Render(this GridBuilder grid) }} }}); }}); + {initFootSearch} }}," : string.Empty; }