伺服器端處理
Select 2.1 引入了對伺服器端處理的支援 - 這裡需要特別考慮,因為列的選擇是在客戶端進行的,但並非所有列都可以在客戶端上取得(只有目前顯示的列)。這對 API 有影響,因為 .rows({selected: true})
將只能取得目前顯示的列的相關資訊。
為了處理這個問題,Select 引入了 select.cumulative()
方法,可用於取得所有已選取列的 ID,無論分頁或篩選如何。請注意,資料來源必須每列都有一個唯一的 ID,您可能需要設定 rowId
選項來告訴 DataTables 它的名稱是什麼(預設情況下它會尋找 DT_RowId
)。
此外,selectAll
按鈕和核取方塊標頭(與核取方塊選擇一起使用時)將只會選取目前顯示的列。這是因為客戶端無法知道還有哪些其他列可以選取。
這個範例讓您可以在啟用伺服器端處理時試用 Select。
名字 | 姓氏 | 職位 | 辦公室 | 開始日期 | 薪資 |
---|---|---|---|---|---|
名字 | 姓氏 | 職位 | 辦公室 | 開始日期 | 薪資 |
- Javascript
- HTML
- CSS
- Ajax
- 伺服器端腳本
- 註解
下面顯示的 Javascript 用於初始化本範例中顯示的表格
$('#example').DataTable({ ajax: '../../../../examples/server_side/scripts/ids-objects.php', columns: [ { data: 'first_name' }, { data: 'last_name' }, { data: 'position' }, { data: 'office' }, { data: 'start_date' }, { data: 'salary' } ], layout: { topStart: { buttons: [ 'pageLength', { text: '檢視選取資訊', action: function (e, dt) { alert( '選取列的資訊:'+ JSON.stringify(dt.select.cumulative()) ); } } ] } }, processing: true, select: true, serverSide: true });
new DataTable('#example', { ajax: '../../../../examples/server_side/scripts/ids-objects.php', columns: [ { data: 'first_name' }, { data: 'last_name' }, { data: 'position' }, { data: 'office' }, { data: 'start_date' }, { data: 'salary' } ], layout: { topStart: { buttons: [ 'pageLength', { text: '檢視選取 ID', action: function (e, dt) { alert( '選取列的資訊:'+ JSON.stringify(dt.select.cumulative()) ); } }, 'selectAll', 'selectNone' ] } }, processing: true, select: true, serverSide: true });
除了上述程式碼外,還載入了以下 Javascript 程式庫檔案以供本範例中使用
下面顯示的 HTML 是原始的 HTML 表格元素,在被 DataTables 增強之前
這個範例使用了一些額外的 CSS,超出程式庫檔案(如下)載入的範圍,以便正確顯示表格。使用的額外 CSS 如下所示
以下 CSS 程式庫檔案會載入以供本範例中使用,以提供表格的樣式
此表格透過 Ajax 載入資料。下面顯示已載入的最新資料。當載入任何其他資料時,此資料將自動更新。
下面顯示用於執行此表格伺服器端處理的腳本。請注意,這只是一個使用 PHP 的範例腳本。伺服器端處理腳本可以使用任何語言編寫,使用 DataTables 文件中描述的協定。