我正在尝试向我的网格中的删除按钮添加一些验证,所以我在删除按钮时执行一个函数,但是它似乎忽略了该函数。这是功能:
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函数命中。
答案 0 :(得分:2)
问题在于,在初始化网格时,JavaScript使用locDelete
,如果没有定义则会抱怨(JavaScript本身)但是,在Kendo UI Grid初始化结束时,它为某些特定类定义了一个处理程序到默认命令。如果不是将名称定义为destroy
而是将其设置为my_destroy
,则可以使用。