来自 tablesorter 的过滤器小部件不起作用

Filter Widget from tablesorter doesn't work

我在 MVC Razor 应用程序中使用 Tablesorter (2.22.1),但在添加基本筛选行时遇到问题。 我在捆绑包中添加了脚本(js 插件)。

bundles.Add(new ScriptBundle("~/bundles/initTableSort").Include(
                "~/Scripts/libs/jquery.tablesorter.js",
                "~/Scripts/libs/jquery.tablesorter.widgets.js",
                "~/Scripts/libs/jquery.tablesorter.combined.js")
);

我还用jquery将它包含在_Layout.html中。我没有使用 jquery.latest.js,因为在我的项目中有不同的 jquery 文件(新)并且它们被添加到 _Layout。

@Scripts.Render("~/bundles/jquery")
...
@Scripts.Render("~/bundles/initTableSort")

我有自己的 css 并且我不使用 Tablesorter 主题。 我的 js 函数:

$(".tablesorter").tablesorter({
    sortReset: true,
    sortRestart: true,
    widthFixed : true,

    textAttribute: 'data-sort',
    widgets: ["filter"],
    widgetOptions: {
        filter_external: '.search',
        filter_defaultFilter: { 1: '~{query}' },
        filter_columnFilters: true,
        filter_placeholder: { search: 'Search...' },
        filter_saveFilters: true,
        filter_reset: '.reset'
    },
    headers: {
        'th.smallChart, th.errorLink': {
            sorter: false,
            filter: false
        },
        'th.errorDifference': {
            sorter: 'data'
        }
    }

});

table 中的数据由 foreach 循环呈现,但 headers 和 table 需要 classes/ids。我不粘贴 table 代码,因为它太长了,我认为它看起来没有问题。

在那次排序之后,重置排序(第三次单击后),自定义解析器工作正常,但包含小部件 'Filter' 只给我行来向每一列写入筛选查询,但它不起作用。我可以写点东西,但是 table 在那之后没有被过滤。我不知道为什么。检查没有显示任何错误。

拜托,有人可以帮我解决这个问题并写下我做错了什么吗?

编辑 1

我什至使用此文档中的数据创建了新项目Basic Filter Tablesorter Documentation,但我仍然遇到同样的问题,所以我必须做错什么,但我不知道是什么和在哪里。

如果您能提供该问题的演示会很有帮助

看到您正在使用自定义解析器来获取单元格数据属性,我想分享一下,这已经是内置的;设置 textAttribute option 以匹配您的数据属性:

$(".tablesorter").tablesorter({
    sortReset: true,
    sortRestart: true,
    textAttribute: 'data-sort',
    widgets: ["filter"],
    widgetOptions: {
        filter_external: '.search',
        filter_defaultFilter: { 1: '~{query}' },
        filter_columnFilters: true,
        filter_placeholder: { search: 'Search...' },
        filter_saveFilters: true,
        filter_reset: '.reset'
    },
    headers: {
        'th.smallChart, th.errorLink': {
            sorter: false
        }
    }
});

希望此更改能解决您遇到的问题。

问题已解决

问题出在 .css 主题文件中...我没有 link .css 蓝色主题文件,因为我使用自己的 css,但没有关于您必须添加部分 .css 主题文件才能使用过滤的信息。

您只需添加

/* rows hidden by filtering (needed for child rows) */
.tablesorter .filtered {
    display: none;
}

/* ajax error row */
.tablesorter .tablesorter-errorRow td {
    text-align: center;
    cursor: pointer;
    background-color: #e6bf99;
}

到您的 .css 文件,一切正常。