2016-12-28 84 views
0

我正在使用primeScroll v5.3 dataTable,其中liveScroll =「true」和selectionMode =「multiple」。 標題複選框只選擇可見行,當我向下滾動新行出現未選中。 我想要標題複選框來選擇所有行:可見和不可見。 只選擇可見行是沒有意義的,也是無用的。 可以修復嗎?如何使用liveScroll在primefaces數據表中選擇所有數據表

我試着通過處理「toggleSelect,rowSelectCheckbox和rowUnselectCheckbox」事件來添加所有表格數據。它在後端工作,但在UI行中無論如何都是未選中的。

+0

_」只有可見行的選擇是沒有意義的,是無用的。是否可以修復?「_也許可以用於你的用例。我在過去的5年裏從未聽過這個要求。這是一個危險的要求。最終用戶可能不會期望這(我不會),並行動到許多行。由於這是一個不常見的要求,我懷疑這是一個簡單的解決方法。下載組件的源代碼,檢查一下,看看能否「修復」一些東西,這是我能想到的唯一的東西。 – Kukeltje

回答

0

使用這個腳本來代替primefaces

PrimeFaces.widget.DataTable.prototype.updateData = (function() { 

    var cached_function = PrimeFaces.widget.DataTable.prototype.updateData; 
    return function() { 
     var reselectAll = (this.selection != undefined && (this.selection[0] === '@all' || this.selection.length === this.getTbody()[0].getElementsByTagName('tr').length); 
     var result = cached_function.apply(this, arguments); 
     if (reselectAll) { 
      this.selectAllRows(); 
     } 
     return result; 
    }; 
})(); 

原了updateData功能,它會自動選擇上表中的新裝載的行(只有那些是在客戶端可見)

+0

我把這個腳本放在xhtml中,並加上dataTable。但是變量表是未定義的,並且this.selection沒有@all值,只有數字801,802,... 819,... – Alexandr83

+0

已修復。此外,如果使用表的selectAllRows()方法選擇所有行,選擇將具有值'@all'。 –

+0

現在它的工作部分。但我不明白條件「|| this.selection.length === this.getTbody()[0] .getElementsByTagName('tr')。length」。至於我,這是不必要的或可能是「|| ... ===」應該被替換爲「&& ...!=」?我不明白我應該如何調用'selectAllRows();'第一次把'@all'toselection .. – Alexandr83