2013-07-09 1 views
5

Sto provando a collegarmi a una griglia di kendo scorrevole da javascript e con alcuni problemi con le larghezze delle colonne. Questo fiddle dimostra il problema (codice alla fine della domanda). Sto specificando le intestazioni nel codice HTML e aggiungendo una larghezza a una delle intestazioni. Javascript imposta quindi dataSource (nel codice di produzione ciò avviene tramite una chiamata ajax).Larghezza colonna griglia Kendo + Scrollabile

Voglio evitare di dover impostare la proprietà columns.width in javascript perché

  • Ho molti griglie che, dal momento che i miei ViewModels sono accuratamente costruite sono in grado di discernere automaticamente le colonne necessarie. Abbiamo oltre 100 gird nella nostra app e dover specificare l'elenco di colonne per tutti loro sarebbe poco maneggevole.
  • Ci si sente comunque in errore, si tratta di informazioni sullo stile.

Capisco che la funzionalità è dovuta al kendo che crea due griglie, una per le intestazioni e una per il contenuto a scorrimento. Tuttavia, altre librerie di controllo che ho usato in passato che fanno cose simili hanno sempre copiato le informazioni di stile tra le due griglie per facilitare lo stile dichiarativo mantenendo le due tabelle sincronizzate - non sono sicuro di cosa sia il "kendo" modo per questo è.

HTML dal violino

<table> 
    <thead> 
     <th class="p20" data-field="status">Status</th> 
     <th data-field="description">Description</th> 
    </thead> 
</table> 

Javascript

$('table').kendoGrid({ 
    dataSource: [ 
     { status: 'On', description: 'a longer description' }, 
     { status: 'On', description: 'a longer description' }, 
     { status: 'On', description: 'a longer description' }, 
     { status: 'On', description: 'a longer description' }, 
     { status: 'On', description: 'a longer description' }, 
     { status: 'On', description: 'a longer description' } 
    ], 
    scrollable: true 
}); 

CSS

.k-grid-content { 
    height: 100px; 
} 
.p20 { 
    width: 20%; 
} 

risposta

3

qui è abbastanza rettilineo in avanti con barra di scorrimento orizzontale (ignorare la virtualizzazione) http://demos.kendoui.com/web/grid/virtualization-remote-data.html. Avere una larghezza sulla griglia o è genitore e larghezza per ogni colonna con la loro somma sopra la larghezza effettiva della griglia, allora si ottiene la barra di scorrimento:

{ field: "OrderID", title: "Order ID", width: 60 }, 

rispondere Già ieri nel post di altri: Column lines are not in sync in a Kendo grid

Or

http://jsfiddle.net/vojtiik/2ApvC/3/

Nota sto usando la versione più recente di kendo po 'e poi si jQuery fare.

+1

Assolutamente, questo funzionerebbe, ma voglio specificare le mie larghezze nel mark-up non in javascript. Dover specificare i dettagli di ogni colonna per ogni griglia è di gran lunga un compito gravoso ed è il posto sbagliato (semanticamente parlando) a specificare lo stile. –

+0

Sì, mi sono reso conto più tardi di cosa stai parlando, un po 'diverso dalla domanda di ieri. Come pensi di gestire la griglia in cui la larghezza del testo/valore è superiore al tuo 20%? Visualizzi sempre gli stessi dati nelle tue colonne. È possibile impostare la larghezza su tutte le colonne e le intestazioni come si desidera e distribuire i puntini di sospensione ("il mio valore incompleto ...") per evitare la differenza larghezza/sincronizzazione. – Vojtiik

+0

Fondamentalmente, il kendo imposta il layout della tabella su "fisso" per le griglie scorrevoli (il che è fastidioso per iniziare) con il fatto che alcune delle nostre colonne sono troppo larghe. Abbiamo alcune colonne che sono solo icone di indicatori di stato e voglio impostarle solo per alcuni pixel di larghezza. Tutti gli altri ottengono i puntini di sospensione e anche la griglia può essere ridimensionata e le barre di scorrimento orizzontali appaiono se necessario (vedere la griglia sul portale di gestione azzurro per un esempio del tipo di funzionalità). È un peccato che il kendo segua l'approccio delle "due griglie" senza rendere la complessità invisibile ai consumatori –

0

Un'altra opzione è utilizzare gli elementi <colgroup/> e <col/> con proprietà stile/classe.