有没有一种方法可以根据用户单击来捕获JSF数据表中单个单元格的值?
因此,我有一个表格,如下图所示,我想通过组合用户选择的每一列中的不同单元格来创建一个字符串。用户可以从每一列中单击一个或多个单元格,单元格中的值将在文本区域中更新(附加)。
下面是我要在文本框中捕获的输出。
JSF是实现这一目标的最好,最有效的方法。不必一定是数据表,但我希望您知道我想在这里实现的目标。
答案 0 :(得分:0)
我试图使其与数据表一起使用,因为它可以获得单元格级别的值。 我使用editmode =“ cell”,以便可以访问单元格级别。 inputText已禁用,因为您不希望用户对其进行编辑。 xhtml:
<datatable value"#{yourBean.listValue" var="list" editMode="cell" editable="true"
----and other stuffs----->
<p:ajax event="cellEdit" listener="#{yourBean.selectedCell}"/>
<p:column headerText="A">
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{list.valueA}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{list.valueA}" disabled="true"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="B">
<p:cellEditor>
<f:facet name="output">
<p:outputLabel value="#{list.valueB}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{list.valueB}" disabled="true"/>
</f:facet>
</p:cellEditor>
</p:column>
----and so on---
</p:datatable>
YourBean:
String result, A, B;
public void selectedCell(CellEditEvent event) {
switch(event.getColumn().getHeaderText()) {
case "A": A= event.getOldValue().toString();
break;
case "B": B = event.getOldValue().toString();
break;
}
result = A + B;
}
如果需要按顺序排列结果,我会使用开关盒。有关数据表中单元格编辑的更多信息,请检查this link