我有一个问题,我试图找出为什么我必须按两次弹出按钮的“确定”按钮才能使其消失。我可以从我的代码中看到,我只有一个警告声明,但它仍然表现得好像我可能意外地调用了两个警报声明
function intialiseKendoGrid(date) {
gridResult = $('#grid').kendoGrid({
scrollable: {
virtual: true
},
navigatable: true,
groupable: true,
sortable: true,
selectable: "row",
pageable: true,
pageable: {
input: true,
numeric: false
},
resizable: true,
reorderable: true,
filterable: {
extra: false
},
columns: [{
field: "DealNumber",
width: 150,
title: "DealNumber",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
},
},
{
field: "DealIssuer",
width: 150,
title: "Issuer",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
},
//template: "<a href='http://manager.dealogic.com/ManagerV3/CPCortex/Default/${DealNumber}'>${DealNumber}</a>"
template: "<a>${DealIssuer}</a>"
}, {
field: "Ticker",
width: 150,
title: "Ticker",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
}
}, {
field: "DealExchange",
width: 150,
title: "Exchange",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
}
}, {
field: "DealType",
width: 150,
title: "Type",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
}
}, {
field: "DealValue",
width: 150,
title: "Value ($m)",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
},
/* template: '#= kendo.culture("en-US");kendo.toString(${DealValue/1000000},"p")#' */
template: '#= kendo.toString(DealValue,"c2") #'
}, {
field: "DealStatus",
width: 150,
title: "Status",
filterable: {
operators: {
string: {
startswith: "Starts With",
contains: "Contains"
}
}
}
}, {
field: "DealPricingCompletionDate",
width: 230,
title: "DealPricingCompletionDate",
format: "{0:dd/MM/yyyy}",
filterable: {
ui: "datetimepicker",
operators: {
date: {
gt: "After",
lt: "Before",
eq: "Equals"
},
messages: {
filter: "Apply",
clear: "Clear"
}
}
}
},
],
change: function () {
var text = "";
var grid = this;
grid.select().each(function () {
var dataItem = grid.dataItem($(this));
text += "DealNumber: " + dataItem.DealNumber + "\n" + "Issuer: " + dataItem.DealIssuer + "\n" + "Ticker: " + dataItem.Ticker + "\n" + "Type: " + dataItem.DealType + "\n" + "Value: " + dataItem.DealValue + "\n" +
"Status " + dataItem.DealStatus + "\n" + "DealPricingCompletionDate: " + kendo.toString(dataItem.DealPricingCompletionDate, "dd/MM/yyyy");
});
alert(text);
},
height: 700
}).data("kendoGrid");
答案 0 :(得分:3)
更改事件被触发两次,由于alert()
被绑定到更改事件,它也会弹出两次。
看看change event documentation。它是“当用户选择网格中的表格行或单元格时触发。”
也许它被解雇了两次,一次是针,一次是针对细胞?虽然我看到你有selectable: "row"
所以它应该只为该行开火。
将您的更改事件更新为change: function (e) { console.log(e); }
,并在调试控制台中查看其输出内容。这将为您提供有关触发它的元素的提示。
然后,您可以尝试将e.preventDefault();
添加到您的更改事件中,以阻止其他任何事件被触发。
答案 1 :(得分:1)
经过长时间的延迟,它现在已被破解。 我所要做的就是使用SetTimeOut Method by timeout为0表示不指定任何时间参数。 所以固定代码是
function onRowSelected(e) {
e.preventDefault();
console.log(e.sender);
var text = "";
var grid = this;
grid.select().each(function () {
var dataItem = grid.dataItem($(this));
text += "DealNumber: " + dataItem.DealNumber + "\n" + "Issuer: " +
dataItem.DealIssuer + "\n" + "Ticker: " + dataItem.Ticker + "\n" + "Type: " + dataItem.DealType + "\n" + "Value: " + dataItem.DealValue + "\n" +
"Status " + dataItem.DealStatus + "\n" + "DealPricingCompletionDate: " + kendo.toString(dataItem.DealPricingCompletionDate, "dd/MM/yyyy");
});
setTimeout(function () { alert(text) },0);
}