2009-10-16 12 views
5

Może to wydawać się podstawowym pytaniem, ale mam problem z ustaleniem szerokości tabeli na 100% na datowalnym YUI.YUI Datatable Width

Próbowałem robić

#dtContainer { 
    width: 100%; 
} 

#dtContainer table { 
    width: 100% 
} 

ale żadna z tych metod pracy.

Aby wyjaśnić, próbuję ustawić szerokość datatable do 100%, gdy tabela jest pusta i wyświetlany jest pusty komunikat.

Wygenerowana tabela jest tabelą HTML; więc myślałem, że to powinno działać.

Odpowiedz

4

Okazuje się, że rozwiązanie jest bardzo proste:

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

Przepraszam, zapomniałem wspomnieć, że nie skorzystałem z tego rozwiązania ... – Abe

+1

W takim przypadku należy wybrać odpowiedź Matta Calderaro jako poprawną odpowiedź, a nie własną odpowiedź, której nie używałeś. – Paul

2

To jest brzydkie rozwiązanie. ale działa

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

problem jest zastosowanie stylu wstępnego renderowania nie ma sensu, javascript buduje tabelę, po czyni się wszystko, co mogłem dostać się do pracy.

+0

Dzięki. Nie wykorzystałem twojej implementacji, ale wskazało mi to we właściwym kierunku. W zasadzie użyłem metody Dom YUI setAttribute, aby ustawić rozmiar na metodach, które wyzwalają zdarzenie render() w datowalnym YUI. – Abe

0

wygląda to trochę tag styl działa magiczne:

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

nie używaj .yui-dt tabeli {width: 100%;} , Wydaje się nie ustawiać poprawnie szerokości kolumn. Użyj myDataTable.setAttributes ({width: "100%"}, true); po renderowaniu tabeli:

+0

Tak. Tak właśnie zrobiłem w przypadku renderowania. dzięki! – Abe

+0

pracował dla mnie. również dodane na postRender, więc nagłówek i ciało będą zapalone w prawo: $ ("div.yui-dt-hd"). css ("szerokość", "auto"); $ ("div.yui-dt-bd"). Css ("szerokość", "auto"); – capdragon

+0

Jeśli to nie działa, użyj 'setAttrs' zamiast' setAttributes' (YUI3). – JGeo

0

Aby zachować proporcje ekranu na różnych ekranach o różnych rozdzielczościach, musiałem ręcznie ustawić szerokość kolumny jako procent zsumowany do 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: Może nie być najlepszym sposobem, aby to zrobić, ale rozwiązał mój problem!

Kwex.

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

To powinno wystarczyć. Pracowałem dla mnie AUI 2.5.1