2013-10-16 46 views
5

我有一個劍道網:更改現有Kendo網格上的選項的正確語法是什麼?

$('#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(); 

沒有什麼工作。如何改變網格是否可以隨意滾動?

回答

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 
} 

使可滾動網格不可滾動,因此會導致數據列的寬度錯誤,所以根據您的要求,您可能需要對此進行更多定製。

+0

端了剛剛重建了整個事情。值得注意的是,你可能需要主動[銷燬網格](http://stackoverflow.com/questions/15618467/kendogrid-destroy-and-recreate-the-table-on-a-new-datasource-why-do之前重新創建它。 - 另外,當你銷燬它時,height屬性不會消失(即使它是用網格屬性設置的),所以如果你正在重新創建一個可滾動的網格作爲不可滾動的網格,你需要調用$( '#myGrid')。css('height',''); – Zook

+0

很高興知道,謝謝。 Telerik可能會在某一時刻爲網格實現.setOptions(他們爲它們的一些小部件提供了它),以便更容易。考慮到現今SPA的重要性,這似乎是一個好主意,但它們當然資源有限。 –

4

網格的選項不能動態改變。您需要使用不同選項重新創建整個Grid,以便動態禁用/啓用它們。

編輯 由於從第三季度到2014年,電網支持setOptions方法,它的確非常內部相同,但保留大多數的選項,並在同步的數據源的狀態。

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

(我的經驗的基礎),那麼你需要重新加載數據源恩:

MyGrid.setDataSource(kendoDataSource);