Mam problem ze sterowaniem szerokością tabeli za pomocą wtyczki jQuery DataTables. Tabela powinna zajmować 100% szerokości kontenera, ale ostatecznie ma dowolną szerokość, a nie mniej niż szerokość kontenera.
Mile widziane sugestie
Deklaracja tabeli wygląda następująco
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%">
A javascript
jQuery('#tab-datasets').load('/cgi-bin/qryDatasets', '', function (){
jQuery('#querytableDatasets').dataTable({
"bPaginate": false,
"bInfo": false,
"bFilter": false
});
}); `
Sprawdzając kod HTML w Firebug, widzisz to (zwróć uwagę na dodany styl = "width: 0px;")
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%" style="width: 0px;">
Patrząc na style w Firebug, nadpisano styl table.display. Nie mogę zobaczyć, skąd się to bierze
element.style {
width:0;}
-- dataTables.css (line 84
table.display {
margin:0 auto;
width:100%;
}
jquery
datatables
jquery-datatables
John Mac
źródło
źródło
max-width
ustawioną właściwość. Pozorny IE8 nie lubi tej właściwości za bardzo i zignorował ją w odniesieniu do danych, mimo że obraz miał poprawny rozmiar na ekranie. Zmiana w celuwidth
rozwiązania problemu.Odpowiedzi:
Problem jest spowodowany tym, że dataTable musi obliczyć swoją szerokość, ale gdy jest używana wewnątrz karty, nie jest widoczna, dlatego nie może obliczyć szerokości. Rozwiązaniem jest wywołanie „fnAdjustColumnSizing”, gdy pojawi się karta.
Preambuła
Kod inicjalizacyjny
Zobacz to, aby uzyskać więcej informacji.
źródło
window.resize
, spójrz na przykład legacy.datatables.net/ref#fnAdjustColumnSizingBędziesz chciał dostosować dwie zmienne podczas inicjalizacji dataTables:
bAutoWidth
iaoColumns.sWidth
Zakładając, że masz 4 kolumny o szerokościach 50 pikseli, 100, 120 pikseli i 30 pikseli, wykonaj następujące czynności:
Więcej informacji na temat inicjalizacji dataTables można znaleźć pod adresem http://datatables.net/usage
Uważaj na interakcję między tym ustawieniem szerokości i stosowanym kodem CSS. Możesz skomentować istniejący CSS, zanim spróbujesz, aby zobaczyć, jak blisko jesteś.
źródło
źródło
Cóż, nie jestem zaznajomiony z tą wtyczką, ale czy możesz zresetować styl po dodaniu datatable? Coś jak
po wywołaniu .dataTable?
źródło
Miałem wiele problemów z szerokością kolumn danych. Magiczną poprawką było dla mnie włączenie linii
ten css idzie w parze z ogólnym css tabeli. Na przykład, jeśli zadeklarowałeś dane w następujący sposób:
wtedy magiczna linia css trafiłaby do klasy Loadtable
}
źródło
Rozwiązanie TokenMacGuys działa najlepiej, ponieważ jest to wynikiem błędu w jQdataTable. Co się stanie, jeśli użyjesz $ ('# somethingabe'). DataTable (). FnDestroy (), szerokość tabeli zostanie ustawiona na 100px zamiast 100%. Oto szybkie rozwiązanie:
źródło
Dodaj tę klasę css do swojej strony, rozwiąże to problem:
źródło
Ustawienie szerokości jawnie przy użyciu
sWidth
dla każdej kolumny ORAZbAutoWidth: false
podczasdataTable
inicjalizacji rozwiązało mój (podobny) problem. Uwielbiam przepełniony stos.źródło
Musisz zostawić przynajmniej jedno pole bez stałego pola, na przykład:
Możesz zmienić wszystko, ale tylko jeden pozostawić jako zerowy, aby mógł się rozciągnąć. Jeśli ustawisz szerokości na WSZYSTKIE, to nie zadziała. Mam nadzieję, że dzisiaj komuś pomogłem!
źródło
To działało dobrze, aby dopasować całą szerokość stołu. Dzięki @Peter Drinnan!
źródło
Podobnie jak w przypadku Datatable 10.1 jest to proste. Po prostu umieść atrybut szerokości w swojej tabeli w HTML. tzn. width = "100%", nadpisze wszystkie style CSS ustawione przez DT.
Zobacz ten http://www.datatables.net/examples/basic_init/f flexible_width.html
źródło
Żadne z rozwiązań tutaj nie zadziałało. Nawet przykład na stronie głównej datatables nie zadziałał w związku z inicjalizacją datatable w opcji show.
Znalazłem rozwiązanie problemu. Sztuczka polega na użyciu opcji aktywuj dla zakładek i wywołaniu fnAdjustColumnSizing () na widocznej tabeli :
źródło
Powiem tylko, że miałem dokładnie ten sam problem co ty, chociaż właśnie zastosowałem JQuery do normalnego stołu bez żadnego Ajaxa. Z jakiegoś powodu Firefox nie rozszerza tabeli po jej ujawnieniu. Rozwiązałem problem, umieszczając tabelę wewnątrz DIV i zamiast tego zastosowałem efekty do DIV.
źródło
Czy robisz to w przypadku gotowości?
Rozmiar najprawdopodobniej będzie zależał od pełnego załadowania dokumentu.
źródło
Dla każdego, kto ma problem z dostosowaniem szerokości tabeli / komórki za pomocą wtyczki ze stałym nagłówkiem:
Datatables opiera się na tagach thead dla parametrów szerokości kolumn. Dzieje się tak, ponieważ jest to tak naprawdę jedyny natywny kod HTML, ponieważ większość wewnętrznego kodu HTML tabeli jest generowana automatycznie.
Jednak dzieje się tak, że część twojej komórki może być większa niż szerokość przechowywana w komórkach thead.
To znaczy, jeśli twoja tabela ma dużo kolumn (szeroka tabela), a twoje wiersze mają dużo danych, to wywołanie "sWidth": zmiana rozmiaru komórki td nie będzie działać poprawnie, ponieważ wiersze potomne automatycznie zmieniają rozmiar td na podstawie przepełnienia treść i dzieje się to później zainicjowaniu tabeli i przekazaniu jej parametrów inicjalizacji.
Oryginalne parametry „sWidth”: są nadpisywane (zmniejszane), ponieważ pliki danych uważają, że tabela nadal ma domyślną szerokość% 100 - nie rozpoznaje, że niektóre komórki są przepełnione.
Aby to naprawić, obliczyłem szerokość przepełnienia i uwzględniłem to, odpowiednio zmieniając rozmiar tabeli po zainicjowaniu tabeli - skoro już to robimy, możemy w tym samym czasie zainicjować nasz stały nagłówek:
źródło
utwórz swój fixedheader wewnątrz "sukcesu" twojego wywołania Ajax, nie będziesz mieć żadnych problemów z wyrównaniem w nagłówku i wierszach.
źródło
Mam nadzieję, że to pomoże komuś, kto wciąż walczy.
Nie trzymaj stołu w żadnym pojemniku. Ustaw opakowanie tabeli jako kontener po wyrenderowaniu tabeli. Wiem, że może to być nieprawidłowe w miejscach, w których oprócz tabeli masz coś innego, ale zawsze możesz dodać tę zawartość z powrotem.
Dla mnie ten problem pojawia się, jeśli masz pasek boczny i kontener, który jest w rzeczywistości przesunięciem w stosunku do tego paska bocznego.
(Dodałem panel domyślny)
I twoja klasa:
źródło
znaleźć inne przydatne łącze dotyczące tego problemu i to rozwiązało mój problem.
Tabela szerokości siły w danych
źródło
Napotkałem podobny problem, gdy wokół stołu zawinięto element div.
Dodawanie pozycji: względny naprawił to za mnie.
źródło
Miałem podobny problem, w którym zawartość tabeli była większa niż nagłówek i stopka tabeli. Wydaje się, że dodanie elementu div dookoła stołu i ustawienie przepełnienia x rozwiązało ten problem:
źródło
Upewnij się, że wszystkie inne parametry przed bAutoWidth i aoColumns są poprawnie wprowadzone. Każdy nieprawidłowy parametr przed złamaniem tej funkcji.
źródło
Miałem podobny problem i stwierdziłem, że tekst w kolumnach nie pęka, a użycie tego kodu CSS rozwiązało problem
źródło
To jest mój sposób na zrobienie tego ...
źródło
Mam dziś ten sam problem.
Użyłem trudnego sposobu, aby go rozwiązać.
Mój kod, jak poniżej.
źródło
Sprawdź też to rozwiązanie. rozwiązało to łatwo mój problem z szerokością kolumny DataTable
JQuery DataTables 1.10.20 wprowadza
columns.adjust()
metodę, która naprawia problem z przełącznikiem BootstrapZapoznaj się z dokumentacją: zakładki Przewijanie i Bootstrap
źródło
To działa dobrze.
źródło