对表格进行排序时,第一列中的按钮消失

yuyu

我有一个数据表,显示从文本文件中检索的模拟 json 数据。我已经删除了第一列,因为它包含 id 并且在表格上显示 id 并不理想。我只在第一列的每一行上附加了一个购买按钮。但是,当我对表格进行排序时,按钮消失了,原始的第一列数据也出现了。

理想的 问题

脚本:

    $(document).ready(function() {

    $.getJSON('/apps/mchp/clientlibs/clientlib-site/components/parametrictable/data.txt', function(json) {


    var data = json.data;
    var $thead = $('#parametrictable').find('thead');
    var tr = $("<tr>");
    $thead.append(tr);
    var columns = [];
    var obj = Object.keys(data[0]);
    console.log(data[0])
    var button = '<div class="left-btn"><i class="download fas fa-file-download"></i></div><div class="right-btn"><div class="input-group"><div class="input-group-area"><input type="text" value="100"></div><div class="input-group-icon">BUY</div></div></div>';


    $.each(data[0], function(name, value) {
      var column = {
        "data": name,
        "title":name
      };
    $('tr').find('th:first-child',).remove();

      columns.push(column);

    });

    for (i=1; i<obj.length; i++) {
        $(".dropdown-content").append('<li><input type="checkbox" class="dropcheck" data-column="'+i+'"/>'+obj[i]+'</li>');
    }   

    var table= $('#tableId').DataTable({
      data: data,
      columns: columns,
        columnDefs: [ {
            orderable: true,
            className: 'select-checkbox',
            targets:   1
        } ],
        select: {
            style:    'multi',
            selector: 'td:first-child'
        },
        order: [[ 1, 'asc' ]]
    });

    $('tr').find('th:first-child').remove();
    $('tr').find('td:first-child').remove();
    $('tr').find('td:first-child').append(button);


  $('tr').on('change', function(e){
    e.preventDefault();
    console.log('change!');
  });

  $('input[type=checkbox]').on( 'change', function (e) {
    e.preventDefault();
    var column = table.column( $(this).attr('data-column') );
    column.visible( ! column.visible() );
    } );

  $('.show-all').on( 'click', function (e) {
     e.preventDefault();
    var obj = Object.keys(data[0])
    for (i=1; i<obj.length; i++) {
        var col = table.columns([i]);
        if (col.visible().join(', ') == 'false') {
            col.visible(true);
             $(".dropcheck").prop("checked", false);
        }
    }
    } ); 

   });
  })
未知开发者

首先,通过 .remove() 隐藏数据表列不是一个好习惯,数据表具有 columnDefs 的内置代码,请参阅:https : //datatables.net/examples/basic_init/hidden_​​columns.html

其次,这不是在数据表列中附加 data/html 的正确方法,对数据表使用 rowCallback 函数,请参阅:

            columnDefs: [
                 {
                   "targets": [ 0 ],
                   "visible": false,
                   "searchable": false
                },
            ],
            rowCallback: function(row, data, index) {

                if($('td:eq(1)', row).find('.download').length == 0)
                {
                    $('td:eq(1)', row).append(button);
                }
            },

当使用数据表排序或搜索或任何数据表操作时,它总是刷新表,因此,除非再次执行,否则将忽略操作之前的任何初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对表格进行排序,但使一列不动

在一列上对表格进行排名,而对另一列进行排序

在Angular中对表格列进行排序

需要对表格进行排序,以便对整个表格进行排序,而不仅仅是一列

AutoHotkey 如何在按降序对第一列中的数字进行排序时保持第二列的顺序?

根据一列对表进行排序,其中字符串与bash中的数字混合

如何在1列上对表进行排序,然后在PHP中对另一列进行排序

无法对表格中的日期列进行排序

在Javascript中对表格的列进行排序无法正常工作

按列值对表格进行排序

如何对表中的每一列进行排序并在SQL中显示每列中的最高值?

在XSLT 2.0中对表格进行排序

对表格中的数据进行排序

在MATLAB中对表格的内容进行排序

对表格中的行进行排序

在Vue js中对表格进行排序

对表格中的数据进行排序

在仅对一列的值进行排序时使用键

如何对 Dataframe 中的 2 列进行排序,一列按降序排序,另一列按对应于第一列的字母顺序排序

你能阻止表格的第一列排序吗?

如何按另一个表格行的值对表格列进行排序?

当我单击 reactjs 中的按钮时,对表格进行升序和降序排序

表格样式中的表格 - 空白的第一列 CSS

在R中按降序对一列进行排序(第一行除外)

如何让 Google 表格根据其中一列中的值自动对行进行排序?

根据第一列对CSV文件进行排序

Linux 根据第一列进行数字排序

在没有标题和第一列的csv文件中对行进行排序

按C中的第一列对动态分配的2D数组进行排序