首页 > 解决方案 > DataTables 搜索布尔值

问题描述

我很难在我的 DataTables 对象的布尔列上的三状态下拉列表(任何、是和否)上应用搜索。

这是我的数据的示例行:

{
    "Id": 1,
    "FirstName": "John",
    "LastName": "Doe",
    "Email": "JohnDoe@email.com",
    "Elevated": true,
    "Activated": true
}

这是我的下拉标记:

<select class="form-control" id="elevated">
    <option value="">Any</option>
    <option value="true">Yes</option>
    <option value="false">No</option>
</select>

这就是我用来搜索列的内容:

const elevated = $("#elevated option:selected").val();
grid.column("Elevated:name").search(elevated).draw();

发生的事情是,只要下拉选项为任何,它就会清除搜索,但只要下拉选项是或否,它就不会返回任何行。

将选项值设置为 1/0 或在搜索方法中指定 RegEx 参数都没有关系。结果是一样的。

标签: datatables

解决方案


在浏览了一堆论坛后,我发现了发生了什么。我正在使用 columns.render 根据单元格的值显示一个图标。这样做会导致它与 columns.search 混淆。相反,我用 columns.createdCell 替换了 columns.render,操纵了现有的 DOM 来显示我的图标,然后 columns.search 就按预期工作了。


推荐阅读