2009-03-26 3 views
55

Существует ли метод CSS/JavaScript для отображения длинной таблицы HTML, так что заголовки столбцов остаются фиксированными на экране, а первый coloumn остается фиксированным и прокручивается с данными.HTML-таблица с фиксированными заголовками и фиксированной колонкой?

Я хочу иметь возможность прокручивать содержимое таблицы, но всегда иметь возможность видеть заголовки столбцов в верхней и первой колонках слева.

Если есть плагин jQuery, это было бы здорово! Если это помогает единственному браузеру, о котором я забочусь, это Firefox.

+1

Частичный дубликат: http://stackoverflow.com/questions/673153/html-table-with-fixed-headers –

+2

Не похоже на дубликат, так как этот вопрос также требует фиксированного столбца. –

+0

Я голосовал, чтобы вновь открыть этот вопрос из принципа. Десятки голосов и фаворитов, по-видимому, кто-то считает это полезным. Да, это требует длительного ответа. Для этого нужны jfiddle и другие подобные инструменты. – KickingLettuce

ответ

-2

Я знаю, что вы можете do it for MSIE и this limited example, похоже, работает для firefox (не уверен, насколько расширяем технику).

+0

Первая связь не работала для меня. Второй показывает, как создать фиксированный первый столбец. – allyourcode

+0

Обе ссылки в ответе мертвы. – Pang

-2

Первая колонка имеет полосу прокрутки на ячейку прямо под заголовками

<table> 
    <thead> 
     <th> Header 1</th> 
     <th> Header 2</th> 
     <th> Header 3</th> 
    </thead> 
    <tbody> 
     <tr> 
      <td> 
       <div style="width: 50; height:30; overflow-y: scroll"> 
        Tklasdjf alksjf asjdfk jsadfl kajsdl fjasdk fljsaldk 
        fjlksa djflkasjdflkjsadlkf jsakldjfasdjfklasjdflkjasdlkfjaslkdfjasdf 
       </div> 
      </td> 
      <td> 
       Hello world 
      </td> 
      <td> Hello world2 
     </tr> 
    </tbody> 
</table> 
+0

Я думаю, вы неправильно поняли, что вас спрашивают. Мы хотим иметь возможность прокручивать до разных ячеек в (большой) таблице. – allyourcode

1

Если то, что вы хотите, чтобы заголовки остаются на месте в то время как данные в таблице прокручивается по вертикали, вы должны реализовать < TBODY > стилизованы «перелив-у: авто», как это:

<table> 
    <thead> 
    <tr> 
     <th>Header1</th> 
     . . . 
    </tr> 
    </thead> 
    <tbody style="height: 300px; overflow-y: auto"> 
    <tr> 
     . . . 
    </tr> 
    . . . 
    </tbody> 
</table> 

< Если TBODY> содержание растет выше желаемой высоты, он начнет прокрутку. Однако заголовки остаются фиксированными вверху, независимо от положения прокрутки.

+4

спасибо, что помогает с фиксированной частью заголовка, но как насчет фиксированного столбца? – koogunmo

+3

overflow-y имеет значение ms. Вам нужно будет использовать обычное переполнение: auto. –

+0

Можно ли сделать две группы colg и дать второй переполнение: auto, чтобы достичь фиксированного первого col? –

-1

YUI DataTable

Я не знаю, если YUI DT имеет эту функцию, но я не удивлюсь, если он делает.

+0

Спасибо, я посмотрел на это. У этого есть таблица прокрутки, но у этого есть фиксированный заголовок, но не фиксированный coloumn, который мне нужен. http://developer.yahoo.com/yui/examples/datatable/dt_fixedscroll.html – koogunmo

+0

Да, я не мог найти это ни из их списка примеров. – allyourcode

2

Возможно, вы ищете this.

У этого есть некоторые известные проблемы, хотя.

+3

Как загрузить это решение? – penguru

+0

Добавить ссылку для загрузки, а также –

18

Рабочий пример link posted by pranav:

http://jsbin.com/nolanole/1/edit?html,js,output

FYI: Испытано в IE 6, 7, & (режим совместимости включен или выключен) 8, FF 3 & 3.5, хром 2. Не экран-reader- (заголовки не входят в таблицу содержимого).

