Kendo Grid - 忽略手动删除功能

时间:2013-07-30 16:34:02

标签: jquery kendo-ui kendo-grid kendo-asp.net-mvc

我正在尝试向我的网格中的删除按钮添加一些验证,所以我在删除按钮时执行一个函数,但是它似乎忽略了该函数。这是功能:

function locDelete(e) {
    var len = this.dataSource.data().length;
    var item = $("#trespassed-location-list").data("kendoGrid").dataItem($(this).closest("tr"));

    if (len === 1) {
        alert("There must be at least one location.");
    }
    else {
        alert("This is in the else");
        //this.remove(item);
        //this.removeRow($(e.target).closest("tr"));
    }
}

我把第二个警报放在那里进行测试,没有任何警报被击中。这是网格代码和数据源:

 var PersId = $("#PersonId").val();
 var ds_locationsList = new kendo.data.DataSource({
        transport: {
                    read: {
                        url: '@Url.Action("JsonPopulateTrespassList", "TrespassOrder")/' + PersId,
                        dataType: 'json',
                        type: "POST"
                    },
                destroy: {
                        url: '@Url.Action("JsonDeleteLocation", "TrespassOrder")',
                        dataType: 'json',
                        type: "POST"
                    }
        },
         parameterMap: function (options, operation) {
             if (operation == "destroy" && options.models) {
                 var values = {};
                 values["TrespassLocId"] = options.models[0].TrespassLocId;
                 return values;
             }
         },
         schema: {
            model: {
                id: "TrespassedLocId",
                fields: {
                    TrespassLocId: { editable: false},
                    LocationName: { editable: false }
                }
            }
        },
         pageSize: 20
 });


    $(document).ready(function () {

       $("#trespassed-location-list").kendoGrid({
            dataSource: ds_locationsList,
            sortable: true,
            height: "150px",
            width: "300px",
            editable: "inline",
            columns: [{
                field: "LocationName", title: "Trespassed Location(s)"
            }, {
                command: [{ name: "destroy", text: "Delete", click: locDelete }],
                width: "110px",
            }] 
       });

如果我注释掉LocDelete函数,我会收到'locDelete undefined'错误,所以我知道网格正在寻找它。删除确认通知是否会搞乱?但是使用上面写的locDelete函数(删除代码注释掉了,行仍然从数据库库和客户端删除。我尝试用firebug跟踪它,但我的断点永远不会被locDelete函数命中。

1 个答案:

答案 0 :(得分:2)

问题在于,在初始化网格时,JavaScript使用locDelete,如果没有定义则会抱怨(JavaScript本身)但是,在Kendo UI Grid初始化结束时,它为某些特定类定义了一个处理程序到默认命令。如果不是将名称定义为destroy而是将其设置为my_destroy,则可以使用。