Mam datagrid .net z około 20 kolumn. Potrzebuję widoczności kolumny, która ma być przełączana na podstawie kliknięcia przycisku przy użyciu javascript. Jakieś pomysły?Ukryj kolumnę datagridu z Javascriptem?
Odpowiedz
Chcesz użyć COLGROUP to zrobić, w przeciwnym razie trzeba zastosować styl do każdą komórkę na każdy wiersz, który będzie strasznie nieefektywne i prawdopodobnie zawiśnie przeglądarka, zwłaszcza jeśli twoja siatka jest duża. Wszystkie wyżej wymienione odpowiedzi oparte na bibliotece trzeciej (jQuery) robią to powoli/leniwie. Ponieważ wszystkie JavaScript działa po stronie klienta, prawdopodobnie chcesz mieć trochę więcej uwagi, jeśli chodzi o wydajność.
Tu ya go ...
function hideColumns(tableId, colIndexArray) {
var tbl = document.getElementById(tableId);
if(!tbl) return;
var rows = tbl.getElementsByTagName("TBODY");
if(rows.length == 0)
rows = tbl.getElementsByTagName("TR");
else
rows = rows[0].getElementsByTagName("TR");
var cols = rows[rows.length - 1].getElementsByTagName("TD");
var colgroup = document.createElement("COLGROUP");
for(var i = 0, l = cols.length; i < l; i++) {
var col = document.createElement("COL");
for(var num in colIndexArray) {
if(colIndexArray[num] == i) {
if(document.all)
col.style.display = 'none'
else
col.style.visibility = 'collapse';
break;
}
}
colgroup.appendChild(col);
}
tbl.insertBefore(colgroup, tbl.childNodes[0]);
}
Używaj go tak ...
var columnsToHide = [0, 1, 2]; // hide the first 3 columns
var tableId = "tableIdHere"; // view the source of your page to get this
hideColumns(tableId, columnsToHide);
Testowany w IE7 i FF3: Hide Table Columns Using Javascript
Użyj jQuery! To jest zajebiste.
Twój link może wyglądać następująco:
<a href="javascript:ToggleColumn();">Toggle My Column</a>
JavaScript funkcja może wyglądać następująco:
function ToggleColumn()
{
$(".myColumn").toggle();
}
Każda wygenerowana w żądanej kolumny będą musiały mieć klasę atrybut = „myColumn” więc twój javascript może go znaleźć. Aby to zrobić, można dodać element <ItemStyle />
do żądanej kolumny swojej DataGrid, tak:
<asp:TemplateColumn runat="server">
<ItemStyle CssClass="myColumn" />
</asp:TemplateColumn>
I wreszcie należy pamiętać, aby podać link do jQuery w pliku nagłówkowym gdzieś coś takiego:
<script src="/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
Możesz download jQuery here.
'kolumna' nie jest tak naprawdę HTML element, który możesz przełączać w ten sposób. – SolutionYogi
@SolutionYogi: Pewnie, że tak! Selektor jQuery szuka klasy myColumn. Ten kod działa świetnie! :) – JerSchneid
Niezupełnie. Co zrobi ASP.NET to umieszczenie klasy .myColumn na każdym TD dla tej kolumny. Tak więc poszczególne TD będą się włączać. Brzydka jak grzech, ale powinna działać. – Randolpho
Moja osobista opinia to użycie JQuery.
Użyj selektorów, aby znaleźć kolumnę i dodaj styl "hidden: true". To jest czyste rozwiązanie JS.
Spójrz na ten plugin jQuery,
http://p.sohei.org/jquery-plugins/columnmanager/
Włączenie tej wtyczki na swojej stronie i nazywają to na razie kliknięcia łącza.
Użyj jquery, jak sugerowali inni ... selektor taki jak ten powinien to zrobić. To zasadniczo ukryć kolumna 3.
$('table.tableCSS tr').find('td:eq(2)').hide(); // eq(index)
- 1. Ukryj kolejne rodzeństwo elementu z Javascriptem
- 2. Ukryj lewą kolumnę DataGridView
- 3. Numer wiersza datagridu WPF
- 4. Ukryj kolumnę widoku listy wpf
- 5. Qt Ukryj kolumnę w QTableView
- 6. Usuwanie wierszy z datagridu WPF
- 7. CSS: Ukryj kolumnę gdy szerokość zmniejsza
- 8. Ukryj kolumnę, jeśli wszystkie wiersze są puste.
- 9. CSS ukryj kolumnę tabeli do wydrukowania
- 10. Przeczytaj doctype z JavaScriptem
- 11. Dust.js z wbudowanym JavaScriptem
- 12. Apex - Raport interaktywny - Ukryj kolumnę w CSV Pobierz?
- 13. Odczytaj wartość sesji z Javascriptem
- 14. Wykryj obsługę przejścia z JavaScriptem
- 15. Oblicz różnicę czasu z JavaScriptem
- 16. HTML e-mail z Javascriptem
- 17. Pobierz pliki binarne z Javascriptem
- 18. Testowanie kontrolera Rspec z Javascriptem
- 19. Zarejestruj PDF z prostym JavaScriptem
- 20. Utwórz mapę izometryczną z Javascriptem
- 21. Ukryj kolumnę GridView według nazwy w czasie wykonywania w ASP.Net
- 22. Telerik RadGrid - ukryj najbardziej wysuniętą kolumnę w lewo
- 23. Zapobieganie WPF 4,0 DataGrid wyświetlanie pustą kolumnę
- 24. Interfejs API HTML5 FullScreen z JavaScriptem
- 25. Jak zbudować ciąg zapytania z JavaScriptem
- 26. Ustawienie innerHTML a wartość ustawienia z Javascriptem
- 27. Nawigacja URL w iframe z Javascriptem
- 28. Ustaw literałowy tekst ASP z Javascriptem
- 29. Formularz wypełnienia w WebView z Javascriptem
- 30. Podzielić tekst CSS na JSON z Javascriptem
Wow poprawną odpowiedź bez użycia JQuery. +1 – epascarello
Datagridy nie emitują grup colgroups. – Randolpho
LOL! Tak, i dlatego używam Javascript, aby wprowadzić je do DOM. Nie poddawaj się głosowaniu tylko dlatego, że nie rozumiesz! –