返回页面时重置过滤器上的过滤器,过滤后的选择下拉列表不返回任何记录

时间:2015-08-25 15:29:36

标签: tablesorter

我在显示产品的页面上使用tablesorter。其中一列是下拉列表中显示的状态。当我点击产品时,我可以编辑它并更改其状态。当我返回到产品列表时,列表仍然被过滤,这是正常的,但如果产品是具有此状态的最后一个产品,那么产品列表当然是空的,下拉列表显示没有选择,因为状态不是已经存在了。当我回到产品列表页面时,我想清除下拉列表中的过滤器,并且没有更多具有此状态的产品。我怎样才能做到这一点?

我的代码:

<properties>
<maven.compiler.source>1.5</maven.compiler.source>
<maven.compiler.target>1.4</maven.compiler.target>
</properties>

谢谢。

1 个答案:

答案 0 :(得分:0)

我使用以下代码制作了它:

var FilterCallOnce = false;

    $("#ProductTable").tablesorter({
        theme: 'blue',
        widthFixed: false,
        widgets: [ "zebra", "filter", "resizable" ],
        widgetOptions: {
            filter_childRows: false,
            filter_columnFilters: true,
            filter_filteredRow: 'filtered',
            filter_hideFilters: true,
            filter_ignoreCase: true,
            filter_liveSearch: true,
            filter_onlyAvail: 'filter-onlyAvail',
            filter_reset: 'button.reset',
            filter_saveFilters: true,
            filter_searchDelay: 300,
            filter_serversideFiltering: false,
            filter_startsWith: false,
            filter_useParsedData: false,
            filter_defaultAttrib: 'data-value'
        }
    }).bind('filterEnd', function(e, filter){
        var table = document.getElementById("ProductList");
        var nrow = 0;
        var nfiltered = 0;

        if (FilterCallOnce == false)
        {
            FilterCallOnce = true;

            if (table != null)
            {
                for (var i = 0, row; row = table.rows[i]; i++)
                {
                    nrow++;

                    if (!hasClass(row, 'filtered'))
                        nfiltered++;
                }

                if ((nrow > 0) && (nfiltered == 0))
                    $('#ProductTable').trigger('filterReset');
            }
        }
    });

    function hasClass(element, cls)
    {
        return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
    }