Primefaces数据表格行选择和多选框选择不起作用。

20

我正在使用primeface 3.5,在其中我发现单独使用复选框选择和取消选择或行选择都能够完美地工作。但是当我尝试同时使用行选择和复选框选择时,行选择事件无法触发。是否有人可以为我澄清这个问题?

虽然检查所有事件正常工作,但行选择不起作用。

<p:dataTable id="myBookDTable" var="car" value="#{myBean.pageViews}" paginatorPosition="bottom" paginator="true" rows="30" scrollable="true" scrollHeight="400" scrollRows="30" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" rowsPerPageTemplate="30,50,100"rowKey="#{car.carID}" rowIndexVar="rowIndex" draggableColumns="true" lazy="true">

<p:ajax event="rowSelect" listener="#{myBean.onRowSelect}" update="certainpart"
                                async="true"/>
<p:ajax event="rowSelectCheckbox" listener="#{myBean.rowSelectCheckbox}"/>
<p:ajax event="rowUnselectCheckbox" listener="#{myBean.rowUnselectCheckbox}"/>

<p:ajax event="rowUnselect" listener="#{myBean.rowUnselect}"/>

<p:column  width="30" selectionMode="multiple" style="width:2%" />

</p:datatable>

你遇到了什么问题? - Prasad Kharkar
请发布您的代码和您所遇到的确切问题 - Prasad Kharkar
你确定问题只在同时使用它们时出现吗? - No Idea For Name
@LiranElisha:是的,我只有在同时使用两个时才遇到了这个问题。 - Jerry
3个回答

24

对于列标题事件,我们在PrimeFaces/JSF中有一个不同的标题名称:"toggleSelect"。您可以这样使用:

<p:ajax event="toggleSelect" update="@this" process="@this" />

1
<p:ajax event="toggleSelect" update="@this" process="@this" /> - Suresh Kumar Pathak
3
好的,但是我怎么知道我刚刚是选择了“selectAll”还是“unselectAll”呢? - LStrike

22
在你的datatable标签中,使用这个。
   <p:ajax event="rowSelectCheckbox" update="someComponent" />
  <p:ajax event="rowUnselectCheckbox" update="someComponent" />
  <p:ajax event="rowSelect" update="someComponent" />
  <p:ajax event="rowUnselect" update="someCompoent" />
  <p:column selectionMode="multiple" style="width:4%" />

您需要触发这四个ajax事件,并确保将列selectionMode设置为multiple


1
当您选择单个行时,它可以工作 - 但是当您选择列标题复选框时不起作用! - Stu Whyte

4

试试这个:

<p:ajax event="toggleSelect" update=":form:component" partialSubmit="true" />

来源:

PrimeFaces 4.0 用户指南 - Ajax行为事件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接