Javascript分配功能不起作用

时间:2017-12-07 08:53:41

标签: javascript datatables

我有一个显示两个数据表的应用程序。两个表都使用按钮扩展来支持列可见性对话框。 第二个表有第一列没有标题。在列可见性对话框中,按钮应该有一个标题,这就是我重写colvis扩展的columnText函数的原因

var buttons= [{
    extend: 'colvis',
    postfixButtons: ['colvisRestore'],
    collectionLayout: 'fixed three-column'
}];
if("secondTable" === tableName) {
    buttons[0]['columnText'] = function (dt, idx, title) {
        if (idx === 0) {
            return "firstColumnTitle";
        } else {
            return title;
        }
    };
    //add default buttons to buttons
    buttons[0]['buttons'] = [{extend: 'columnsToggle'}];
    //add one extra button to the collection
    buttons[0]['buttons'].push([
    {
        extend: 'columnToggle',
        text: 'HR',
        columns: [1, 2]
    }]);
}
DataTable({
    rowId: 'id',
    ajax: 'content.do',
    buttons: buttons
});

我希望只为第二个表调用columntext函数

如果我添加按钮,则不再调用columnText函数。为什么呢?

1 个答案:

答案 0 :(得分:0)

感谢@davidkonrad和@Adelin的评论。如果找到原因。

而不是将columnText函数赋值给colvis扩展,我需要将它分配给columnsToggle Extension里面。

if("secondTable" === tableName) {
  //add default buttons to buttons
  buttons[0]['buttons'] = [{
    extend: 'columnsToggle',
    columnText: function (dt, idx, title) {
    if (idx === 0) {
      return "firstColumnTitle";
    } else {
      return title;
    }
  }}];
  //add one extra button to the collection
  buttons[0]['buttons'].push([
  {
    extend: 'columnToggle',
    text: 'HR',
    columns: [1, 2]
  }]);
}