
var chart = $("#SalesChart").data("kendoChart");chart.dataSource.read({ "FromDate": $("#FromDate").data("kendoDatePicker").value(), "ToDate": $("#ToDate").data("kendoDatePicker").value()});I have a page that has a grid and some filter fields (external from the grid). The filtering gets applied to the grid in the JavaScript - which works fine. I also have an export button that I need to export the data in my grid - since my grid does not contain all the data that my export needs, my thought was to pass the DataSourceRequest as a parameter to my Ajax call, select my data and then use the "toDataSourceResult()" as happens in my ajax read controller action. This is not working.
I have the following code in my javascript function that builds my datasource request, and passes it in as a parameter, but my DataSourceRequest object in my controller action contains null values for filter, sort, etc.
var grid = ${"#Persons").data("kendoGrid");var parameterMap = grid.dataSource.transport.parameterMap;var requestObject = parameterMap({ Sorts: grid.dataSource.sort(), Filters: grid.dataSource.filter(), Groups: grid.dataSource.group()});How can I pass the datasource request as a parameter to my Ajax Controller action? I have attached a working sample project.
Html.Kendo().Grid<ResourceInfo>() .Name("GalleryGrid") .Columns(columns => { columns .Bound(r => r.Id).Hidden(); columns .Bound(r => r.previewUri) .Width(150) .Title("Preview") .Template(@<text><a data-lightbox="@item.uri" href="@item.uri"><img alt="" class="center thumbnail-image" src="@item.previewUri"/></a></text>) .ClientTemplate("<a data-lightbox='#= uri #' href='#= uri #'><img alt='' class='center thumbnail-image' src='#= previewUri #'/></a>"); columns .Bound(r => r.colors).Width(100) .Title("Color"); columns .Bound(r => r.sizes).Width(100) .Title("Size"); columns .Bound(r => r.seasons).Width(100) .Title("Season"); columns .Bound(r => r.categories).Width(200) .Title("Categories"); columns .Bound(r => r.stockImageKeywords).Width(275) .Title("Keywords"); columns .Template(@<text><input type='checkbox' class='check_row'/></text>) .Width(45) .Title(" ") .ClientTemplate("<input type='checkbox' class='check_row' value='#=Id#'/>"); //columns.Command(command => { command.Select().Text("<input type='checkbox' id='editChk'/>"); }).Width(80); columns.Command(command => { command.Edit().Text(" "); }).Title("Edit").Width(80); columns.Command(command => { command.Destroy().Text(" "); }).Title("Delete").Width(80); }) .ToolBar(toolbar => { toolbar.Custom().Text("Add (upload)").Url("#uploadModal").HtmlAttributes(new { @class = "btn", data_toggle = "modal" }); }) .DetailTemplate(@<text> <div>FileName: @item.fileName</div> <div>uri: @item.uri</div> <div>previewUri: @item.previewUri</div> <div>rating: @item.rating</div> <div>region: @item.region</div> </text>) .Editable(editable => editable.Mode(GridEditMode.PopUp)) .Sortable() .Scrollable() .Filterable() .Pageable(builder => builder.PageSizes(new[] { 50, 100, 500, 1000 }).Refresh(true)) //.Scrollable( scrollable => scrollable.Virtual( true ) ) .HtmlAttributes(new { style = "height:600px" }) .Resizable(resize => resize.Columns(true)) .Reorderable(reorder => reorder.Columns(true)) .DataSource(dataSource => dataSource .Ajax() .Batch(false) .ServerOperation(true) .Model(model => { model.Id(r => r.Id); model.Field(r => r.previewUri).Editable(false).DefaultValue(string.Empty); model.Field(r => r.colors).Editable(true).DefaultValue(string.Empty); model.Field(r => r.seasons).Editable(true).DefaultValue(string.Empty); model.Field(r => r.categories).Editable(true).DefaultValue(string.Empty); model.Field(r => r.stockImageKeywords).Editable(true).DefaultValue(string.Empty); }) .Events(events => { events.Error("error_handler");events.Change("change_handler"); }) .Read(read => read.Action("read", "gallery")).PageSize(50) .Update(update => update.Action("update", "gallery").Data("GetSelectedIds").Type(HttpVerbs.Post)) .Destroy(delete => delete.Action("delete", "gallery").Type(HttpVerbs.Post)) ) .ClientDetailTemplateId("client-template") .Events(evt => { evt.Edit("edit_handler"); evt.DataBound("databound_handler"); //evt.Save("onSave"); //evt.Change("change_handler"); }) .Deferred() )
@(Html.Kendo().MultiSelectFor(model => model.SurgeryMultiSelect).Filter("contains") .Name("SurgeryMultiSelect") .DataTextField("Description") .DataValueField("ProcedureTypeId") .Placeholder("Select Procedure(s)...") .DataSource(source => { source.Read(read => { read.Action("GetAllProcedures", "CommonJsonActions"); }); }) .Events(e => { e.Change("fnSurgeryListChange"); }))columns.Bound(p => p.DatumVznikuKontraktu).EditorTemplateName("Date").ClientTemplate("#= kendo.toString(DatumVznikuKontraktu, 'd') #" +<br>"<input type='hidden' name='ZamKontrakts[#= index(data)#].DatumVznikuKontraktu' value='#= nullTest(DatumVznikuKontraktu) #' />").HeaderHtmlAttributes(new { style = "white-space:pre-wrap; vertical-align:middle" });<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %><%: Html.Kendo().DatePickerFor(m => m) .Format(LanguageResources.Resource.DateFormat) .Culture(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()) %><td class="col-xs-3"> <input name="startTime" id="startTime" data-val-required="" /></td>_startTime = $("#startTime").kendoTimePicker({ format: "HH:mm", change: changePeriodTypeOptions}).data("kendoTimePicker");