As a workaround, it is possible to use the approach from the GridView - How to load saved Client Layout data in Custom Model Binding mode ticket. Additionally, it is necessary to manually obtain the filter expression from your saved layout and apply it to the GridViewModel object in the controller. For example, if we open the Advanced Custom Binding demo, this should be done in the AdvancedCustomBindingPartial method:
View:
C#settings.ClientLayout = (s, e) => {
if (e.LayoutMode == ClientLayoutMode.Saving) {
Session["gvSettings"] = e.LayoutData;
} else {
if (Session["gvSettings"] != null) {
e.LayoutData = Session["gvSettings"].ToString();
}
}
};
settings.ClientSideEvents.Init = "function(s, e) { s.PerformCallback(); }";
Controller:
C#public ActionResult AdvancedCustomBindingPartial() {
var viewModel = GridViewExtension.GetViewModel("gridView");
if (viewModel == null)
viewModel = CreateGridViewModelWithSummary();
if (string.IsNullOrEmpty(viewModel.FilterExpression) && Session["gvSettings"] != null) { // Session["gvSettings"] stores the client layout
var filterParams = Session["gvSettings"]
.ToString()
.Split('|')
.ToList();
var lengthParam = filterParams.Where(x => x.StartsWith("filter")).SingleOrDefault();
if (!string.IsNullOrEmpty(lengthParam)) {
var index = filterParams.IndexOf(lengthParam);
var savedFilterExpression = filterParams[index + 1];
viewModel.FilterExpression = savedFilterExpression;
}
}
return AdvancedCustomBindingCore(viewModel);
}