Моя сетка Telerik MVC привязана к Ajax, и мне нужна возможность применять пользовательскую фильтрацию с помощью двух флажков (в DIV вверху). Когда флажок установлен, параметры будут установлены, и сетка будет перезагружена. Это работает нормально. Во время начальной загрузки данные сортируются на основе настроек сортировки в Telerik, но после того, как я установил флажок, данные упорядочиваются по идентификатору записи, а не по приоритету. Если я затем нажму F5, страница будет перезагружена, и данные отсортированы правильно. Сортировка может быть параметром для grid.rebind () или предоставлена в OnDataBinding, но до сих пор я не нашел того, что ищу.
ВОПРОС: Как указать порядок сортировки в OnDataBinding или, возможно, в другом клиентском событии.
Вот мой код:
<div style="float:right;width:600px;text-align:right">
<span>My Items <%=Html.CheckBox("newItems") %></span>
<span>Closed Items <%=Html.CheckBox("Inactive") %></span>
</div>
<% Html.Telerik().Grid<IssueModel>()
.Name("Grid")
.PrefixUrlParameters(false)
.Columns(col =>
{
col.Bound(o => o.Title);
col.Bound(o => o.Priority).Width(50).Title("Priority ID");
col.Bound(o => o.PriorityName).Width(100).Title("Priority");
col.Bound(o => o.IssueStateName).Width(100).Title("Status");
col.Bound(o => o.AssignedToName).Width(140).Title("Assigned To");
})
.DataBinding(d => d.Ajax().Select("AjaxSelect", "Ticket", new { isNew = false, isInactive = false }))
.ClientEvents(e => e.OnDataBinding("onDataBinding"))
.Sortable(s => s
.SortMode(GridSortMode.MultipleColumn)
.OrderBy(order =>
{
order.Add(o => o.Priority);
order.Add(o => o.Sequence);
})
)
.Pageable(p => p.PageSize(15))
.Filterable()
.Render();
%>
<script type="text/javascript">
function onDataBinding(e) {
e.data = {
isNew: $("#newItems").is(':checked'),
isInactive: $("#Inactive").is(':checked')
};
e.orderBy = "Severity~desc~Ranking~asc";
}
$("input[type='checkbox']").click(function () {
var grid = $('#Grid').data('tGrid');
var param = {
isNew: $("#newItems").is(':checked'),
isInactive: $("#Inactive").is(':checked')
};
grid.rebind(param);
});
</script>