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 版本的回溯相容性。這表示您不能只使用元素名稱作為選擇器,但無論如何,在標頭中,該選擇器都將僅限於th
和td
。
此外,targets
可以是以上清單中的單一選項,也可以是選項陣列(如果需要,不同類型可以在陣列中混合使用)。例如,targets: [ -1, -2 ]
將會以表格中的最後一個欄位和倒數第二個欄位為目標。
衝突解決
由於 columnDefs
允許在不同的欄位定義物件中定義一個或多個欄位(通常是為了定義欄位的不同方面),因此可能會發生衝突,其中單一屬性可能會針對同一個欄位定義不同的值。同樣地,當同時使用 columns
時,也可能會發生這種情況。DataTables 使用下列規則來解決此類衝突
- 在
columns
中定義的屬性將永遠優先於在columnDefs
中定義的該屬性的任何值。 - 在
columnDefs
陣列中較高的屬性會優先於較低的屬性。
例如,請考慮下列表格
var table = $('#myTable').DataTable( {
columnDefs: [
{ targets: [0, 1], visible: true},
{ targets: '_all', visible: false }
]
} );
第一個和第二個欄位將會顯示在表格中,而所有其他欄位將會隱藏。
類型
此選項可以採用下列類型
範例
停用第一個欄位的篩選
new DataTable('#myTable', {
columnDefs: [
{
targets: 0,
searchable: false
}
]
});
相關
下列選項直接相關,在您的應用程式開發中也可能很有用。