Kendoui网格破坏方法不刷新网格

时间:2013-12-18 09:17:11

标签: kendo-ui kendo-grid

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

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

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

  3. P.S。以前当我使用Telerik MVC Extensions(在kendoui之前)它工作正常。

1 个答案:

答案 0 :(得分:1)

  1. 从datasource.data()集合中删除项目后执行销毁调用,因此无需返回列表。如果你的删除以某种方式影响列表中的其他项,请调用datasource.read表单destroy.complete(但是这些是两次调用)。 另一方面,没有什么能阻止你因删除而返回复杂的json对象,其中一个属性将是你的列表,在destroy.complete上展开它并将带有集合的属性赋值给数据源,可行。虽然考虑分页,排序和其他功能,但如果您决定采用这种方式,则必须处理这些功能。

  2. 可以使用api实现custom command并根据需要实现删除过程。

  3. 示例:

    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  
                          }
                   }
               }
    
相关问题