我有ajax功能来添加名称并以表格方式在同一页面上显示一个图像(文本左侧)和一个“X”图像(右侧删除)。它应该从左到右添加,在完成一行后,它应该从下一行开始。
所以我需要在p:datagrid或任何其他可以使用相同功能的标签中显示字符串的arraylist。
我尝试使用ui:repeat和p:panelgrid的组合,但我无法获得datagrid funtionallty。我没有使用p:dataTable,因为它会在我需要的底部添加新元素。
P.S。
<h:form>
<h:selectOneMenu id="recepients" value="#{controller.selected}">
<f:selectItem itemLabel="Select" itemValue=""></f:selectItem>
<f:selectItem itemLabel="Info1" itemValue="Info1"></f:selectItem>
<f:selectItem itemLabel="Info2" itemValue="Info2"></f:selectItem>
<f:selectItem itemLabel="Info3" itemValue="Info3"></f:selectItem>
<f:selectItem itemLabel="Info4" itemValue="Info4"></f:selectItem>
<f:selectItem itemLabel="Info5" itemValue="Info5"></f:selectItem>
</h:selectOneMenu>
<p:commandButton value="Add" action="#{controller.submit}"
update="nameslist" />
<p:dataGrid id="nameslist" value="#{controller.tempNameList}"
var="name" columns="3">
<p:column>
<p:outputLabel value="%" />
</p:column>
<p:column>
<p:outputLabel value="#{name}" />
</p:column>
<p:column>
<p:commandLink value="X" action="#{controller.delete(name)}"
update="nameslist">
</p:commandLink>
</p:column>
</p:dataGrid>
</h:form>
结果应该是这样......
%Abc X. %Xyz X. %dfd X
plz将%视为图像,将X视为近符号
答案 0 :(得分:2)
<p:dataGrid>
不支持<p:column>
。此列布局仅适用于<p:dataTable>
。
将所有<p:column>
替换为单个分组组件,例如<h:panelGroup>
或<p:panel>
{完全如showcase site所示。
<p:dataGrid id="nameslist" value="#{controller.tempNameList}" var="name" columns="3">
<h:panelGroup>
<p:outputLabel value="%" />
<p:outputLabel value="#{name}" />
<p:commandLink value="X" action="#{controller.delete(name)}" update="nameslist" />
</h:panelGroup>
</p:dataGrid>