Kendo ui 是否有一个事件指示剑道网格已渲染?
我想在剑道网格渲染后对其进行一些更改(显示/隐藏列等)。但是剑道网格不提供任何Kendo ui 是否有一个事件指示剑道网格已渲染?,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我想在剑道网格渲染后对其进行一些更改(显示/隐藏列等)。但是剑道网格不提供任何onRendered事件。那我该怎么做呢 前面,我使用了dataBound事件来实现这一点。它过去工作得很好,因为当数据从AJAX请求到达时,网格已经呈现出来了。然而,我的用例已经改变了——当声明网格时,数据现在已经可用了。因此,dataBound事件中的代码没有找到网格。在下面的代码中,如果(网格)始终返回false: $('#mygrid').kendoGrid({ dataSource: {
onRendered
事件。那我该怎么做呢
前面,我使用了dataBound
事件来实现这一点。它过去工作得很好,因为当数据从AJAX请求到达时,网格已经呈现出来了。然而,我的用例已经改变了——当声明网格时,数据现在已经可用了。因此,dataBound
事件中的代码没有找到网格。在下面的代码中,如果(网格)始终返回false:
$('#mygrid').kendoGrid({
dataSource: {
data: myGridData
},
dataBound: function() {
// Check if the grid has been rendered
var grid = $('#mygrid').data('kendoGrid');
if (grid) {
// Show/hide columns
...
}
},
...
});
我还尝试在kendoGrid()调用后移动支票,但仍然不起作用。调用后,尚未立即呈现网格
$('#mygrid').kendoGrid({
dataSource: {
data: myGridData
},
...
});
// Check if the grid has been rendered
var grid = $('#mygrid').data('kendoGrid');
if (grid) {
// Show/hide columns
...
}
在进行检查之前,我可以使用setTimeout(),但这感觉像是一个黑客!还有别的办法吗?剑道网格是否可以引入一个事件,例如onRendered
?我觉得这是解决这个问题的正确方法
提前感谢您的时间。终于解决了!这根本不是剑道UI的问题。这是一个木偶框架的bug。在我尝试执行$('#mygrid').data('kendoGrid')时,#mygrid没有连接到DOM-渲染是在DOM之外执行的。很自然,选择器什么也没有返回!所以我为木偶和剑道网格设置了一个解决方案,开始工作得很好 似乎从Dojo中可以很好地工作:@CodingWithSpike,谢谢您的示例。这似乎表明数据绑定应该起作用。不幸的是,我无法在代码中复制这一点。已尝试在数据绑定函数中放置断点-$('mygrid')存在,但$('mygrid')。数据('kendoGrid')不存在。仍在试图弄清楚到底发生了什么。有什么想法吗?您可以返回到网格小部件,并将参数传递给事件处理程序。请尝试以下操作:
dataBound:function(dataBoundEvent){var gridWidget=dataBoundEvent.sender;}
或者该事件对象中的其他内容?好的,我可以使用dataBoundEvent.sender
访问网格。它确实给了我一个解决方法,但它并不漂亮——现在我必须将网格传递给所有嵌套函数。你能想到为什么dataBoundEvent
知道网格但是$(“#mygrid”).data('kendoGrid')
不返回它吗?没有线索。我以前从未真正看到过。我也觉得奇怪。查看您的#grid
元素是否具有属性data role=“grid”
。任何具有数据角色的元素
都应该是您调用.data(“kendoGrid”)
的元素。您也可以尝试Kendo UI Chrome扩展,看看它是否可以找到您的网格:
$("#grid").on("DOMSubtreeModified", function () {
var grid = $("#grid").data("kendoGrid");
if (grid) {
console.log("Grid is ready!");
/* Note that dataSource will not be available here.
You can however start attaching event handlers e.g.
grid.bind("dataBound", func) */
$("#grid").off("DOMSubtreeModified");
}
});