Javascript 更改现有剑道网格上的选项的正确语法是什么?

Javascript 更改现有剑道网格上的选项的正确语法是什么?,javascript,jquery,kendo-ui,kendo-grid,Javascript,Jquery,Kendo Ui,Kendo Grid,我有剑道格网: $('#myGrid').kendoGrid({ ... scrollable: false, ... }); 后来我想更改它的滚动属性。我尝试了以下所有方法: $('#myGrid').data("kendoGrid").options.scrollable = true; $('#myGrid').data("kendoGrid").refresh(); - - - 什么都不管用。如何更改网格是否可以动态滚动?这不支持开箱即用,因此您必须搞乱内部结

我有剑道格网:

$('#myGrid').kendoGrid({
    ...
    scrollable: false,
    ...
});
后来我想更改它的滚动属性。我尝试了以下所有方法:

$('#myGrid').data("kendoGrid").options.scrollable = true;
$('#myGrid').data("kendoGrid").refresh();
-

-

-


什么都不管用。如何更改网格是否可以动态滚动?

这不支持开箱即用,因此您必须搞乱内部结构。重新创建网格可能更容易,但如果您仍然认为需要它,此小提琴可能会帮助您找到正确的方向:

基本上,您可以尝试使用以下内容:

function enableScrolling() {
    if (!grid.options.scrollable) {
        grid.options.scrollable = true;
        grid._thead();
        grid.refresh();
    }
}

function disableScrolling() {
    grid.options.scrollable = false;
    grid.table.unwrap(); // manually remove the wrapper that enables scrolling
}

使可滚动网格不可滚动会导致数据列的宽度错误,因此根据您的要求,您可能需要对其进行更多的自定义。

网格的选项无法动态更改。您需要使用不同的选项重新创建整个网格,以便动态禁用/启用它们

编辑 从2014年第3季度开始,网格支持该方法,该方法在内部的作用基本相同,但保持了大多数选项和数据源状态的同步

var MyGrid = $('#myGrid').data("kendoGrid");
MyGrid.options.scrollable = true;
(根据我的经验)然后需要重新加载数据源,例如:

MyGrid.setDataSource(kendoDataSource);

结果只是重新创造了整个过程。值得注意的是,在重新创建它之前,您可能需要积极地此外,当您销毁它时,height属性不会消失(即使它是与grid属性一起设置的),因此,如果要将可滚动网格重新创建为不可滚动网格,则需要调用$('#myGrid').css('height','');很高兴知道,谢谢。Telerik可能会在某一点上为网格实现.setOptions(他们的一些小部件都有它),以使这变得更容易。考虑到水疗在当今的重要性,这似乎是一个好主意,但当然他们的资源有限。
function enableScrolling() {
    if (!grid.options.scrollable) {
        grid.options.scrollable = true;
        grid._thead();
        grid.refresh();
    }
}

function disableScrolling() {
    grid.options.scrollable = false;
    grid.table.unwrap(); // manually remove the wrapper that enables scrolling
}
var MyGrid = $('#myGrid').data("kendoGrid");
MyGrid.options.scrollable = true;
MyGrid.setDataSource(kendoDataSource);