Posted 27 April 2018, 1:54 am EST
I finded solution how use custom filtration and disableServerRead = false.
If briefly, then the idea in the next:
- create partial view GridFilterField.
ColumnOptions contains info about column and filterType
@foreach (var filter in Model.ColumnOptions)
{
switch (filter.Value.CustomFilterType)
{
case CustomFilterType.Bool:
<div class="form-group">
<label>
<input type="checkbox" class="form-control" data-filter-type="bool" data-column="@filter.Key" />
@filter.Value.Text
</label>
</div>
break;
case CustomFilterType.Numeric:
<div class="form-group">
<label class="control-label">@filter.Value.Text</label>
<input class="form-control number" data-filter-type="numeric" data-column="@filter.Key" />
</div>
break;
case CustomFilterType.String:
<div class="form-group">
<label class="control-label">@filter.Value.Text</label>
<input class="form-control" data-filter-type="string" data-column="@filter.Key" />
</div>
break;
default:
break;
}
}
<div class="col-md-6">
<input type="button" value="@ResourceHelper.GeneralResource("Common.Apply")" class="btn btn-default width100 btn-submit" />
</div>
Than in javascript I created method:
this.setFilter = function (filterContainer) {
var filterDefObject = JSON.parse(this.filter.filterDefinition);
var filters = new Array();
$(filterContainer).find('input[data-column][data-filter-type], select[data-column][data-filter-type]').each(function () {
var column = $(this).data('column');
var type = $(this).data('filter-type');
var value = type === 'bool' ? $(this).prop('checked') : $(this).val();
if (!value || !type || !column)
return;
var condition1 = { operator: null, value: null };
switch (type) {
case 'numeric':
case 'bool':
condition1 = { operator: 0, value: value };
break;
case 'string':
condition1 = { operator: 8, value: value };
break;
default:
break;
}
var filterItem = {
binding: column,
and: true,
condition1: condition1,
condition2: { operator: null, value: null },
type: 'condition'
};
filters.push(filterItem);
});
filterDefObject.filters = filters;
this.filter.filterDefinition = JSON.stringify(filterDefObject);
}