Очистить значения фильтра в BootstrapTable - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть загрузочная таблица с фильтром, с данными на стороне сервера.

<table class="table table-condensed table-bordered table-hover" id="position-list"
data-toggle="table" 
data-page-list="[10, 25, 50, 100, ALL]"
data-url="/getData.jsp"
data-side-pagination="server"
data-pagination="true" 
data-click-to-select="true"
data-id-field="id"
data-show-footer="false"   
data-minimum-count-columns="2"                           
data-height="550" 
data-filter-control="true" 
data-filter-show-clear="true"
>
<thead>
<tr>
    <th data-sortable="true" data-field="Status" data-filter-control="select">Status</th>
      ....

Строка data-filter-show-clear="true" добавляет кнопку в таблицу начальной загрузки, которая прекрасно работает. Вот демоверсия от разработчика http://issues.wenzhixin.net.cn/bootstrap-table/#extensions/filter-control.html

Проблема в том, что у меня есть собственная кнопка где-то на экране, для которой я хотел бы активировать фильтр очистки, и мне не нужна эта кнопка по умолчанию.

Один из вариантов, который я попробовал, - прикрепить следующий код к моей кнопке

 $('.form-control').val('');
 $('#position-list').bootstrapTable('refresh');

Однако это не работает - отладкой bootstrap-table.js я вижу, что filterColumnsPartial не сбрасывается, и поэтому мой ручной выбор фильтра игнорируется.

Есть идеи?

1 Ответ

0 голосов
/ 06 ноября 2018

Я исправляю эту проблему с помощью этого трюка:

$('#yourCustomButtonId').on('click', function(){ $('.filter-show-clear').trigger('click') }); 

И если вам нужно скрыть кнопку, вы можете использовать это:

.filter-show-clear {visibility: hidden; position: absolute; top: -9999px}

Это исправит проблему.

Примечание: о вашем коде и почему он не работает, поскольку функция удаления - это фильтр удаления, очистка файлов cookie и фильтры сброса .. и т. Д.

BootstrapTable.prototype.clearFilterControl = function () {
        if (this.options.filterControl && this.options.filterShowClear) {
            var that = this,
                cookies = collectBootstrapCookies(),
                header = getCurrentHeader(that),
                table = header.closest('table'),
                controls = header.find(getCurrentSearchControls(that)),
                search = that.$toolbar.find('.search input'),
                timeoutId = 0;

            $.each(that.options.valuesFilterControl, function (i, item) {
                item.value = '';
            });

            setValues(that);

            // Clear each type of filter if it exists.
            // Requires the body to reload each time a type of filter is found because we never know
            // which ones are going to be present.
            if (controls.length > 0) {
                this.filterColumnsPartial = {};
                $(controls[0]).trigger(controls[0].tagName === 'INPUT' ? 'keyup' : 'change');
            } else {
                return;
            }

            if (search.length > 0) {
                that.resetSearch();
            }

            // use the default sort order if it exists. do nothing if it does not
            if (that.options.sortName !== table.data('sortName') || that.options.sortOrder !== table.data('sortOrder')) {
                var sorter = header.find(sprintf('[data-field="%s"]', $(controls[0]).closest('table').data('sortName')));
                if (sorter.length > 0) {
                    that.onSort(table.data('sortName'), table.data('sortName'));
                    $(sorter).find('.sortable').trigger('click');
                }
            }

            // clear cookies once the filters are clean
            clearTimeout(timeoutId);
            timeoutId = setTimeout(function () {
                if (cookies && cookies.length > 0) {
                    $.each(cookies, function (i, item) {
                        if (that.deleteCookie !== undefined) {
                            that.deleteCookie(item);
                        }
                    });
                }
            }, that.options.searchTimeOut);
        }
    };

Я устал искать опцию очистки кнопки, но я не нашел ее, так что вам нужно активировать текущий фильтр или построить свою зависимость от прототипа ядра для функции очистки или каким-либо другим способом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...