EDIT 5/5/14: перемещен пример jsBin. Это старый, но удивительно по-прежнему работает в современных браузерах Chrome, IE и Firefox (хотя для IE и Firefox могут потребоваться некоторые корректировки высоты строк).

+0

не работает для меня в winxp ie8 или ff3.6 – allyourcode

+1

Ссылка на библиотеку jQuery, размещенную на jQuery.com, изменена, и их перенаправление было неправильным ... поэтому она перестала работать во всех браузерах , Я исправил ссылку, чтобы указать на файл на серверах Google вместо этого - надеюсь, что нужно быть более надежным. – acatalept

+0

Спасибо. Это очень помогло мне. Мне пришлось модифицировать код, чтобы использовать setTimeout(), чтобы заставить его работать с большими таблицами, но это хороший пример. –

2

Я вижу это, хотя старый вопрос, это очень хорошее место, чтобы подключить свой собственный сценарий:

http://code.google.com/p/js-scroll-table-header/

Он просто работает без настройки и очень проста в установке.

+0

У меня такое чувство, что назначенные уникальные идентификаторы для каждой строки, когда могут быть тысячи строк, могут быть не лучшим решением. –

-2

Вот хороший плагин jQuery, работающий во всех браузерах!

У вас есть фиксированный стол заголовка без фиксации его ширины.

Проверьте это: https://github.com/benjaminleouzon/tablefixedheader

Отказ от ответственности: я являюсь автором плагина.

+0

Угадайте, правильный URL-адрес здесь будет http://www.fixedheadertable.com/ – maryisdead

0

Я создал что-то, у которого есть фиксированный заголовок, фиксированный нижний колонтитул, фиксированный левый столбец, а также фиксированный правый столбец. Это работает только в IE. Поскольку большинство пользователей все еще используют IE, это может быть полезно. Код можно найти здесь: Scrollable Table. Пожалуйста, позвольте мне ваши предложения.

Тем временем я работаю над исправлением столбцов в другом браузере. Я буду держать вас в курсе. :-)

+2

Это не отличное решение, IE прекратил поддержку выражений CSS: http://msdn.microsoft.com/en-us/library/cc304082%28VS.85%29.aspx#expressions – Homer

+0

Приятный, но работает только в IE , – IvanH

+2

«большинство пользователей все еще используют IE» LOL: D –

0
<script> 
    $(document).ready(function() { 
    $("#GridHeader table").html($('#<%= GridView1.ClientID %>').html()); 
    $("#GridHeader table tbody .rows").remove(); 
    $('#<%= GridView1.ClientID %> tr:first th').hide(); 
}); 
</script> 

<div id="GridHeader"> 
    <table></table> 
</div> 

<div style="overflow: auto; height:400px;"> 
    <asp:GridView ID="GridView1" runat="server" /> 
</div> 
+0

Можно ли использовать этот метод с «отзывчивыми» столбцами (не определена фиксированная ширина)? –

0

Не совсем совершенный, но он меня ближе, чем некоторые из лучших ответов здесь.

двух разных таблиц, один с заголовком, а другой, завернутые с DIV с содержанием

<table> 
    <thead> 
    <tr><th>Stuff</th><th>Second Stuff</th></tr> 
    </thead> 
</table> 
<div style="height: 600px; overflow: auto;"> 
    <table> 
    <tbody> 
     //Table 
    </tbody> 
    </table> 
</div> 
2

jQuery DataTables plug-in является одним отличным способом для достижения Excel-как фиксированный столбец (ы) и заголовки.

Обратите внимание на раздел примеров сайта и «дополнительные услуги».
http://datatables.net/examples/
http://datatables.net/extras/

В разделе «Дополнительно» есть инструменты для фиксированных столбцов и фиксированных заголовков.

Фиксированные Колонны
http://datatables.net/extras/fixedcolumns/
(я считаю, что пример на этой странице является наиболее подходящим для вашего вопроса.)

Фиксированный заголовок
http://datatables.net/extras/fixedheader/
(Включает пример с полноформатная таблица раскладки таблицы: http://datatables.net/release-datatables/extras/FixedHeader/top_bottom_left_right.html)

+1

примечание: из моего опыта (исправьте меня, если я ошибаюсь), он работает только в том случае, если все ваши ячейки таблицы имеют 'colSpan' и' rowSpan' = 1. –

Смежные вопросы