2013-10-16 8 views
5

Ho una griglia Kendo:Qual è la sintassi corretta per modificare le opzioni su una griglia Kendo esistente?

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

e poi in seguito voglio cambiare la sua proprietà scorrevole. Ho provato tutti i seguenti:

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

Niente funziona. Come si cambia se una griglia è scorrevole al volo?

risposta

5

Questo non è supportato fuori dalla scatola, quindi dovresti fare confusione con la parte interna. E 'probabilmente più facile per ricreare solo la griglia, ma se pensate ancora che ne avete bisogno, questo violino potrebbe aiutare a punto nella giusta direzione:

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

In sostanza si potrebbe provare a utilizzare qualcosa di simile:

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 
} 

Per rendere una griglia scorrevole non scorrevole come quella, le colonne dei dati hanno la larghezza sbagliata, quindi, a seconda delle esigenze, potrebbe essere necessario personalizzarle di più.

+0

finito per ricreare l'intera faccenda. Vale la pena notare che potrebbe essere necessario [attivamente distruggere la griglia] (http://stackoverflow.com/questions/15618467/kendogrid-destroy-and-recreate-the-table-on-a-new-datasource-why-do -the-old-t) prima di ricrearlo. - Inoltre, la proprietà height non scompare quando la distruggi (anche se è stata impostata con le proprietà della griglia), quindi se stai ricreando una griglia scorrevole come una griglia non scorrevole, devi chiamare $ ('#myGrid'). css ('height', ''); – Zook

+0

Buono a sapersi, grazie. È possibile che a un certo punto Telerik implementerà .setOptions per la griglia (ce l'hanno per alcuni dei loro widget) al fine di renderlo più semplice. Considerando l'importanza delle SPA al giorno d'oggi, sembrerebbe una buona idea, ma ovviamente hanno risorse limitate. –

4

Le opzioni della griglia non possono essere modificate dinamicamente. È necessario ricreare l'intera griglia con diverse opzioni per disabilitarle/abilitarle dinamicamente.

EDIT A partire dal 3 ° trimestre 2014, la griglia supporta il metodo setOptions, che fa praticamente la stessa internamente, ma mantiene la maggior parte delle opzioni e lo stato della dataSource in sincronia.

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

(base sulla mia esperienza), allora avete bisogno di ricaricare il DataSource es:

MyGrid.setDataSource(kendoDataSource);