我有一个屏幕,其中有一个Kendo grid
。
我的年份是dropdown
,如果选择年份,则网格将刷新相应的数据。
但是我选择一个日期后,返回的结果是JSon结果
我在这里想念什么?
这是网格:
@(Html.Kendo().Grid<GGISServices.Models.District.LotAutorizationSentDocumentsViewModel>()
.Name("districtGrid")
.HtmlAttributes(new { @class = "newGrid" })
.Columns(columns =>
{
....
})
.Filterable(ftb => ftb.Mode(GridFilterMode.Row))
.Events(e => e.FilterMenuInit("filterMenuInit"))
.ColumnMenu(f => f.Enabled(true))
.Pageable(pageable => pageable
.Refresh(true)
.Info(true)
.PageSizes(new int[] { 5, 10, 25, 50, 100, 1000 })
.ButtonCount(5)
)
.DataSource(dataSource => dataSource
.Ajax()
.Sort(sort => sort.Add(c => c.Id).Descending()) // <-- initial sort expression
.Read(read => read.Action("GetData", "SentDocument", new { Area = GGISWeb.AreaModules.District }))
.PageSize(25)
)
)
这是GetData
中的controller
方法:
public ActionResult GetData([DataSourceRequest]DataSourceRequest request, int year = 0)
{
var list = dsService.GetSentDocumentsAsQueryable(year);
DataSourceResult result = list.ToDataSourceResult(request, x => x.ToViewModel());
return new LargeJsonResult() { Data = result , JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
这是一年中的onChange
事件下拉列表:
$(document).ready(function () {
$("#Year").on("change", function (e) {
$("#gridDiv").load("@VirtualPathUtility.ToAbsolute("~/")District/SentDocument/GetData/?year=" + $(this).val(), function () {
});
});
});
当我选择另一个日期时,将使用选定的年份调用GetData
方法,但是我不知道如何绑定到网格。
答案 0 :(得分:1)
尝试其他方法。使用.Data()方法表示一个javascript函数,该函数将返回其他字段以发送回服务器。将其添加到您在控制器上的读取动作中,您可以有条件地确定是否应遵守该规定。
<script>
function myFunc(){
return {selectedDate: $("#myDatePicker").data("kendoDatePicker").value()};
}</script>
然后,读取调用看起来像:
.Read(read => read.Action("GetData", "SentDocument", new { Area = GGISWeb.AreaModules.District }).Data("myFunc"))
然后添加DateTime吗?将selectedDate参数添加到您的控制器上。
您的网格能够收集获取数据所需的所有信息。您不必担心交换数据源。更改日期选择器(或可能要为网格条件添加的其他任何字段)后,只需调用网格的dataSource.read()方法即可获取最新信息。
答案 1 :(得分:1)
使用@Mark_Fitzpatrick方法可以工作,但是问题出在您的控制器从遇到类似问题而发回信息的方式上。网格期望返回一个DataSourceResult请求,并且您正在更改期望的模式。因此将您的控制器从:
245
这应该以网格期望的格式返回数据。如果数据很大,并且假设public ActionResult GetData([DataSourceRequest]DataSourceRequest request, int year = 0)
{
var list = dsService.GetSentDocumentsAsQueryable(year);
DataSourceResult result = list.ToDataSourceResult(request, x => x.ToViewModel());
return new LargeJsonResult() { Data = result , JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
public ActionResult GetData([DataSourceRequest]DataSourceRequest request, int year = 0)
{
var list = dsService.GetSentDocumentsAsQueryable(year);
return Json(list.ToDataSourceResult(request, ModelState),JsonRequestBehavior.AllowGet);
}
是自定义返回对象,则只需返回LargeJsonResult
,并为其分配最大长度设置即可。