2015-05-19 50 views
1

我有一個<liferay-ui:search-container>顯示我的結果。保留liferay-ui:分頁時搜索容器

我啓用了一個rowChecker,以便每個行都可以通過複選框進行選擇。

它被放置在一個形式;通過這種方式,用戶可以選擇更多的行,然後單擊我的「提交」按鈕,該操作就可以獲取所選行的ID。

但用戶無法選擇不同頁面中存在的兩行(例如,分頁delta = 5,他們需要元素1和6)。

我無法想出辦法解決這個問題。

您有任何以前的經驗嗎?

謝謝

+0

那麼,窗體只會傳遞可用的參數。當您移動到搜索容器的其他頁面時,會丟失以前的項目。一個解決方法可以在每個分頁上,您在請求或會話中維護選定的項目,並在提交時處理它們。 –

+0

問題是,使用taglib自動提供的按鈕(例如next,previous等),我無法獲得先前選定的值(因爲taglib不執行sumbit,而只是鏈接到另一個PortletAction) –

回答

1

我看到你的問題,有兩種解決方案:

  1. 添加onchange處理程序的複選框,併發送一個Ajax請求存儲在服務器上選定的項目:

    // 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 
        ... 
        }); 
    }); 
    
  2. 使用一個單獨的標籤爲「記住選擇」的按鈕來發布當前選擇。

您應該顯示一個文本,指出選擇了多少元素,並提供一個選項以再次取消選擇所有元素。

而且您必須在適當的時候重置所選元素的列表(例如,用於新搜索) - 這不是一項簡單的任務。許多應用程序不記住跨頁請求的行選擇的原因之一。