Checkbox PrimeFaces:如何使用selectionMode=";多个“;?
我有一个Checkbox PrimeFaces:如何使用selectionMode=";多个“;?,checkbox,primefaces,datatable,Checkbox,Primefaces,Datatable,我有一个和一个。当我在数据表中显示一个单行时,我希望我的应用程序自动检查这一行(以及表头上显示的“checkAll”复选框) 我已经通过JavaScript实现了这一点,并且它在视觉上起到了作用。但是,在提交表单时,似乎没有提交“checked”值。如果我点击复选框两次(取消选中并再次选中),它就会工作 JSF: <p:dataTable var="invoiceGroup" selection="#{chargeBean.selectedInvoiceGroup
和一个
。当我在数据表中显示一个单行时,我希望我的应用程序自动检查这一行(以及表头上显示的“checkAll”复选框)
我已经通过JavaScript实现了这一点,并且它在视觉上起到了作用。但是,在提交表单时,似乎没有提交“checked”值。如果我点击复选框两次(取消选中并再次选中),它就会工作
JSF:
<p:dataTable var="invoiceGroup"
selection="#{chargeBean.selectedInvoiceGroupBeans}"
value="#{chargeBean.invoiceGroupList}"
rowKey="#{invoiceGroup.id}">
<p:column selectionMode="multiple" />
...
</p:dataTable>
function selectTableElements() {
var checkBoxes = $('#invoiceGroupTable td.ui-selection-column input[type="checkbox"]');
var paginatorPages = $('#invoiceGroupTable .ui-paginator .ui-paginator-pages .ui-paginator-page');
if (checkBoxes.length === 1 && paginatorPages.length === 1) {
setTimeout(function () {
$('#invoiceGroupTable th input[type="checkbox"]').click();
}, 10);
}
}
有没有一种在服务器端执行此操作的方法?首先,我更喜欢不带复选框的多选数据表
(只需按CTRL
键即可多选)
其次,我不知道为什么不(在服务器端)检查列表(invoiceGroupList
)是否只有一个成员/对象,并自动将其添加到第二个列表中,即selectedInvoiceGroupBeans
。如果您仍然希望这也是可视化的,那么可以保留已经完成工作的javascript/jquery函数。此外,您还可以查看Primefaces-RequestContext
组件:如果您想要更有趣的视觉设计,例如,在运行action方法之后选择甚至高亮显示该行,您可以从服务器端调用javascript函数
第三,为什么要使用setTimeout
javascript函数?如果您按下执行提交的commandButton
,然后单击调用javascript函数,该按钮将首先执行提交,然后选择复选框,这样您将无法获得预期的行为。1。这是我们产品视觉标识的一部分,我们必须有多个选择的复选框。2.到现在为止,我做了这个检查,并更改了javascript以禁用复选框(除了检查它),如果只有一个元素。3.这是因为它是在呈现表的同时调用的。如果我不设置setTimeout,Internet Explorer将不让表渲染,并将执行。单击“未渲染”元素上的。@otuka我很高兴现在一切正常!