2011-01-31 5 views
0

У меня есть dataTable, который работает по желанию, когда он отображается через обычный (не-ajax) цикл запроса/ответа.JSF dataTable rerender теряет CSS-стиль

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

.myTable tr:first-child td { 
    padding-top: 25px; 
    background-color: yellow; 
} 

Как я уже упоминал выше, обивка и цвет фона появляется отлично, когда загруженные с помощью типичный запрос/ответ. Однако есть несколько действий, которые могут привести к повторной визуализации этой таблицы через AJAX. Когда это происходит, таблица правильно перезагружается (это данные), но этот стиль не применяется повторно.

Поскольку при использовании компонента dataTable невозможно назначить первую строку классу CSS. Итак, я использовал указанный выше CSS-селектор, чтобы получить первую строку. Кто-нибудь когда-либо сталкивался с такой проблемой раньше? Является ли мой единственный вариант попробовать и использовать jQuery в oncomplete ВСЕХ ... может быть много разных мест ... действия, которые могут вызвать повторную визуализацию таблицы?

Моя проблема заключается в том, что я стараюсь избегать использования компонента таблицы richfaces для повышения скорости, и мне нужно, чтобы таблица была прокручиваемой. Итак, я использую CSS-решение для браузера srcoll для тела таблицы и сохраняю заголовки статическими. Основное зависание состоит в том, что мне нужна первая строка таблицы, чтобы иметь верхнее значение заполнения, которое подталкивает его ниже фиксированного местоположения заголовка таблицы.

+0

Это больше походит на браузер конкретного вопроса CSS. Какой браузер вы использовали? Попробуйте протестировать, по крайней мере, браузеры MSIE, Gecko (Firefox) и Webkit (Chrome, Safari). – BalusC

+0

Разработка приложения нацелена на IE7. – Steve

ответ

2

Поскольку вы переопределяете только dataTable, применяется стиль по умолчанию таблицы.

Вам также необходимо переписать код стиля вместе с dataTable, который может решить вашу проблему.

Попробуйте что-то вроде кода ниже и засавить outputPanel вместо DataTable:

<a4j:outputPanel> 
    <h:dataTable> 
      //Data 
    </h:dataTable> 
    <style> 
     .myTable tr:first-child td { 
      padding-top: 25px; 
      background-color: yellow; 
     } 
    </style> 
</a4j:outputPanel> 
+0

У меня возникла аналогичная проблема с JavaScript, поэтому я не уверен, почему я не думал повторно переопределить стиль. Тем не менее, когда я вытаскивал хаки, которые я использовал, чтобы попытаться заставить это работать, я попробовал еще раз, прежде чем вставлять стиль повторной визуализации, и теперь он работает. Таким образом, я, очевидно, просто что-то тонкое неправильно и не смог определить его, но, вернув код в его «оригинальную» форму, я ее исправил. Итак, спасибо за предложение. Если я снова удалю этот вопрос, я буду помнить об этом. – Steve

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