当前位置: 首页 > 知识库问答 >
问题:

Datatables获取列上可搜索的值

邹曦之
2023-03-14

我已经用以下代码创建了datatable:

userTable = $('#userTable').DataTable({
                serverSide: true,
                processing: true,
                ajax: {
                        url: "{!! route('listOfUsersAjax') !!}",
                        type: "GET",
                        dataSrc: function ( json ) {
                          //console.log(json);;
                            for ( var i=0, ien=json.data.length ; i<ien ; i++ ) {
                                if (json.data[i].is_manager == 1){
                                    json.data[i].is_manager = 'Yes';
                                }
                                else {
                                    json.data[i].is_manager = 'No';
                                }
                            }
                            return json.data;
                        }
                    },
                columns: [
                    {
                        className:      'details-control',
                        orderable:      false,
                        searchable:     false,
                        data:           null,
                        defaultContent: ''
                    },
                    { name: 'id', data: 'id' },
                    { name: 'name', data: 'name' },
                    { name: 'email', data: 'email' },
                    { name: 'is_manager', data: 'is_manager'},
                    { name: 'region', data: 'region' },
                    { name: 'country', data: 'country' },
                    { name: 'domain', data: 'domain' },
                    { name: 'management_code', data: 'management_code' },
                    { name: 'job_role', data: 'job_role' },
                    { name: 'employee_type', data: 'employee_type' },
                    {
                        name: 'actions',
                        data: null,
                        sortable: false,
                        searchable: false,
                        render: function (data) {
                            var actions = '';
                            actions += '<div class="btn-group btn-group-xs">';
                            actions += '<button data-toggle="tooltip" title="view" id="'+data.id+'" class="buttonView btn btn-success"><span class="glyphicon glyphicon-eye-open"></span></button>';
                            actions += '<button data-toggle="tooltip" title="edit" id="'+data.id+'" class="buttonUpdate btn btn-primary"><span class="glyphicon glyphicon-pencil"></span></button>';
                            actions += '<button data-toggle="tooltip" title="delete" id="'+data.id+'" class="buttonDelete btn btn-danger"><span class="glyphicon glyphicon-trash"></span></button>';
                            actions += '</div>';
                            return actions;
                        }
                    }
                    ],
                columnDefs: [
                    {
                        "targets": [1,3,4], "visible": false, "searchable": false
                    }
                    ],
                order: [[2, 'asc']],
                initComplete: function () {
                    this.api().columns().every(function () {
                        var column = this;
                        //console.log(userTable);
                        // Now we need to skip the first column as it is used for the drawer...
                        if(column[0][0] == '0' || column[0][0] == '11'){return true;};
                        var input = document.createElement("input");
                        $(input).appendTo($(column.footer()).empty())
                        .on('keyup change', function () {
                            column.search($(this).val(), false, false, true).draw();
                        });
                    });
                }
            } );

在结尾处,您可以看到我放置了一个initComplete以使搜索列位于每个列的底部。

我不需要有一个搜索当列是不可搜索的,例如,第一列和最后一个,因为它是不可搜索的。我使用列的编号并返回true,这样它就不会创建它了,但我想要一些更动态的东西,如果可搜索的列是false,那么返回true,这样我就不需要指定列的编号了。

谢谢你的帮助。

共有1个答案

茅高卓
2023-03-14

您确实可以通过this.api().init().columns使用columns定义。因此,您所要做的只是计算columnssearchableexplicit是否设置为false(未定义可搜索或根本未定义列意味着true,因为这是默认值):

initComplete: function() {
  var columns = this.api().init().columns;
  this.api().columns().every(function(index) {
    if (!columns[index] || columns[index].searchable) {
       // column is searchable
     } else {
       // column is not searchable           
     }
   })  
 }
 类似资料:
  • 问题内容: 我是numpy的新手,并且正在python中使用随机森林实现集群。我的问题是: 如何找到数组中确切行的索引?例如 我寻找并得到结果1(第二行的索引)。 有什么建议吗?遵循代码(不起作用…) 问题答案: 为什么不简单地做这样的事情?

  • 我正在ruby平台上使用twitter流媒体API。在twitter gem的帮助下(https://github.com/sferik/twitter)我能找到流文本。 通过查看推文,我可以获得推文。 :文本= 但我需要准确的搜索文本,它输入了如下内容:search= 在检查推文,我得到的输出为

  • 问题内容: 是否可以获得与特定模式匹配的索引列表,例如 这是获取索引列表的方法: 但是我找不到过滤它们的方法,因此该列表仅包含匹配“ my_index_nr_1 ”的索引,其中“ ”是通配符 解 在使用ES一段时间后,这里是我现在使用的东西,希望它能对其他人有所帮助: 您也可以在末尾添加,以得到结果中每一列的标题。 问题答案: 使用_aliases命令有一个巧妙的技巧,当与通配符结合使用时(下面)

  • 我有一堆pdf文件,有些是可搜索的常规pdf文件,有些是不可搜索的文件的扫描版本。我想提取每个pdf的内容。为了提取常规PDF的内容,我使用Apache Tika,为了从不可搜索的PDF中提取内容,我使用tesseract ocr。然而,我需要区分哪个pdf是nornal pdf,哪个不是。有办法吗?

  • 在R中,当需要根据可以执行的列名称检索列索引时 有没有一种方法可以对熊猫数据帧执行相同的操作?

  • aoColumns属性提供了使用DataTable设置表中呈现的列类型的可能性。 如果类型为textarea,则没有问题,但如何设置“日期”的类型以正确显示日期值,并在日期值专用编辑器(如datepicker)中编辑它。 我使用以下链接中的测试和知识示例: http://www.script-tutorials.com/datatables-data-from-ajax-edit-in-place