Jsf <;p:commandButton>;不';当列=4行=1时,t在p:dataGrid内工作

Jsf <;p:commandButton>;不';当列=4行=1时,t在p:dataGrid内工作,jsf,primefaces,datagrid,commandbutton,Jsf,Primefaces,Datagrid,Commandbutton,我只想为p:dataGrid中列表中的每个项添加p:commandButton <p:dataGrid var="list" value="#{myBean.listCompany}" columns="4" layout="grid" rows="4" paginator="true" paginatorPosition="bottom" paginatorTemplate="{PreviousPageLink} {NextPageLink} " rowIndexVar=

我只想为p:dataGrid中列表中的每个项添加p:commandButton

<p:dataGrid var="list" value="#{myBean.listCompany}" columns="4"
    layout="grid" rows="4" paginator="true" paginatorPosition="bottom"
    paginatorTemplate="{PreviousPageLink} {NextPageLink} " rowIndexVar="rowIndex">

    <div class="card" style="height: 350px">
        <p:column>
            <p:panel>
                <h:panelGrid columns="1">
                    <p:commandButton value="Choose Row #{rowIndex}"
                        action="#{myBean.selectCompany(list.companyName)}">
                    </p:commandButton>
                </h:panelGrid>
            </p:panel>
        </p:column>
    </div>
</p:dataGrid>
但是,当我从属性p:dataGrid中设置columns=4和rows=1时。在列表的其余部分,我无法再从commandButton获取值(列表中的第一项除外)

尝试更改为h:commandButton,p:commandLink,ajax=false


基于此,

快速修复方法只是正确设置行数,以填充您拥有的列数。只要行数是列数的倍数(例如,2列,6行),就可以了


但是,这不是我想要的解决方案,我需要显示4列1行的p:dataGrid。

如果我正确理解您的意图,您希望在一行中显示
{myBean.listCompany}
中的4个元素,您应该设置
colums=“4”
rows=“4”

这样,
列数
的倍数,乘法器为
1

这里的行似乎是每页显示的
{myBean.listCompany}
中的元素总数。如果这与多列不匹配,则渲染和组件输入处理之间似乎存在某种不匹配

您可以添加一个
rowIndexVar=“rowIndex”
并将其与每个元素一起输出,以使数据网格中的一行可见

<p:dataGrid var="list" value="#{myBean.listCompany}" columns="4"
    layout="grid" rows="4" paginator="true" paginatorPosition="bottom"
    paginatorTemplate="{PreviousPageLink} {NextPageLink} " rowIndexVar="rowIndex">

    <div class="card" style="height: 350px">
        <p:column>
            <p:panel>
                <h:panelGrid columns="1">
                    <p:commandButton value="Choose Row #{rowIndex}"
                        action="#{myBean.selectCompany(list.companyName)}">
                    </p:commandButton>
                </h:panelGrid>
            </p:panel>
        </p:column>
    </div>
</p:dataGrid>

您不需要
h:panelGrid columns=“1”
并且可能需要和
p:panel