保留liferay ui:分页时搜索容器

保留liferay ui:分页时搜索容器,liferay,liferay-6.2,Liferay,Liferay 6.2,我有一个显示我的结果 我启用了一个行检查器,这样每一行都可以通过一个复选框进行选择 它被放置在一个表格中;通过这种方式,用户可以选择更多行,然后单击我的“提交”按钮,该操作就可以获得所选行的ID 但是用户无法选择不同页面中的两行(例如,分页增量=5,他们需要元素1和6) 我想不出解决这个问题的办法 你以前有过这方面的经验吗 谢谢我看到了两种解决您问题的方法: 将onchange处理程序添加到复选框中,并发送AJAX请求以在服务器上存储所选项目: 使用标有“记住选择”的单独按钮发布当前选择 您

我有一个
显示我的结果

我启用了一个
行检查器
,这样每一行都可以通过一个复选框进行选择

它被放置在一个表格中;通过这种方式,用户可以选择更多行,然后单击我的“提交”按钮,该操作就可以获得所选行的ID

但是用户无法选择不同页面中的两行(例如,分页增量=5,他们需要元素1和6)

我想不出解决这个问题的办法

你以前有过这方面的经验吗


谢谢

我看到了两种解决您问题的方法:

  • onchange
    处理程序添加到复选框中,并发送AJAX请求以在服务器上存储所选项目:

  • 使用标有“记住选择”的单独按钮发布当前选择
  • 您应该显示一个文本,指示选择了多少元素,并提供一个选项来再次取消选择所有元素


    在适当的时候,您必须重置所选元素的列表(例如,对于新的搜索)-这不是一项简单的任务。许多应用程序无法记住跨页面请求的行选择的原因之一。

    嗯,表单只会传递可用的参数。当您移动到搜索容器的其他页面时,您将丢失以前的项目。一种解决方法是在每次分页时,在请求或会话中维护所选项目,并在提交时对其进行处理。问题是,使用taglib自动提供的按钮(例如next、previous等),我无法获取以前选择的值(因为taglib不执行sumbit,而只是链接到另一个PortletAction)
    // Stub using AUI/YUI:
    AUI().use("node", function(A) {
      A.all("td.entry-selector input").on('change', function (e) {
        var checkbox = e.target;
        var selectionState = checkbox.get('checked');
        // Send the selection to the server - depends on the architecture of your portlet
        ...
      });
    });