{hero}

columnDefs

自:DataTables 1.10 起

設定欄位定義的初始化屬性。

說明

columns 非常相似,此參數可讓您為表格中的欄位指定特定選項,但在此情況下,定義的欄位選項可以應用於一個或多個欄位。此外,與 columns 不同,並非每個欄位都必須指定。

此參數是一個欄位定義物件的陣列,其中可用的選項與 columns 的選項完全相同(請參閱下方相關連結中的選項列表)。

除了欄位屬性選項之外,columnDefs 還需要在每個定義物件中設定 targets 屬性 (columnDefs.targets)。此 targets 屬性會告知 DataTables 應將定義應用於哪些欄位。它可以是:

  • 0 或正整數 - 從左側開始計數的欄位索引
  • 負整數 - 從右側開始計數的欄位索引
  • CSS 選擇器 - 將使用符合選擇器的欄位(自 2.0 版本起)
  • 字串 _all - 所有欄位(即指定預設值)
  • 只包含字母、數字、底線和破折號的字串 (/^[a-z][\w-]*$/i 作為正規表示式) - 類別名稱符合。請注意,提供此選項是為了與 DataTables 1.x 版本的回溯相容性。這表示您不能只使用元素名稱作為選擇器,但無論如何,在標頭中,該選擇器都將僅限於 thtd

此外,targets 可以是以上清單中的單一選項,也可以是選項陣列(如果需要,不同類型可以在陣列中混合使用)。例如,targets: [ -1, -2 ] 將會以表格中的最後一個欄位和倒數第二個欄位為目標。

衝突解決

由於 columnDefs 允許在不同的欄位定義物件中定義一個或多個欄位(通常是為了定義欄位的不同方面),因此可能會發生衝突,其中單一屬性可能會針對同一個欄位定義不同的值。同樣地,當同時使用 columns 時,也可能會發生這種情況。DataTables 使用下列規則來解決此類衝突

  1. columns 中定義的屬性將永遠優先於在 columnDefs 中定義的該屬性的任何值。
  2. columnDefs 陣列中較高的屬性會優先於較低的屬性。

例如,請考慮下列表格

var table = $('#myTable').DataTable( {
    columnDefs: [
        { targets: [0, 1], visible: true},
        { targets: '_all', visible: false }
    ]
} );

第一個和第二個欄位將會顯示在表格中,而所有其他欄位將會隱藏。

類型

此選項可以採用下列類型

範例

停用第一個欄位的篩選

new DataTable('#myTable', {
	columnDefs: [
		{
			targets: 0,
			searchable: false
		}
	]
});

相關

下列選項直接相關,在您的應用程式開發中也可能很有用。