5

我有一个剑道网格:

$('#myGrid').kendoGrid({
    ...
    scrollable: false,
    ...
});

然后稍后我想更改它的可滚动属性。我已经尝试了以下所有方法:

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

-

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

-

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

-

var MyGrid = $('#myGrid').data("kendoGrid");
MyGrid.scrollable = true;
MyGrid.refresh();

没有任何效果。如何改变网格是否可以动态滚动?

4

3 回答 3

5

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

http://jsfiddle.net/lhoeppner/AKzzL/

基本上你可以尝试使用这样的东西:

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
}

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

于 2013-10-16T19:59:32.147 回答
4

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

编辑 从 2014 年第三季度开始,Grid 支持setOptions方法,该方法在内部几乎相同,但使大多数选项和数据源的状态保持同步。

于 2013-10-16T20:06:43.537 回答
0
var MyGrid = $('#myGrid').data("kendoGrid");
MyGrid.options.scrollable = true;

(根据我的经验)然后你需要重新加载dataSource ex:

MyGrid.setDataSource(kendoDataSource);
于 2015-11-20T07:46:35.653 回答