Primefaces — как отобразить сетку данных и выбрать встроенное меню

#java #jsf-2 #primefaces

#java #jsf-2 #primefaces

Вопрос:

Это может показаться глупым вопросом, но я перепробовал все: с атрибутом стиля (display: inline), с атрибутом styleClass, но ничего. Я хочу, чтобы этот код отображался в той же строке / строке:

 <p:panel rendered="#{not empty enastrSearch.recordsList}">
                <p:dataTable id="tableData" var="record" value="#{enastrSearch.recordsList}" style="border: 0px" >
                    <p:column>
                        <p:dataGrid var="column" value="#{record.renderColumnList}" columns="4" style="display: inline">
                            <p:column>
                                #{column.columnValue}
                            </p:column>
                        </p:dataGrid>
                        <h:selectOneMenu value="#{options.selectedBank}" style="display: inline" >
                            <f:selectItems value="#{banks.currentBanks}"  />
                        </h:selectOneMenu>
                    </p:column>
                </p:dataTable>
            </p:panel>
  

Спасибо!

Ответ №1:

Либо добавьте следующее в свой CSS:

 #tableData .ui-datagrid { 
    float: left;
}
  

Или, если это не приведет к достижению желаемого макета (элементы будут сворачиваться вместе без пробелов, вам нужно будет самостоятельно манипулировать пробелами внутри содержимого столбца datagrid), а затем поместить их в a <h:panelGrid columns="2"> вместо:

 <h:panelGrid columns="2">
    <p:dataGrid ... />
    <h:selectOneMenu ... />
</h:panelGrid>
  

Комментарии:

1. Как я мог бы поместить строку заголовка с именем каждого столбца? Если я помещу его в DataGrid, имя столбца будет отображаться для каждой строки, а я этого не хочу; если я помещу его над таблицей данных, имена не будут отформатированы так, как отображаются значения столбцов.