Kendo Grid - 数据库中搜索的问题

时间:2013-11-07 04:01:42

标签: search grid kendo-ui

我的控制器是这样的:

        [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可以帮助我解决这个问题吗? 谢谢大家!

1 个答案:

答案 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>