Yes You can dynamically change PageSize after doing filteration
Firstly you need to capture filter event and change grid page size in that event.
Edit
Check out below script
<input id="ddPageSize" />
<div id="grid"/>
<script>
var data_10plus = [
{ text: "10", value: "10" },
{ text: "20", value: "20" },
{ text: "30", value: "30" },
{ text: "40", value: "40" },
{ text: "50", value: "50" }
];
var data_5plus = [
{ text: "5", value: "5" },
{ text: "10", value: "10" },
{ text: "15", value: "15" },
{ text: "20", value: "20" }
];
$(document).ready(function () {
var grid = $("#grid").kendoGrid({ //your grid
..
..
}).data("kendoGrid");
$("#ddPageSize").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data_10plus,
index: 0,
change: function (e) {
var grid = $("#grid").data("kendoGrid");
grid.dataSource.pageSize(parseInt(this.value()));
}
});
grid.dataSource.originalFilter = grid.dataSource.filter;
grid.dataSource.filter = function () { // Replace the original filter function.
var result = grid.dataSource.originalFilter.apply(this, arguments);
if (arguments.length > 0) {
this.trigger("afterfilter", arguments);
}
return result;
}
grid.dataSource.bind('afterfilter', function (e) {
var count = $("#grid").data("kendoGrid").dataSource.total();
if (count < 20){
$("#grid").data("kendoGrid").dataSource.pageSize(parseInt("5"));
$("#ddPageSize").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data_5plus,
index: 0,
change: function (e) {
var grid = $("#grid").data("kendoGrid");
grid.dataSource.pageSize(parseInt(this.value()));
}
});
}
else{
$("#grid").data("kendoGrid").dataSource.pageSize(parseInt("10"));
$("#ddPageSize").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data_10plus,
index: 0,
change: function (e) {
var grid = $("#grid").data("kendoGrid");
grid.dataSource.pageSize(parseInt(this.value()));
}
});
}
});
});
</script>
i hope this may help you