如何刷新Kendo UI网格

16

我正在尝试刷新Kendo UI网格,但还没有成功。请问有人能告诉我我错过了什么或者我做错了什么吗?

我有以下的代码:

.cshtml:

 $('#btnRefresh').click(function (e){

            $.ajax({
                type: 'POST',
                url: "@(Url.Content("~/Administration/RefreshAll/"))",

                success: function () {
                    $("#Product").data("kendoGrid").dataSource.read();
                    $('#Product').data('kendoGrid').refresh();
                    //grid.refresh();
                    location.reload(true);
                },
                error: function (){
                    $("#btnRefresh").removeAttr('disabled');
                }
            });


      });

控制器:

public ActionResult RefreshAll([DataSourceRequest] DataSourceRequest request)
        {
            db.ProcessAll();
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            return View();
        }
1个回答

36

你的脚本应该是

$('#btnRefresh').click(function (e){
        var grid = $("#Product").data("kendoGrid");
               grid.dataSource.page(1);
               grid.dataSource.read();
      });

在您的控制器中添加引用

  • using Kendo.Mvc.UI;
  • using Kendo.Mvc.Extensions;

你的 ActionResult 应该是这样的

public ActionResult RefreshAll([DataSourceRequest] DataSourceRequest request)
        {
            //assuming db.ProcessAll() will return a list object
            return Json(db.ProcessAll().ToDataSourceResult(request));
        }

public void ProcessAll() 因此我无法返回为JSON。 - Spidey
你需要将一个列表对象传递给模型。 - HaBo
@HaBo 谢谢,但是这会导致“TypeError: $(...).data(...)未定义”的错误。我也查看了许多页面并尝试了不同的解决方案变体,但仍然遇到相同的错误。有什么想法吗? - Jack
@chrisrof,请检查您的网格选择器。 - HaBo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接