2012-05-22 70 views
0

我有一個帶複選框和分頁的JSF表。我有以下問題:我想選擇所有表中的所有行並刪除它們。簡單的方法是創建一個Java HashMap並存儲這些密鑰。然後,Java方法將使用密鑰將它們刪除到散列映射中,但如果散列映射超過100萬,會發生什麼情況?也許內存泄漏? 也許解決方案是使用這個簡單的JavaScript來選擇所有複選框:如何選擇JSF表中的所有行並刪除它們?

//Select all checkbox 
function selectall(){  
    $('button').click(function() { 
     $("[type=checkbox]").prop("checked", true); 
    })​  
} 

//Unselect all checkbox 
function selectall(){  
    $('button').click(function() { 
     $("[type=checkbox]").prop("checked", false); 
    })​  
} 

有跡象表明,我面臨兩個問題:1。 如果我使用JavaScript來選擇所有的複選框可能僅在第一頁上的複選框將被選中,如果我打開第二頁,則不會選中複選框。 JavaScript僅適用於一頁。 2.當我點擊刪除按鈕時,如果我選中所有帶有JavaScript的複選框,Java方法會如何知道每個複選框都被選中到表中並刪除行? 我如何解決這些問題?

回答

2

如果我使用JavaScript來選擇所有複選框也許只有在第一頁上的 複選框將被選中,如果我切換 第二頁不會被選中複選框上。

這是真的,因爲數據表(甚至是整個頁面)都會被重新渲染,並且會失去它們的檢查狀態。

我該如何解決這些問題?

專注於您試圖實現的目標。實際上,您不希望選中分頁的數據表中的所有一百萬個條目,但希望刪除支持數據表的整個列表或集合。

爲什麼不加入一個按鈕「全部刪除」,簡單地清空了列表中?那麼你根本不需要關心選擇框。第一個問題的

+0

也許可能的解決方案:我可以創造一個讓叫它主框,當它的選擇是選擇所有的複選框表的頂端。這樣JavaScript會知道何時加載頁面,所有的複選框也必須被選中。但是,當我在頁面之間切換時,主複選框將不會記住被檢查。也許如果我使用第二個散列表,只有在選擇了mainbox的情況下才會存儲散列表?也許它會起作用。如果選中主複選框,則Java方法很容易知道它必須刪除所有行。但也許有更簡單的方法? –

相關問題