我有一个dataTable,其中每一行代表一个拍卖项目,并在每个项目旁边有一个出价按钮。当用户单击按钮时,我需要显示一个带有输入文本的小竞价组件,以及一个提交投标的按钮。这个“竞价”组件需要恰好位于用户竞价的拍卖项目之下。
对于常规HTML,这很简单:只需在拍卖项目行下有条件地呈现另一行即可。我知道怎么做。
但是dataTable是基于列的,我需要动态呈现的不是列,而是行(其中colspan等于此dataTable中的列数)。
(我不确定这是否足够清楚,因此我将尝试换句话说:动态插入的行没有另一个拍卖项目。它还有几个其他的小部件。)
有没有办法做到这一点?
发布于 2012-01-08 23:22:12
我不认为只使用原始的JSF标记就能实现您想要的结果。事实上,您自己开发这样的复合组件可能非常困难。
幸运的是,如果你看一下PrimeFaces的,你会看到一个叫做ExpandableRows的特性。您的表应该如下所示:
<h:form>
<p:dataTable var="item" value="#{mrBean.itemsToBid}">
<f:facet name="header">
Items for Bidding
</f:facet>
<p:column style="width:16px">
<p:rowToggler />
</p:column>
<p:column headerText="Name" >
#{item.name}
</p:column>
<p:column headerText="Condition" >
#{item.condition}
</p:column>
<p:rowExpansion>
<h:panelGrid id="display" columns="2" >
<h:outputText value="Your bid:" />
<h:inputText value="#{mrBean.bidAmount}" />
<h:commandButton actionListener="#{mrBean.bid(item)}" value="Bid"/>
</h:panelGrid>
</p:rowExpansion>
</p:dataTable>
</h:form> 您的竞价表单位于<p:rowExpansion>组件中,它确实显示在您的项目行的正下方。
https://stackoverflow.com/questions/8777933
复制相似问题