我的控制器是这样的:
[HttpPost]
public ActionResult Error_Search([DataSourceRequest] DataSourceRequest request, object[] ParaSearch)
{
object[] obj = new object[5];
obj[0] = Convert.ToInt32(ParaSearch[0]);
obj[1] = ParaSearch[1].ToString();
obj[2] = Convert.ToDateTime(ParaSearch[2]).AddDays(-10);
obj[3] = Convert.ToDateTime(ParaSearch[3]);
obj[4] = ParaSearch[4];
List<Vsoft.Lists.Model.SYS.SYS_Error> lst = new List<Vsoft.Lists.Model.SYS.SYS_Error>();
ResultMessage result = new Vsoft.Lists.DALEntity.SYS.DAL_Error().SelectToList(ref lst, obj);
return Json(lst.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
它将返回Json(lst)正确..但我不能将它绑定到datasource并在Ajax调用之后刷新Grid,如下所示:
var requestData = { ParaSearch: arrObject };
$.ajax({
url: '@Url.Content("~/Error/Error_Search")',
data: JSON.stringify(requestData),
type: 'POST',
traditional: true,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
error: function (xhr) {
result = false;
alert('Error: ' + xhr.statusText);
},
success: function (lst) {
var grid = $("#Grid").data("kendoGrid");
grid.dataSource.data(lst);
grid.refresh();
},
async: true,
processData: false,
cache: false
});
AnyOne可以帮助我解决这个问题吗? 谢谢大家!
答案 0 :(得分:0)
如果ajax返回足够好,那么使用setDatasource api调用应该是你的朋友。
success: function (lst) {
var grid = $("#Grid").data("kendoGrid");
var dataSource = new kendo.data.DataSource({
data: lst });
grid.setDataSource(dataSource);
}
编辑:使用read(读取只是$.ajax
上的包装)
希望您已将网格配置为:
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Error_Search", "Error", new { ParaSearch = []}))
)
然后,将ParaSearch
所在的某个事件连接起来并使用read调用:
<script>
function someEvent(e) {
var requestData = { ParaSearch: arrObject };
grid.dataSource.read(requestData);
}
</script>