Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions Mvc.JQuery.DataTables.Common/DataTablesFiltering.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace Mvc.JQuery.DataTables
{
internal class DataTablesFiltering
public class DataTablesFiltering
{
public IQueryable<T> ApplyFiltersAndSort<T>(DataTablesParam dtParameters, IQueryable<T> data, DataTablesPropertyInfo[] columns)
{
Expand All @@ -30,7 +30,11 @@ public IQueryable<T> ApplyFiltersAndSort<T>(DataTablesParam dtParameters, IQuery
}
}
var values = parts.Where(p => p != null);
data = data.Where(string.Join(" or ", values), parameters.ToArray());
var filterClause = string.Join(" or ", values);
if (string.IsNullOrWhiteSpace(filterClause) == false)
{
data = data.Where(filterClause, parameters.ToArray());
}
}
for (int i = 0; i < dtParameters.sSearchValues.Count; i++)
{
Expand Down Expand Up @@ -114,7 +118,7 @@ private static ReturnedFilteredQueryForType Guard(Func<DataTablesPropertyInfo, b

public static void RegisterFilter<T>(GuardedFilter filter)
{
Filters.Add(Guard(arg => arg is T, filter));
Filters.Add(Guard(arg => arg.Type == typeof(T), filter));
}

private static string GetFilterClause(string query, DataTablesPropertyInfo column, List<object> parametersForLinqQuery)
Expand Down
16 changes: 11 additions & 5 deletions Mvc.JQuery.DataTables.Common/Processing/TypeFilters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -251,11 +251,17 @@ public static string StringFilter(string q, string columnname, DataTablesPropert

public static string EnumFilter(string q, string columnname, DataTablesPropertyInfo propertyInfo, List<object> parametersForLinqQuery)
{

if (q.StartsWith("^")) q = q.Substring(1);
if (q.EndsWith("$")) q = q.Substring(0, q.Length - 1);
parametersForLinqQuery.Add(ParseValue(q, propertyInfo.Type));
return columnname + " == @" + (parametersForLinqQuery.Count - 1);
try
{
if (q.StartsWith("^")) q = q.Substring(1);
if (q.EndsWith("$")) q = q.Substring(0, q.Length - 1);
parametersForLinqQuery.Add(ParseValue(q, propertyInfo.Type));
return columnname + " == @" + (parametersForLinqQuery.Count - 1);
}
catch (Exception)
{
return null;
}
}
}
}