jQuery DataTables 默认列值
jQuery DataTables default column value
我正在尝试在 jQuery DataTable 中包含一个不可见的列,可以将其设置为默认值 true
来代替数据源中遇到的 null 或 undefined。
假设我正在使用 6 列数据表。前 5 列可见。第 6 列设置为不可见。并且它必须包含 true 或 false,无论数据源对象是否具有相应的键。在 DataTable 的列定义中,我试过了,但没有用。
{ "defaultContent": true, "data": "existing", "visible": false }
根据 API,我认为 defaultContent
仅在 data
为 null 时有效。也许这就是它不起作用的原因。我已经提供了HTML,JS数据和初始化DataTable的JS代码。请注意,加载并呈现 DataTable 后,我会动态追加一行并重新绘制。此行的数据包含第 6 列 属性 并且设置得很好。
HTML:
<div id="demo">
</div>
JavaScript(数据初始化):
var dataSet = [
{'engine':'Webkit','browser':'Safari 1.2','platform':'OSX.3','version':'125.5','grade':'A'},
{'engine':'Other browsers','browser':'All others','platform':'-','version':'-','grade':'U'}
];
JavaScript(DataTable的创建和初始化):
$('#demo').html('<table class="display" id="example"></table>');
$('#example').dataTable( {
"data": dataSet,
"columns": [
{ "sortable" : false, "data": null, "defaultContent": "<button>Select</button>", "title" : "Choose"
},
{ "title": "Engine", "data": "engine" },
{ "title": "Browser", "data": "browser" },
{ "title": "Platform", "data": "platform" },
{ "title": "Version", "data": "version", "class": "center" },
{ "title": "Grade", "data": "grade", "class": "center" },
{ "defaultContent": true, "data": "existing", "visible": false }
],
initComplete: function(oSettings, json) {
console.log('drawing complete');
if (oSettings.fnRecordsTotal() > 1) {
$('#example').DataTable().row.add({
'engine' : 'Presto',
'browser' : 'Opera 7.5',
'platform' : 'Win 95+ / OSX.2+',
'version' : '-',
'grade' : 'A',
'existing' : false
}).draw();
}
}
} );
这里是上面例子的JSFiddle。如果你点击前两行的 Select 按钮,它会 returns undefined
。第三行的 Select 按钮产生 false
。我希望前两行的 Select 按钮产生 true
.
如果数据集对象中没有提供 key/value,如何为第 6(不可见)列设置默认值?
它 return 未定义,因为 existing
不存在于 dataSet
中。 dataSet
是静态的,defaultContent
不会将其值填充到原始 dataSet
。您真正想要的是隐藏列的值,它将包含 defaultContent
或动态添加的 existing
值。
var row = $('#example').DataTable().row( $(this).parents('tr') ),
index = row.index(),
data = row.cell(index, 6).data();
alert(data);
将 return true
、true
和 false
。分叉 fiddle -> http://jsfiddle.net/vsx7uxnf/
我正在尝试在 jQuery DataTable 中包含一个不可见的列,可以将其设置为默认值 true
来代替数据源中遇到的 null 或 undefined。
假设我正在使用 6 列数据表。前 5 列可见。第 6 列设置为不可见。并且它必须包含 true 或 false,无论数据源对象是否具有相应的键。在 DataTable 的列定义中,我试过了,但没有用。
{ "defaultContent": true, "data": "existing", "visible": false }
根据 API,我认为 defaultContent
仅在 data
为 null 时有效。也许这就是它不起作用的原因。我已经提供了HTML,JS数据和初始化DataTable的JS代码。请注意,加载并呈现 DataTable 后,我会动态追加一行并重新绘制。此行的数据包含第 6 列 属性 并且设置得很好。
HTML:
<div id="demo">
</div>
JavaScript(数据初始化):
var dataSet = [
{'engine':'Webkit','browser':'Safari 1.2','platform':'OSX.3','version':'125.5','grade':'A'},
{'engine':'Other browsers','browser':'All others','platform':'-','version':'-','grade':'U'}
];
JavaScript(DataTable的创建和初始化):
$('#demo').html('<table class="display" id="example"></table>');
$('#example').dataTable( {
"data": dataSet,
"columns": [
{ "sortable" : false, "data": null, "defaultContent": "<button>Select</button>", "title" : "Choose"
},
{ "title": "Engine", "data": "engine" },
{ "title": "Browser", "data": "browser" },
{ "title": "Platform", "data": "platform" },
{ "title": "Version", "data": "version", "class": "center" },
{ "title": "Grade", "data": "grade", "class": "center" },
{ "defaultContent": true, "data": "existing", "visible": false }
],
initComplete: function(oSettings, json) {
console.log('drawing complete');
if (oSettings.fnRecordsTotal() > 1) {
$('#example').DataTable().row.add({
'engine' : 'Presto',
'browser' : 'Opera 7.5',
'platform' : 'Win 95+ / OSX.2+',
'version' : '-',
'grade' : 'A',
'existing' : false
}).draw();
}
}
} );
这里是上面例子的JSFiddle。如果你点击前两行的 Select 按钮,它会 returns undefined
。第三行的 Select 按钮产生 false
。我希望前两行的 Select 按钮产生 true
.
如果数据集对象中没有提供 key/value,如何为第 6(不可见)列设置默认值?
它 return 未定义,因为 existing
不存在于 dataSet
中。 dataSet
是静态的,defaultContent
不会将其值填充到原始 dataSet
。您真正想要的是隐藏列的值,它将包含 defaultContent
或动态添加的 existing
值。
var row = $('#example').DataTable().row( $(this).parents('tr') ),
index = row.index(),
data = row.cell(index, 6).data();
alert(data);
将 return true
、true
和 false
。分叉 fiddle -> http://jsfiddle.net/vsx7uxnf/