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"
);