【问题标题】:Kendoui grid destroy method doesn't refresh gridKendoui网格销毁方法不刷新网格
【发布时间】:2014-01-06 09:09:29
【问题描述】:

我有一个 kendoui 网格(没有服务器端包装器)。它显示了几列和“销毁”(删除)按钮。一切正常。但它有两个问题:

  1. 当我单击“删除”按钮时,会向服务器发送请求(服务器上的记录已成功删除)。我从服务器返回一个新的记录列表(在处理“删除”请求之后)。但是这个新的记录列表被忽略并且不在客户端上使用。而且我必须使用“requestEnd”网格事件来刷新网格。因此向服务器发出两个 HTTP 请求:“删除记录”、“加载新记录列表”。是否可以使用单个 HTTP 请求删除记录并从服务器返回新的记录列表?

  2. 此外,当我单击“删除”按钮时,会立即删除相应的网格行(仅限用户界面),然后将 HTTP 请求发送到服务器。是否可以仅在处理 HTTP 请求后从网格 (UI) 中删除记录?

附:以前当我使用 Telerik MVC Extensions(在 kendoui 之前)时,它运行良好。

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:
    1. 从 datasource.data() 集合中删除项目后执行销毁调用,因此无需返回列表。如果您的删除以某种方式影响列表中的其他项目,请调用 datasource.read 表单 destroy.complete (但是的,这是两个调用)。 另一方面,没有什么能阻止您作为删除的结果返回复杂的 json 对象,其中一个属性将是您的列表,在 destroy.complete 上解包并将属性与集合一起分配给数据源,这是可行的。虽然考虑分页、排序和其他功能,但如果您决定采用这种方式,您将不得不处理它。

    2. 是的,你可以实现custom command,并使用api实现你想要的删除过程。

    例子:

    A) 分页和过滤到服务器,假设您启用了服务器端分页。

     parameterMap: function (o, operation) {
                                var output = null;
                                switch (operation) {
                                    case "create":
                                        break;
                                    case "read":
                                        output = '{ filter: ' + JSON.stringify(o) + '}';
                                        break;
                               }
                              return output;
                            }
                        },
    

    B) 创建复杂的 json 是特定于服务器端平台的,理论上你包装你要返回给客户端的实际 json 并将其包装到其他 json 中,添加额外的属性然后返回它。然后您可以通过以下方式阅读它:

    transport: {
             destroy: {
                 complete: function (jqXhr, textStatus) {
                           var result = jQuery.parseJSON(jqXhr.responseText);
                           var yourdata = result.yourdata   
                           // pass your data to datasource  
                          }
                   }
               }
    

    【讨论】:

    • 谢谢。我的网格也有几页。当我单击“删除”按钮时,当前的 pge 编号和大小不会传递给服务器。如何让它发送当前的网格参数(如“页面大小”、“页面索引”、“排序选项”等?
    • 另外,您能否提供一个“作为删除结果返回复杂 json 对象的示例,其中一个属性将是您的列表,在 destroy.complete 上展开它并使用集合分配属性到数据源”?
    • 我已经用一些示例代码更新了答案。我认为你应该遵循剑道的方式,而不是试图绕过,替代是可行的,但耗时。 (确保您的模型定义了 id,这可能是删除不起作用的原因)。祝你好运
    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多