Skip to content

Commit ca6b8a4

Browse files
committed
Allow initial search values
1 parent 8225866 commit ca6b8a4

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

Mvc.JQuery.Datatables.Templates/Views/Shared/DataTable.cshtml

+3-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@
5757
"success": fnCallback
5858
});
5959
},
60-
"aoColumnDefs" : @Html.Raw(Model.ColumnDefsString)
60+
"aoColumnDefs" : @Html.Raw(Model.ColumnDefsString),
61+
"aoSearchCols": @Html.Raw(Model.ColumnInitialSearchString)
6162
@Html.Raw(!string.IsNullOrWhiteSpace(Model.JsOptionsString) ? ", " + Model.JsOptionsString : "")
6263
@if (!string.IsNullOrEmpty(Model.Language))
6364
{
@@ -72,7 +73,7 @@
7273
</text>
7374
}
7475
});
75-
@if (Model.ColumnFilter)
76+
@if (Model.ColumnFilter)
7677
{
7778
<text>
7879
dt.columnFilter(@Html.Raw(Model.ColumnFilterVm.ToString()));

Mvc.JQuery.Datatables/ColDef.cs

+4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23

34
namespace Mvc.JQuery.Datatables
45
{
@@ -22,6 +23,9 @@ protected internal ColDef(Type type)
2223
public string MRenderFunction { get; set; }
2324
public FilterDef Filter { get; set; }
2425

26+
IDictionary<string, object> m_JsInitialSearchCols = new Dictionary<string, object>();
27+
public IDictionary<string, object> JsInitialSearchCols { get { return m_JsInitialSearchCols; } }
28+
2529
public static ColDef Create(string name, string p1, Type propertyType, bool visible = true, bool sortable = true,
2630
SortDirection sortDirection = SortDirection.None, string mRenderFunction = null, string pCssClass = "",
2731
string pCssClassHeader = "")

Mvc.JQuery.Datatables/DataTableConfigVm.cs

+33-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,15 @@ public string ColumnDefsString
114114

115115
public bool AutoWidth { get; set; }
116116

117-
117+
public string ColumnInitialSearchString
118+
{
119+
get
120+
{
121+
return convertColumnDefsInitialSearchToJson(Columns);
122+
}
123+
}
124+
125+
118126

119127
public string Dom
120128
{
@@ -225,7 +233,17 @@ public _FilterOn<DataTableConfigVm> FilterOn(string columnName, object jsOptions
225233
IDictionary<string, object> optionsDict = convertObjectToDictionary(jsOptions);
226234
return FilterOn(columnName, optionsDict);
227235
}
236+
public _FilterOn<DataTableConfigVm> FilterOn(string columnName, object jsOptions, object jsInitialSearchCols)
237+
{
238+
IDictionary<string, object> optionsDict = convertObjectToDictionary(jsOptions);
239+
IDictionary<string, object> initialSearchColsDict = convertObjectToDictionary(jsInitialSearchCols);
240+
return FilterOn(columnName, optionsDict, initialSearchColsDict);
241+
}
228242
public _FilterOn<DataTableConfigVm> FilterOn(string columnName, IDictionary<string, object> jsOptions)
243+
{
244+
return FilterOn(columnName, jsOptions, null);
245+
}
246+
public _FilterOn<DataTableConfigVm> FilterOn(string columnName, IDictionary<string, object> jsOptions, IDictionary<string, object> jsInitialSearchCols)
229247
{
230248
var colDef = this.Columns.Single(c => c.Name == columnName);
231249
if (jsOptions != null)
@@ -235,6 +253,13 @@ public _FilterOn<DataTableConfigVm> FilterOn(string columnName, IDictionary<stri
235253
colDef.Filter[jsOption.Key] = jsOption.Value;
236254
}
237255
}
256+
if (jsInitialSearchCols != null)
257+
{
258+
foreach (var jsInitialSearchCol in jsInitialSearchCols)
259+
{
260+
colDef.JsInitialSearchCols[jsInitialSearchCol.Key] = jsInitialSearchCol.Value;
261+
}
262+
}
238263
return new _FilterOn<DataTableConfigVm>(this, colDef);
239264
}
240265

@@ -279,6 +304,13 @@ private static string convertColumnDefsToJson(IEnumerable<ColDef> columns)
279304
return "[]";
280305
}
281306

307+
private static string convertColumnDefsInitialSearchToJson(IEnumerable<ColDef> columns)
308+
{
309+
var initialSearches = columns
310+
.Select(c => c.Searchable & c.JsInitialSearchCols.Any() ? c.JsInitialSearchCols : null).ToArray();
311+
return new JavaScriptSerializer().Serialize(initialSearches);
312+
}
313+
282314
private static string convertColumnSortingToJson(IEnumerable<ColDef> columns)
283315
{
284316
var sortList = columns.Select((c, idx) => c.SortDirection == SortDirection.None ? new dynamic[] { -1, "" } : (c.SortDirection == SortDirection.Ascending ? new dynamic[] { idx, "asc" } : new dynamic[] { idx, "desc" })).Where(x => x[0] > -1).ToArray();

0 commit comments

Comments
 (0)