2009-10-16 8 views
5

Questa può sembrare una domanda di base, ma ho difficoltà a capire come impostare la larghezza della tabella al 100% su un datatable YUI.YUI Datatable Width

Ho provato a fare

#dtContainer { 
    width: 100%; 
} 

#dtContainer table { 
    width: 100% 
} 

ma nessuno di questi approcci funzionano.

Per chiarire, sto cercando di impostare la larghezza datatable al 100% quando la tabella è vuota e viene visualizzato il messaggio vuoto.

La tabella generata è una tabella HTML; così, ho pensato che questo dovrebbe funzionare.

risposta

4

Si scopre la soluzione è molto semplice:

.yui-dt table 
{ 
    width: 100%; 
} 
+0

Mi dispiace, ho dimenticato di dire che non ho usato questa soluzione ... – Abe

+1

In questo caso dovresti selezionare la risposta di Matt Calderaro come risposta corretta, non la tua risposta che non hai usato. – Paul

2

questa è una brutta soluzione. ma funziona

<script> 
window.onload = function() { 
setTimeout('document.getElementById("NAME OF CONTAINER DIV").childNodes[1].style.width 
= "100%"',1000); 
}; 
</script> 

il problema sta applicando lo stile pre render è inutile, il javascript è la costruzione del tavolo, dopo il rendering è tutto quello che potevo andare al lavoro.

+0

Grazie. Non ho usato la tua implementazione, ma mi ha indirizzato nella giusta direzione. Fondamentalmente ho utilizzato il metodo YUI Dom setAttribute per impostare la dimensione sui metodi che attivano l'evento render() sul datatable YUI. – Abe

0

assomiglia a questo tag stile piccole opere di magia:

.yui-dt table { width:100%;} 
6

Non utilizzare .yui-dt table {width: 100%;} , Non sembra impostare le larghezze della colonna correttamente. Usa myDataTable.setAttributes ({width: "100%"}, true); rendering post tabella

+0

Sì. questo è quello che ho fatto nell'evento di rendering. Grazie! – Abe

+0

ha funzionato per me. ha aggiunto anche quanto segue su postRender in modo che l'intestazione e il corpo si trovino a destra: $ ("div.yui-dt-hd"). css ('width', 'auto'); $ ("div.yui-dt-bd"). Css ('width', 'auto'); – capdragon

+0

Se non funziona, usare 'setAttrs' invece di' setAttributes' (YUI3). – JGeo

0

Per mantenere le proporzioni tra i vari schermi con risoluzioni diverse, ho dovuto impostare manualmente la larghezza della colonna come percentuali che si sommano al 100%.

<style type="text/css"> 

    /* YUI Individual Column Width */   
    #dvAutoWidthList .yui-dt-col-Col1{width: 35%;} 
    #dvAutoWidthList .yui-dt-col-Col2{width: 10%;} 
    #dvAutoWidthList .yui-dt-col-Col3{width: 15%;} 
    #dvAutoWidthList .yui-dt-col-Col4, .yui-dt-col-Col5, .yui-dt-col-Col6, .yui-dt-col-Col7 {width: 10%;} 

</style> 

PS: Potrebbe non essere il modo migliore per farlo, ma ha risolto il mio problema!

Kwex.

0
var dataTable = new Y.DataTable(
      { 
      columns: cols, 
      data: remoteData, 
      width: '100%',    
      } 
     ).render('#dataTable '); 

Questo dovrebbe fare il trucco. Ha funzionato per me AUI 2.5.1