【问题标题】:Create dropdown menu in h:dataTable for one specific row在 h:dataTable 中为特定行创建下拉菜单
【发布时间】:2016-11-15 17:01:54
【问题描述】:

我有一个表单,其中包含一些接受用户输入的字段。然后根据用户在初始表单中选择的选项/字段,使用该输入生成一个数据表,该数据表通过 Hibernate 使用来自数据库的信息填充。

我需要以某种方式为正在单击的特定记录生成一个下拉菜单,然后以特定文件格式下载该记录(我已经有一种类似的方法,由其他人制作)。

这是我的数据表的样子:

<h:form id="form2">
<t:dataTable binding="#{table}" rendered="#{searchArhivaUIBean.renderTable}" value="#{searchArhivaUIBean.nonEdiAbstractList}"
 var="dataItem" border="0" cellspacing="2" width="100%" id="tdtbl"
  headerClass="tableHeader" rowClasses="rowOdd,rowEven" columnClasses="Column">
<t:column>
    <!-- display currently selected row number -->
    <f:facet name="header">
        <t:outputText value="Nr"/>
    </f:facet>
    <t:outputText value="#{table.rowIndex + 1}"/>
</t:column>
<t:column>
  <f:facet name="header">
   <t:outputText value="Data Mesaj"/>
  </f:facet>
  <t:outputText value="#{dataItem.dataMesaj}">
    <f:convertDateTime timeZone="#{tzUIBean.tz}" pattern="dd.MM.yyyy" />
  </t:outputText>
 </t:column>
 <t:column>
  <f:facet name="header">
   <t:outputText value="Numar Mesaj"/>
  </f:facet>
  <t:outputText value="#{dataItem.numarMesaj}"/>
 </t:column>
 <t:column>
  <f:facet name="header">
   <t:outputText value="Societate Sender"/>
  </f:facet>
  <t:outputText value="#{dataItem.societateSender}"/>
 </t:column>
 <t:column>
  <f:facet name="header">
   <t:outputText value="Societate Receiver"/>
  </f:facet>
  <t:outputText value="#{dataItem.societateReceiver}"/>
 </t:column>
</t:dataTable>
</h:form>

这将生成一个数据表,其中填充了项目。当我单击消息(“Nr”列(dataTable 中的第一列))或“Numar Mesaj”列时,有关如何制作下拉列表的任何想法?我需要下拉列表出现在 dataTable 中特定行的下方,因此我可以从该下拉列表中选择文件格式并将该特定记录下载为 .pdf、.xls 或其他任何类型的文件。

至少,我认为它是这样工作的。任何想法都表示赞赏。

【问题讨论】:

  • 我想要的还有一个替代方案,而且应该更简单:dataTable没有覆盖整个屏幕,我在屏幕右侧有很多空白空间。当我单击其中一条记录时,如何在屏幕右侧显示一个新的下拉列表?如何在 HTML 页面中定位 JSF 事物?让我研究一下。

标签: jsf datatable selectonemenu


【解决方案1】:

嗯,使用适当的 JSF 框架(例如 Prime Faces)会容易得多。他们有专门的组件来处理这类东西。

使用默认的 JSF,它将是一大块工作。我可以想象这样的事情: 首先,您需要使用例如 h:commandLink 使您的列之一可点击。此(单击)操作可能会更改特殊标志,这些标志将用于显示带有格式的额外行。 下一步是为隐藏第二行的每个数据行制作额外的行(通过上述标志)。单击列中的链接将显示带有格式的额外行。 似乎唯一的困难是只显示 1 行,而不是全部,因此事件和标志需要非常巧妙。您必须跟踪当前行选择并在显示额外行时使用它。

【讨论】:

  • 切换到 Prime Faces 并使用其数据表。它已经具有我上面描述的功能。看看这个:primefaces.org/showcase/ui/data/datatable/expansion.xhtml
  • 我不能“切换到 PrimeFaces”,因为我的公司使用 JSF。所以我必须在JSF中做。另外,我不知道PF。在 JSF 中必须有办法做到这一点。
  • Prime Faces 是 JSF 的另一种风格。实际上是相同的技术
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多