javascript - jQuery DataTables 默认列值

标签 javascript jquery datatables

我试图在 jQuery DataTable 中包含一个不可见的列,该列可以设置为默认 true 来代替数据源中遇到的 null 或未定义。

假设我正在使用 6 列数据表。前 5 列可见。第 6 列设置为不可见。并且无论数据源对象是否具有相应的键,它都必须包含 true 或 false。在数据表的列定义中,我尝试了此操作,但没有成功。

{ "defaultContent": true, "data": "existing", "visible": false }

根据 API,我认为 defaultContent 仅当 data 为 null 时才有效。也许这就是它不起作用的原因。我已经提供了用于初始化 DataTable 的 HTML、JS 数据和 JS 代码。请注意,一旦加载并渲染了 DataTable,我就会动态追加一行并重新绘制。该行的数据包含第六列属性,并且设置得很好。

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(数据表创建和初始化):

$('#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对于上面的例子。如果单击前两行中的“选择”按钮,它将返回 undefined。第三行的“选择”按钮返回 false。我希望前两行的“选择”按钮产生 true

如果数据集对象中未提供键/值,如何为第六(不可见)列设置默认值?

最佳答案

它返回未定义,因为现有dataSet中不存在。 dataSet 是静态的,defaultContent 不会将其值填充到原始 dataSet 中。您真正想要的是隐藏列的值,其中将包含 defaultContent 或动态添加的现有 值。

var row = $('#example').DataTable().row( $(this).parents('tr') ),
    index = row.index(),
    data = row.cell(index, 6).data();

alert(data);

将返回truetruefalse。叉状 fiddle -> http://jsfiddle.net/vsx7uxnf/

关于javascript - jQuery DataTables 默认列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27956307/

相关文章:

javascript - 在 VueJS 中点击切换类

javascript - 因为其 MIME 类型 ('text/plain' )不可执行,并且启用了严格的 MIME 类型检查

javascript - 绘制多个数据表时速度很慢

jquery - jquery数据库不显示列名

javascript - 显示最近的类(class)

jquery - 如何使表格行逐行动画

javascript - 当我点击网页中的某个元素时,如何监控正在触发的 JavaScript?

JavaScript 错误 : Expected 'html' and instead saw 'script'

javascript - 使用 .next() 找到一个 div 并使用 .append() 追加回第一个?

javascript - 使用 jQuery 添加、复制和删除元素