捕获p:dataTable的单个单元格

时间:2018-09-12 07:50:54

标签: jsf primefaces

有没有一种方法可以根据用户单击来捕获JSF数据表中单个单元格的值?

因此,我有一个表格,如下图所示,我想通过组合用户选择的每一列中的不同单元格来创建一个字符串。用户可以从每一列中单击一个或多个单元格,单元格中的值将在文本区域中更新(附加)。

How the datatable looks like

下面是我要在文本框中捕获的输出。

desired outocme

JSF是实现这一目标的最好,最有效的方法。不必一定是数据表,但我希望您知道我想在这里实现的目标。

1 个答案:

答案 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