【问题标题】:force global search Datatables to search on columns that not listed in columns option强制全局搜索数据表搜索列选项中未列出的列
【发布时间】:2015-12-05 07:32:55
【问题描述】:

这是我的 Datatables jQuery 代码:

$('#allUsersTable').DataTable({
                        processing: true,
                        serverSide: true,
                        "bSort": false,
                        "responsive": true,
                        ajax: {
                            url :   '{!! route('usersData') !!}',
                            data: function(d){
                                d.level =   $('#levelFilter').val()
                            }
                        },
                        columns: [
                            {data: 'checkbox', name: 'checkbox', "width": "20px"},
                            {data: 'userPic', name: 'userPic', 'className': 'text-center'},
                            {data: 'email', name: 'email'},
                            {data: 'created_at', name: 'created_at'},
                            {data: 'level', name: 'level', 'className': 'text-center'},
                            {data: 'actions', name: 'actions', 'className': 'text-center'}
                        ]
                    });  

如您所见,我有一个 email 列来显示电子邮件(以及姓名和家庭用户详细信息)。

这是通过yajra-laravel-datatables获取列的后端代码(省略了一些不必要的部分):

$users = User::select(['user_id', 'name', 'family', 'email', 'created_at', 'level']);

        $datatable = app('datatables')->of($users)
            ->orderBy('created_at', 'desc')

            ->editColumn('email', function ($user) {
                return '
                        ' . $user->name . ' ' . $user->family . '
                        <div class="en-text"><a href="mailto:' . $user->email . '" target="_blank">' . $user->email . '</a></div>
                    ';
            })

            });

        return $datatable->make(true);

我们知道,通过 Datatables 搜索框进行的全局搜索仅搜索 columns 选项中列出的列。

但我希望当用户在全局搜索框中输入一些字符时,强制数据表搜索未包含在 columns 选项中且仅通过 email 列。

我该怎么做?

【问题讨论】:

    标签: jquery laravel datatables


    【解决方案1】:

    根据https://laracasts.com 的 yajra 回答,解决方案很简单。

    我应该在我的列定义中添加隐藏列 namefamily,如下所示:

    columns: [
        {data: 'checkbox', name: 'checkbox', "width": "20px"},
        {data: 'userPic', name: 'userPic', 'className': 'text-center'},
        {data: 'email', name: 'email'},
        {data: 'created_at', name: 'created_at'},
        {data: 'level', name: 'level', 'className': 'text-center'},
        {data: 'actions', name: 'actions', 'className': 'text-center'},
        {data: 'name', name: 'name', visible: false},
        {data: 'family', name: 'family', visible: false}
    ]
    

    这很好用。

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多