如何在此表中激活排序?

Posted

技术标签:

【中文标题】如何在此表中激活排序?【英文标题】:How to activate sorting in this table? 【发布时间】:2017-09-07 16:29:14 【问题描述】:

我正在使用DataTable 插件。链接页面中的示例很棒。但我有一个问题。

在示例中,用户可以在搜索后对数据表进行排序。我成功地做到了这一点。但是当我创建一个过滤器时,排序就搞砸了。

这是预期的顺序:

页面显示数据表中的所有数据 用户进行过滤(通过某些过滤器显示数据。例如按日期、状态、国家等) 页面显示带有搜索过滤器的某些数据 用户可以使用文本进行搜索以查看更少的数据 用户可以按列排序

在我的脚本中,代码一直工作到第 3 点。当用户进行搜索时,过滤的数据被重置以显示所有数据(未过滤)

我该如何处理?

这是我的桌子:

<table id="tbl_surat_all" class="table table-striped table-bordered table-hover dataTables-example" >
<thead>
   <tr>
      <th class='text-center' >No</th>
      <th class="text-center" >ID Proyek</th>
   </tr>
   <tbody><!--Data collected from php--></tbody>
   </thead>
   <tbody>

jQuery:

$('.dataTables-example').DataTable(
    pageLength  : 25,
    responsive  : true,
    dom         : '<"html5buttons"B>lTfgitp',
    buttons     : [
                    extend: 'copy',
                    extend: 'csv', title   : "list<?php echo date('d/m/Y'); ?>",
                    extend: 'excel', title : "list<?php echo date('d/m/Y'); ?>",
                    extend: 'pdf', title   : "list<?php echo date('d/m/Y'); ?>",
                    extend: 'print',
                        customize: function (win)
                            $(win.document.body).addClass('white-bg');
                            $(win.document.body).css('font-size', '10px');
                            $(win.document.body).find('table').addClass('compact').css('font-size', 'inherit');
                        
                    
    ]
);

这是过滤器做的(它是ajax成功调用):

var row;
var no = 1;

$('#tbl_surat_all tbody tr').remove();

$.each(response, function(index, data) 

   row = "<tr><td>"+ no++ +"</td><td>"+data.idproyek+"</td></tr>";
   $('#tbl_surat_all tbody').append(row);
);

注意: 结论是如何将搜索行为(默认来自库)复制到我的过滤器(我自己创建的 jquery)行为?

【问题讨论】:

检查这个:jsfiddle.net/cubttgow/23 HTML 标签不正确 @JaydeepPandya 什么 HTML? @KissMe 评论 /*从 php 收集的数据*/ @JaydeepPandya 哦..实际上这只是一个注释。谢谢提醒我。 【参考方案1】:

如果您查看search api,您可以在表格中进行搜索,如图所示。

var table = $('#example').DataTable();

// #myInput is a <input type="text"> element
$('#myInput').on( 'keyup', function () 
    table.search( this.value ).draw();
 );

或者您可以在初始化数据表时为列命名,并在每一列中搜索文本并将其应用于数据表。

columns: [
         
            name: 'colName',
            data: 'colData',
            type: 'date'
         

在该列上搜索将是

var col = table.columns('colname:name');
col.search('searchTerm');
table.draw();

【讨论】:

以上是关于如何在此表中激活排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅提取此表中列的数字部分? (Python)

如何在插入中输入此表中的数据?

如何将此表中的数据作为列表提交到asp.net mvc中的操作? [关闭]

如何记住分页刷新滚动位置

此表中的外键约束有啥问题?

如何在sqlite中对表中的行进行排名?