2013-11-07 6 views
0

Основные свойства dataTable имеет функцию, известную как extendedRow, которая при установке в true расширяет все строки. Но я хочу, чтобы только конкретная строка была расширена до загрузки dataTable.Предварительно Развертывание определенной строки в формате datatable

<p:dataTable id="table" value="#{dataTable.cars}" var="car" expandedRow="true" 
     paginator="true" rows="5"> 
     <p:column style="width:2%"> 
      <p:rowToggler /> 
     </p:column> 
     <p:column id="model" headerText="Model"> 
      <h:outputText value="#{car.model}" /> 
     </p:column> 
     <p:column id="year" headerText="Year"> 
      <h:outputText value="#{car.year}" /> 
     </p:column> 
     <p:rowExpansion > 
      <h:outputText value="Manufacturer : " /> 
      <h:outputText value="#{car.manufacturer}" /> 
     </p:rowExpansion> 
    </p:dataTable> 

ответ

3

У PrimeFaces нет такой функции, но вы можете сделать это через javascript. Сначала исследуем сгенерированный html-код, и вы идете туда, есть элементы div, который имеет класс .ui-row-toggler. Этот элемент запускает расширение содержимого. Что вам нужно, чтобы найти этот элемент и запустить вручную.

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.ui-datatable-data').find('.ui-row-toggler').eq(3).trigger('click'); 
    }); 
</script> 

Поместите верхний код после определения вашего p:dataTable или просто включить JS код через отдельный JS файл. Обратите внимание: .ui-datatable-data ссылается на ваш контент p:dataTable.

+0

эк (3) .. это для 3-го row.I поместить свой код в разделе заголовка моей страницы, но он не работает. Я попробовал отладку через firebug. Код достигнут, но строка не расширяется. – user19999111

+0

Да, это относится к третьей строке. Вы должны сделать это для строк, которые хотите расширить. –

3

Вы можете использовать extendedRow с условием, в котором проверяется каждая строка отдельно.

Например:

expandedRow="#{car.expanded}" 
Смежные вопросы