c:forEach status.index 行索引的使用[轉載!]

來源:互聯網
上載者:User

使用seam做了個項目,展示一個自訂欄表輸出,分別定義表格標題List headerList和資料List<List> dataList,然後實現兩種展示方式。一種是普通表格方式,一條資料在一行顯示,這樣我們可以使用rich:dataTable ,然後自訂迭代部分可以用rich:columns 來實現,注意index是表示每行資料的行索引,代碼如下:

 

 

Xhtml代碼 {
dp.sh.Toolbar.CopyToClipboard(this);return false;
}" href="http://writeblog.csdn.net/#">
  1. <rich:dataTable value="#{orderResDetailHome.dataList}" var="list" rows="10" style="width:100%;" rowKeyVar="rowNum">          
  2.     <rich:column>  
  3.         <f:facet name="header">序號</f:facet>  
  4.         #{rowNum+1}   
  5.     </rich:column>  
  6.                        
  7.     <rich:columns value="#{orderResDetailHome.headerList}" var="dataHeader" index="idx">    
  8.         <f:facet name="header">#{dataHeader}</f:facet>  
  9.         #{list[idx+2]}   
  10.     </rich:columns>  
  11. </rich:dataTable>  
<rich:dataTable value="#{orderResDetailHome.dataList}" var="list" rows="10" style="width:100%;" rowKeyVar="rowNum">       <rich:column><f:facet name="header">序號</f:facet>#{rowNum+1}</rich:column><rich:columns value="#{orderResDetailHome.headerList}" var="dataHeader" index="idx"> <f:facet name="header">#{dataHeader}</f:facet>#{list[idx+2]}</rich:columns></rich:dataTable>

 

 

 其中#{list[idx+2]}中加2是因為資料列開始兩列資料多輸出用作其他。

 

還有一種展示方式,沒條資料不是在一行顯示,而是把每條資料放到一個grid中去,然後依次顯示,但是這樣的話迭代部分的資料就無法使用rich:columns 來實現了,可以考慮使用c:forEach,其中可以定義varStatus="status",

取#{status.index}就可以獲得每行資料的行索引,這樣就方便實現了,代碼如下:

 

 

Xhtml代碼 {
dp.sh.Toolbar.CopyToClipboard(this);return false;
}" href="http://writeblog.csdn.net/#">
  1. <rich:dataGrid var="list"  
  2.             columns="1"    
  3.             elements="10"  
  4.             rowKeyVar="rowNum"  
  5.           value="#{orderResDetailHome.dataList}">  
  6.           
  7. <h:panelGrid columns="1">  
  8.   
  9.     <s:decorate template="/layout/display.xhtml">  
  10.         <ui:define name="label">序號</ui:define>  
  11.         #{rowNum+1}   
  12.     </s:decorate>  
  13.        
  14.     <c:forEach var='dataHeader' items='#{orderResDetailHome.headerList}' varStatus="status">  
  15.       <s:decorate template="/layout/display.xhtml">  
  16.           <ui:define name="label">#{dataHeader}</ui:define>  
  17.           #{list[status.index+2]}   
  18.       </s:decorate>  
  19. </c:forEach>  
  20.   
  21. </h:panelGrid>  
  22. </rich:dataGrid>  
<rich:dataGrid var="list"            columns="1"             elements="10"            rowKeyVar="rowNum"          value="#{orderResDetailHome.dataList}">       <h:panelGrid columns="1">    <s:decorate template="/layout/display.xhtml">        <ui:define name="label">序號</ui:define>        #{rowNum+1}    </s:decorate>    <c:forEach var='dataHeader' items='#{orderResDetailHome.headerList}' varStatus="status">      <s:decorate template="/layout/display.xhtml">          <ui:define name="label">#{dataHeader}</ui:define>          #{list[status.index+2]}      </s:decorate></c:forEach></h:panelGrid></rich:dataGrid>

 後者適合在小螢幕裝置上展示。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.