Kendo网格删除行,但不调用destory URL

时间:2018-01-10 17:19:22

标签: javascript kendo-grid

我有一个Kendo网格,我试图添加删除功能。我的数据源看起来像:

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上的网格,但绝对没有Ajax调用destroy URL。我似乎无法弄清楚原因。有什么想法吗?

编辑我想指出这个网格实际上是另一个网格内的嵌套网格(如here)我发现父网格处理实际上是一个电话,但错误的功能。出于某种原因,它在一个级别项上单击删除会调用嵌套网格的读取功能,但嵌套网格不执行任何操作

1 个答案:

答案 0 :(得分:1)

想出来(sorta)。虽然我认为我的代码和网格存在许多问题,但是当它归结为它时,剑道并不喜欢我的数据。

在与分层网格相关的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

另一方面,我分别拉两个数据集。基本上,我把ParentItem拉成了:

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

然后根据父母的id发出了第二个请求拉取子项的请求。

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

我能够修改服务器端代码以提供数据,就像在第一个示例中一样,并设法使事情正常工作。可以找到帮助我的特定文档here