剑道网格:破坏功能不起作用

时间:2015-12-09 15:08:53

标签: jquery kendo-ui kendo-grid

我有一个kendo网格,我显示用户上传的文档列表。在网格中,我有一个名为“Delete”的按钮,它触发dataSource函数“destroy”,它调用delete服务类。为了实现文档的删除,我通过在我的数据源中执行以下操作,将用户选择的documentId传递给服务类的查询:

   destroy: {
                        url: function (options) {
                            options.IsActive = false;
                          // type: "POST";                             
                            contentType: "application/json; charset=utf8";
                            return constants.serviceUrl + "Document/Delete?id=" + options.DocumentId;
                        },
                    },
                    dataType: "json",
                    contentType: "application/json"
                },

由于某种原因,与documentId一起添加了与此文档相关的所有数据,这不是我打算做的。这就是fiddler中的URL。

http://localhost/Services/HumanResources/api/Document/Delete?id=2&DocumentId=2&ReviewId=0&DocumentTypeId=2&Name=Applications+to+Install.docx&DocumentData=UEsDBBQABgAIAAAAIQCUZeTvkgEAAK4HAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe&CreatedById=00000000-0000-0000-0000-000000000000&CreatedDate=0001-01-01T00%3A00%3A00&RawFileName=&DocumentTypeName=Manager

我已经为我的destroy函数设置了断点,并确保documentID只有一个数字。由于这个长URL错误,服务类永远不会被击中。以下是小提琴手的说法:

> HTTP/1.1 414 Request-URI Too Long
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 09 Dec 2015 15:00:46 GMT
Connection: close
Content-Length: 329

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Request URL Too Long</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Request URL Too Long</h2>
<hr><p>HTTP Error 414. The request URL is too long.</p>
</BODY></HTML>

知道我的销毁功能是什么,添加了我甚至没有传递给服务URL链接的所有额外数据?

1 个答案:

答案 0 :(得分:0)

我认为kendo dataSouce默认是为每个ajax方法添加整个模型。您可以编写自己的参数贴图功能,如下例所示:http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-transport.destroy

但是你需要检查read / update / create函数是否能获得正确的数据。

因此,添加到dataSource parameterMap,返回销毁请求类型的空对象,并为其他人传递模型属性:

parameterMap: function(data, type) {
  if (type === "destroy") {
    return {  };
  }
  else {
       return { models: kendo.stringify(data.models) };
  }
}