or
@(Html.Kendo().Grid<ExpenseReport.MVC.Models.ExpenseReportModel>() .Name("Grid") .Columns(columns => { columns.Bound(p => p.ExpenseReportId).Visible(true); columns.Bound(p => p.ExpenseLineItemId).Visible(true); columns.Bound(p => p.ExpenseTypeDesc).Title("Expense Type"); columns.Bound(p => p.City).Title("City"); columns.Bound(p => p.StateName).Title("State"); columns.Bound(p => p.Date).Format("{0:d}").Title("Date"); columns.Bound(p => p.Amount).Title("Amount"); columns.Bound(p => p.EndingMileage).Title("Ending Mileage"); columns.Bound(p => p.BeginningMileage).Title("Beginning Mileage"); columns.Command(command => { command.Edit(); command.Destroy(); }); }) .ToolBar(toolbar => toolbar.Create().HtmlAttributes(new { id = "btnAdd" })) .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("NewExpense").Window(w => w.Width(500))) .Pageable() .Scrollable() .HtmlAttributes(new { style = "height:430px; width=100%" }) .DataSource(dataSource => dataSource .Ajax() .PageSize(20) .Events(events => events.Error("error_handler")) .Model(model => { model.Id(p => p.ExpenseReportId); model.Id(p => p.ExpenseLineItemId); }) .Create(create => create .Action("EditingPopup_Create", "ExpenseReport") .Data("erLineItemsCreateData")) //.Read(read => read // .Action("EditingPopup_Read", "ExpenseReport") // .Data("erLineItemsReadData")) .Update(update => update .Action("EditingPopup_Update", "ExpenseReport").Type(HttpVerbs.Post) .Data("erLineItemsUpdateData")) .Destroy(update => update .Action("EditingPopup_Destroy", "ExpenseReport").Type(HttpVerbs.Post))) ) <script> function error_handler(e) { if (e.errors) { var message = "Errors:\n"; $.each(e.errors, function (key, value) { if ('errors' in value) { $.each(value.errors, function () { message += this + "\n"; }); } }); alert(message); } } //pass additional data to the READ action method function erLineItemsReadData() { return { expenseReportId: "@ViewBag.ExpenseReportId" }; } function erLineItemsCreateData() { return { expenseReportId: "@ViewBag.ExpenseReportId" }; } function erLineItemsUpdateData() { return { expenseReportId: "@ViewBag.ExpenseReportId", expenseLineItemId: "@ViewBag.ExpenseLineItemId" }; }[AcceptVerbs(HttpVerbs.Post)] public ActionResult EditingPopup_Update([DataSourceRequest] DataSourceRequest request, ExpenseReportModel erLineItem, int expenseReportId, int expenseLineItemId) { if (erLineItem != null && ModelState.IsValid) { globalKip.UpdateExpenseReportLineItem(expenseReportId, erLineItem.ExpenseTypeDesc, erLineItem.Date, erLineItem.Amount, erLineItem.City, erLineItem.StateName, erLineItem.EndingMileage, erLineItem.BeginningMileage); } return Json(new[] { erLineItem }.ToDataSourceResult(request, ModelState)); }Message: Exception: System.InvalidCastException: Unable to cast object of type 'Kendo.Mvc.CompositeFilterDescriptor' to type 'Kendo.Mvc.FilterDescriptor'. at Kendo.Mvc.Infrastructure.Implementation.FilterNodeVisitor.Visit(PropertyNode propertyNode) at Kendo.Mvc.Infrastructure.Implementation.OrNode.Accept(IFilterNodeVisitor visitor) at Kendo.Mvc.UI.DataSourceRequestModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) at System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) at System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)01.@(Html.Kendo().Grid(Model.globalConfigData.Countries)02. .Name("CountryFilter")03. .Columns(columns =>04. {05. columns.Bound(p => p.value).Width(100).Title("Wert").HtmlAttributes(new { Name = "Value" });06. columns.Bound(p => p.id).Width(30).Title("Id").Hidden().HtmlAttributes(new { Name = "Id" });07. })08. .Scrollable()09. .Selectable(selectable => selectable.Enabled(false))12. .DataSource(dataSource => dataSource13. .Server()14. .Model(model => model.Id(p => p.id)))15.)1.$(document).ready(function ()2.{3. // Enables multiselect on the grid without holding CTRL4. $("#CountryFilter").delegate('tbody>tr', 'click', function ()5. {6. $(this).toggleClass('k-state-selected');7. });8.});01.function onClick_FilterButton(e)02.{03. var counter = 0;04. var ctySelected = [];05. 06. var entityGrid = $("#CountryFilter").data("kendoGrid");07. var rows = entityGrid.select();08. 09. rows.each(function (index, row)10. {11. ctySelected[counter] = row.cells[1].innerText;12. counter++;13. });14. 15. $.ajax({16. type: "POST",17. url: "/Event/FilterButton",18. datatype: "json",19. traditional: true,20. data: { "ids": ctySelected }21. });22.}1.ctySelected[counter] = row.cells[1].innerText;1.ctySelected[counter] = row.cells["MyValue"].innerText;