2010-06-29 80 views
1

我有三個下拉列表<h:selectOneMenu>和一個<p:dataTable>。我希望三個下拉列表與dataTable並排放置。就像我現在所做的那樣,三個下拉列表位於dataTable的上方。我嘗試創建更大的表格並將三個下拉列表放在一列中,並將<h:dataTable>放在另一列中以獲得並排佈局,但不起作用。以下是我走到這一步,表格佈局問題

 <h:selectOneMenu id="customer" value="#{DMBackingBean.customer}"> 
      <f:selectItem itemLabel="Select Customer" itemValue="" /> 
      <f:selectItems value="#{DMBackingBean.customers}"/> 
      <p:ajax actionListener="#{DMBackingBean.handCustomerChange}" update="facility" event="change"/> 
     </h:selectOneMenu> 
     <br/><br/> 
     <h:selectOneMenu id="facility" value="#{DMBackingBean.facility}"> 
      <f:selectItem itemLabel="Select Facility" itemValue=""/> 
      <f:selectItems value="#{DMBackingBean.facilities}"/> 
     </h:selectOneMenu> 
     <br/><br/> 
     <h:selectOneMenu id="project" value="#{DMBackingBean.project}"> 
      <f:selectItem itemLabel="Select Projet" itemValue=""/> 
      <f:selectItems value="#{DMBackingBean.projects}"/> 
     </h:selectOneMenu> 
     <p:dataTable var="item" value="#{DMBackingBean.drawings}" selection="#{DMBackingBean.selectedDrawing}" selectionMode="single"> 
      <p:column> 
       <f:facet name="header"> 
        <h:outputText value="DrawingType"/> 
       </f:facet> 
       <h:outputText value="#{item.drawingType}"/> 
      </p:column> 
      ... 
     </p:dataTable> 

回答

2

兩種方式:

  1. 創建一個h:panelGrid,把下拉菜單中的一個h:panelGrouph:panelGrid呈現HTML <table>元素,其中每個孩子都在其自己的<td>元素中。

    <h:panelGrid columns="2"> 
        <h:panelGroup> 
         <h:selectOneMenu>...</h:selectOneMenu> 
         <h:selectOneMenu>...</h:selectOneMenu> 
         <h:selectOneMenu>...</h:selectOneMenu> 
        </h:panelGroup> 
        <h:dataTable>...</h:dataTable> 
    </h:panelGrid> 
    
  2. 裹在<h:panelGroup layout="block">的下拉菜單,它將呈現一個HTML元素<div>。然後在<h:panelGroup><h:dataTable>上應用CSS float:left;

    <h:panelGroup layout="block" styleClass="left"> 
        <h:selectOneMenu>...</h:selectOneMenu> 
        <h:selectOneMenu>...</h:selectOneMenu> 
        <h:selectOneMenu>...</h:selectOneMenu> 
    </h:panelGroup> 
    <h:dataTable styleClass="left">...</h:dataTable> 
    

    .left { float: left; } 
    
+0

我用你的第一種方法。它的工作原理。但是,當它爲生成第二個​​元素時,在​​單元格內對齊中心,使其看起來很有趣。有沒有一種方法可以使​​對齊top ?,我嘗試使用'',但它不起作用 – 2010-07-01 22:53:06

+0

檢查生成的HTML輸出。它將樣式應用於'table'而不是'td'。給它一個類名並使用'.classname td {vertical-align:top; ''在CSS中。 – BalusC 2010-07-02 01:01:16