剑道网格删除行,但不调用销毁 URL

Posted

技术标签:

【中文标题】剑道网格删除行,但不调用销毁 URL【英文标题】:Kendo grid removes row, but does not call destory URL 【发布时间】:2018-06-19 22:35:59 【问题描述】:

我有一个剑道网格,我正在尝试添加删除功能。我的数据源看起来像:

var datasource = new kendo.data.DataSource(
    transport: 
        read: 
            url: Router.action("Admin", "GetScansForMailItem",  mailItemIdnt: detailinit.data.MailItemIdnt ),
            dataType: "json"
        ,
        destroy: 
            url: Router.action("Admin", "DeleteScan"),
            type: "post"
        
    ,
    model: 
        id: "ScanIdnt",
        fields: 
            ScanIdnt: editable: false, nullable: false
        
    ,
    pageSize: 5
);

我添加了模型部分,因为this 回答,但它没有任何区别。

实际的网格如下所示:

 .kendoGrid(
     dataSource: datasource
     scrollable: false,
     sortable: true,
     pageable: true,
     editable: "inline",
     columns: [
         field: "ScanIdnt",
         title: "Scan ID"
     , 
         field: "CreatedDate",
         title: "Created",
         template: "#= kendo.parseDate(CreatedDate, 'yyyy/MM/dd') #"
     , 
         field: "ScanDocumentRelativePath",
         title: "File Path",
         template: "<a href='/CAMP/Admin/Download?scanIdnt=#= ScanIdnt #'>#= ScanDocumentRelativePath.substring(1) #</a>"
     , 
         field: "ScanUserIdnt",
         title: "Scanned By"
     ,
         command: "destroy",
         title: ""
     ]
 );

奇怪的是,单击删除按钮会从 UI 上的网格中删除,但绝对没有对 destroy URL 进行 Ajax 调用。我似乎无法弄清楚为什么。有什么想法吗?

编辑我想指出,这个网格实际上是另一个网格内的嵌套网格(如here)我发现父网格句柄实际上是在调用,但是到错误的功能。由于某种原因,它在一个到级别的项目上单击删除会调用嵌套网格的读取函数,但是,嵌套网格什么都不做

【问题讨论】:

点击删除按钮后浏览器控制台是否出现错误? @Supersnake 不,绝对没有。 再次查看您的网格代码。您的数据源的拼写错误。 哦是的对不起,我在这里粘贴代码后更改了它,因为数据源实际上是通过函数返回的。在实际代码中是正确的。 【参考方案1】:

想通了(有点)。虽然我认为我的代码和网格存在很多问题,但似乎 Kendo 不喜欢我处理数据的方式。

在与分层网格相关的 Kendo 文档中,子网格的数据存储在父网格的数据字段中。例如,给定以下 JSON:

"ParentItems": [ 
    
        "Id": 12345 ,
        "Name": "Test1",
        "ChildItems": [
            "Id": 1, "Name": "Test",
            "Id": 2, "Name": "Test"
        ]
    ,
    
        "Id": 12346 ,
        "Name": "Test2",
        "ChildItems": [
            "Id": 1, "Name": "Test",
            "Id": 2, "Name": "Test"
        ]
    
]

在父网格中,每个ParentItem 都会在子网格中显示其各自的ChildItems

另一方面,我分别提取两个数据集。基本上,我拉了ParentItems 之类的:

"ParentItems": [
    
        "Id": 12345,
        "Name" : "Test1"
    ,
    
        "Id": 12346,
        "Name" : "Test2"
    
]

然后根据父项的 id 再次请求拉取子项。

"ChildItems": [
    "Id": 1, "Name": "Test", "ParentId": "12345",
    "Id": 2, "Name": "Test", "ParentId": "12345"
]

我能够像第一个示例中那样修改服务器端代码以提供数据,并设法使事情正常进行。可以找到帮助我的具体文档here

【讨论】:

以上是关于剑道网格删除行,但不调用销毁 URL的主要内容,如果未能解决你的问题,请参考以下文章

Kendo Grid 如何更新、创建、删除数据源

如果剑道网格的第一页上不存在该行,如何选择剑道网格行。/

在剑道调度程序中处理销毁事件

分页剑道网格客户端

剑道网格破坏命令不刷新网格

剑道网格行中的剑道上传