我正在使用ASP.NET MVC Kendo网格。 单击按钮,我需要展开所有行。 以下是相同的代码:
var row = $(this).closest("tr.k-master-row");
grid.data("kendoGrid").expandRow(row);
已定义此网格和网格。这很有效。
在扩展每一行时,将调用以下事件(对于每一行),因为绑定了详细信息模板: .Events(events => events.DataBound(“onInnerGridDataBound”))
function onInnerGridDataBound(e) {
//Do something here
}
我的要求是,在我启动调用以扩展所有行之后,我在代码中有几行,只有在所有行都被展开后才能执行。所以,
function expandAll()
{
var row = $(this).closest("tr.k-master-row"); //Step1
grid.data("kendoGrid").expandRow(row);"); //Step2
//Do something after the onInnerGridDataBound event is called for
every expanded row.
..................................
//Ideally should be step 4 to be executed, but executes immediately
//after step2
}
//Ideally Step 3 to execute, but executes last
function onInnerGridDataBound(e) {
//Do something here
}
我想避免使用setTimeout方法,因为我不知道它需要多长时间或任何标志。
希望尽快找到答案。
谢谢!
答案 0 :(得分:0)
你试过这个吗?
不确定它是否在这里工作但它应该是这样的:
$.when(grid.data("kendoGrid").expandRow(row))
.done(function () {
//after completing expandRow event
})
.then(function() {
//something else
});
同样,这可能根本不起作用,因为我不确定是否可以将kendoGrid事件视为延迟对象,但它值得一试。