【问题标题】:Kendo Grid - problems with search in databaseKendo Grid - 数据库中的搜索问题
【发布时间】:2013-11-18 14:48:01
【问题描述】:

我的控制器是这样的:

        [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) 正确.. 但我无法将它绑定到数据源并在 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
        });

任何人都可以帮我解决这个问题吗? 谢谢大家!

【问题讨论】:

    标签: search grid kendo-ui


    【解决方案1】:

    如果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>
    

    【讨论】:

    • 感谢您的回复!但它仍然没有用那个 lst(json) 重新加载网格。我添加了 grid.dataSource.read();是真的吗?
    • read 只需调用您在网格初始化期间使用 ajax 绑定设置的操作。是的,你可以这样做,将搜索参数传递给读取的数据字段。
    • 如果这两种方法都不适合您,请显示您返回的 json 和网格配置。
    猜你喜欢
    • 2013-10-16
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多