0

在此处输入图像描述

我有学生记录,我需要按照此图像所示显示。

我正在使用 Jsf 2.0 和 primefaces 3.0 ,我正在尝试使用但仍然无法获得正确的格式。

我的问题是,有一个名称为 Exam 的列,例如 FE、SE、TE,它位于单列下,并且由于只有 3 个考试而固定。图像中前 3 列的平均值需要行跨度 3,因为每条记录都会有FE-Math、SE-Math 和 TE-Maths 等等所有 s3 科目的分数 那么我们如何才能使这种结构成为可能,例如“for 1 record 3 rowspan”?

如图所示,我们如何实现这种结构?

<p:dataTable var="s" value="#{tableBean.studentSummary}">  
    <p:column headerText="ID">  
        <h:outputText value="#{s.ID}" />  
    </p:column>  

    <p:column headerText="Name">  
        <h:outputText value="#{s.name}" />  
    </p:column>  

    <p:column headerText="Passing Date">  
        <h:outputText value="#{s.passDate}" />  
    </p:column>  

    <p:column headerText="Exam">  
        <h:outputText value="#{s.exam}" />  
    </p:column>  

    <p:column headerText="Maths">  
        <h:outputText value="#{s.math}" />  
    </p:column>  

    <p:column headerText="Physiscs">  
        <h:outputText value="#{s.phy}" />  
    </p:column>  

    <p:column headerText="Chemistry">  
        <h:outputText value="#{s.chem}" />  
    </p:column>

</p:dataTable>
4

1 回答 1

0

试试这个。首先将 rowIndexVar 添加到您的 p:dataTable 标记,然后有条件地呈现输出。所以你的代码看起来像这样:

<p:dataTable rowIndexVar="currRow" value=#{myBean.student} val="s">
  <p:column headerText="Name">  
      <h:outputText value="#{s.name}" rendered="#{currRow lt 1}"/>  
  </p:column>  

  <p:column headerText="Passing Date">  
      <h:outputText value="#{s.passDate}" rendered="#{currRow lt 1}"/>  
  </p:column>  

  <p:column headerText="Exam">  
      <h:outputText value="#{s.exam}" />  
  </p:column> 

  <p:column headerText="Maths">  
      <h:outputText value="#{s.math}" />  
  </p:column>  

  <p:column headerText="Physiscs">  
      <h:outputText value="#{s.phy}" />  
  </p:column>  

  <p:column headerText="Chemistry">  
      <h:outputText value="#{s.chem}" />  
  </p:column> 
</p:dataTable> 

更新:好的,刚刚意识到这种方法的错误,但会离开,因为 rowIndexVar 可能对某人有用。而是修改呈现的属性以查看考试字段(不肯定语法正确):

<h:outputText value="#{s.name}" rendered="#{s.exam eq 'fe'}"/>
于 2012-10-15T20:41:49.123 回答