【发布时间】:2011-08-05 00:10:36
【问题描述】:
jquery datatables 插件有没有办法隐藏(和显示)表格列?
我想出了如何重新加载表格数据:使用fnClearTable 和fnAddData。
但我的问题是,在我的表格视图之一(例如隐藏模式)中,我不想显示某些列。
【问题讨论】:
标签: javascript jquery datatables
jquery datatables 插件有没有办法隐藏(和显示)表格列?
我想出了如何重新加载表格数据:使用fnClearTable 和fnAddData。
但我的问题是,在我的表格视图之一(例如隐藏模式)中,我不想显示某些列。
【问题讨论】:
标签: javascript jquery datatables
之前的答案使用的是旧版 DataTables 语法。在 v 1.10+ 中,您可以使用column().visible():
var dt = $('#example').DataTable();
//hide the first column
dt.column(0).visible(false);
要隐藏多列,可以使用columns().visible():
var dt = $('#example').DataTable();
//hide the second and third columns
dt.columns([1,2]).visible(false);
要在表初始化时隐藏列,可以使用columns 选项:
$('#example').DataTable( {
'columns' : [
null,
//hide the second column
{'visible' : false },
null,
//hide the fourth column
{'visible' : false }
]
});
对于上述方法,您需要为应该保持可见且未指定其他列选项的列指定null。或者,您可以使用columnDefs 定位特定列:
$('#example').DataTable( {
'columnDefs' : [
//hide the second & fourth column
{ 'visible': false, 'targets': [1,3] }
]
});
【讨论】:
columns.visible 选项来完成。如果您希望您的回答彻底,我也会提到这一点。
columns,visible,请参阅datatables.net/reference/option/columns.visible
您可以通过此命令隐藏列:
fnSetColumnVis( 1, false );
第一个参数是列的索引,第二个参数是可见性。
通过:http://www.datatables.net/api - 函数 fnSetColumnVis
【讨论】:
如果有人再次进入这里,这对我有用...
"aoColumnDefs": [{ "bVisible": false, "aTargets": [0] }]
【讨论】:
您可以在数据表初始化期间定义它
"aoColumns": [{"bVisible": false},null,null,null]
【讨论】:
"bVisible": false,而表中的所有其他列未传递任何参数。这是因为当您使用"aoColumns": [ ... ] 时,您必须发送表中所有列的逗号分隔列表。如果您改用"aoColumnDefs": [ ... ](请参阅@ahaliav_fox 的答案),您只需声明一个列索引数组即可应用该属性。因此,无论是否获得属性,您都不需要声明每一列的状态。
对于使用服务器端处理并使用隐藏列将数据库值传递到 jQuery 的任何人,我建议使用“sClass”参数。您将能够使用 css display: none 隐藏列,同时仍然能够检索其值。
css:
th.dpass, td.dpass {display: none;}
在数据表初始化中:
"aoColumnDefs": [ { "sClass": "dpass", "aTargets": [ 0 ] } ] // first column in visible columns array gets class "dpass"
//编辑:记得将你的隐藏类也添加到你的 thead 单元格中
【讨论】:
有了你可以使用的api
var table = $('#example').DataTable();
table.column( 0 ).visible( false );
看看这个信息:
【讨论】:
如果使用来自 json 的数据并使用 Datatable v 1.10.19,您可以这样做:
$(document).ready(function() {
$('#example').dataTable( {
columns= [
{
"data": "name_data",
"visible": false
}
]
});
});
【讨论】:
var example = $('#exampleTable').DataTable({
"columnDefs": [
{
"targets": [0],
"visible": false,
"searchable": false
}
]
});
Target 属性定义列的位置。Visible 属性负责该列的可见性。Searchable 属性负责搜索工具。如果它设置为 false,则该列无法进行搜索。
【讨论】:
您可以尝试如下动态隐藏/显示运行时
隐藏:
fnSetColumnVis(1,假,假);
示例: oTable.fnSetColumnVis(item, false,false);
显示:
fnSetColumnVis(1,真,假);
示例: oTable.fnSetColumnVis(item, false,false);
这里,oTable是Datatable的对象。
【讨论】:
注意:接受的解决方案现在已经过时并且是遗留代码的一部分。 http://legacy.datatables.net/ref 这些解决方案可能不适合那些使用较新版本的 DataTables(现在是它的旧版本)的人 对于较新的解决方案: 你可以使用: https://datatables.net/reference/api/columns().visible()
您可以实现一个按钮的替代方案:https://datatables.net/extensions/buttons/built-in 查看提供的链接下的最后一个选项,该选项允许有一个可以切换列可见性的按钮。
【讨论】:
希望这会对您有所帮助。 我正在使用此解决方案在某些列上进行搜索,但我不想在前端显示它们。
$(document).ready(function() {
$('#example').dataTable({
"scrollY": "500px",
"scrollCollapse": true,
"scrollX": false,
"bPaginate": false,
"columnDefs": [
{
"width": "30px",
"targets": 0,
},
{
"width": "100px",
"targets": 1,
},
{
"width": "100px",
"targets": 2,
},
{
"width": "76px",
"targets": 5,
},
{
"width": "80px",
"targets": 6,
},
{
"targets": [ 7 ],
"visible": false,
"searchable": true
},
{
"targets": [ 8 ],
"visible": false,
"searchable": true
},
{
"targets": [ 9 ],
"visible": false,
"searchable": true
},
]
});
});
【讨论】:
$(document).ready(function() {
$('#example').DataTable( {
"columnDefs": [
{
"targets": [ 2 ],
"visible": false,
"searchable": false
},
{
"targets": [ 3 ],
"visible": false
}
]
});});
【讨论】:
看看我的解决方案
我有这个 HTML table Head
<thead>
<tr>
<th style="width: 20%">@L("Id")</th>
<th style="width: 20%">@L("IdentityNumber")</th>
<th style="width: 20%">@L("Name")</th>
<th style="width: 20%">@L("MobileNumber")</th>
<th style="width: 20%">@L("RegistrationStatus")</th>
<th style="width: 20%">@L("RegistrationStatusId")</th>
<th style="width: 20%; text-align: center;" data-hide="phone">@L("Actions")</th>
</tr>
</thead>
而我的Ajax request 则返回了类似的内容
所以我想隐藏 ID 索引 [0] 和 RegistrationStatusId 索引 [5]
$(document).ready(function() {
$('#example').dataTable( {
"columnDefs": [
{ "aTargets": [0, 5], "sClass": "invisible"},// here is the tricky part
]
});
});
希望对你有帮助
【讨论】: