Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面加载时清除/重新应用tablesorter筛选_Javascript_Jquery_Filter_Tablesorter_Reset - Fatal编程技术网

Javascript 在页面加载时清除/重新应用tablesorter筛选

Javascript 在页面加载时清除/重新应用tablesorter筛选,javascript,jquery,filter,tablesorter,reset,Javascript,Jquery,Filter,Tablesorter,Reset,我对javascript不是很在行,有时我可以复制JQuery代码并使其工作。请对我耐心点 我使用的是几天前最新版本的tablesorter 我有一个带有表格和复选框的页面。选中该复选框后,我将对第7行应用一个过滤器,该行是下拉框的值。它工作得很好 当我发布页面时,过滤器将丢失,但复选框的选中状态将保持,这是不同步的。因此,我调用了读取复选框状态并再次设置过滤器的函数,但它不起作用。表似乎没有初始化,因此过滤器实际上没有被应用。我在CodeBehind和window.onload函数中尝试了_L

我对javascript不是很在行,有时我可以复制JQuery代码并使其工作。请对我耐心点

我使用的是几天前最新版本的tablesorter

我有一个带有表格和复选框的页面。选中该复选框后,我将对第7行应用一个过滤器,该行是下拉框的值。它工作得很好

当我发布页面时,过滤器将丢失,但复选框的选中状态将保持,这是不同步的。因此,我调用了读取复选框状态并再次设置过滤器的函数,但它不起作用。表似乎没有初始化,因此过滤器实际上没有被应用。我在CodeBehind和window.onload函数中尝试了_LoadComplete。两者都不起作用

所以我尝试了filterinit和filterend函数,还有一个简单的filter\u saveFilters:true。这完美地保持了过滤,但是当我转到另一个页面并返回时,过滤器被保持,复选框处于未选中状态。再次失去同步

我发现有两种方法可以用来重置保存的过滤器$('table')。触发器('filterReset')$('table')。触发器('filterResetSaved');我似乎无法让他们工作

所有问题都发生在页面加载时。简单地说,如果选中了复选框,则应用过滤器并保留它,直到复选框更改或页面加载而不回发

Filter函数,用于读取复选框和下拉框,并设置筛选器和表排序器初始化

function filterTS() {
    if (document.getElementById("slideTwo").checked == true) {
        var e = document.getElementById("selUsers");
        var selectedText = e.options[e.selectedIndex].text;
        var filters = $('table').find('input.tablesorter-filter'),  col = 7, txt = selectedText, cur = filters.eq(col).val(), mult, i;
        }
        else {
            var filters = $('table').find('input.tablesorter-filter'), col = 7, txt = '', cur = filters.eq(col).val(), mult, i;
        }
        if (cur && txt !== "") {
            mult = cur.split('|');
            i = $.inArray(txt, mult);
            if (i < 0) {
                mult.push(txt);
            } else {
                mult.splice(i, 1);
            }
            txt = mult.join('|');
        }
        filters.eq(col).val(txt).trigger('search', false);
    }
    //Tablesorter Initialization
    $(window).ready(function () {
        $("#GridView1").tablesorter({
            theme: 'green',
            sortList: [[0, 1]],
            headerTemplate: '{content}{icon}',
            dateFormat: 'mmddyyyy',
            sortMultiSortKey: 'shiftKey',
            sortResetKey: 'ctrlKey',
            usNumberFormat: true,
            widgets: ['zebra', 'filter'],
            widgetOptions: {
                filter_ignoreCase: true,
            }
        });
        $('table')
            .bind('filterInit', function () {
                // check that storage ulility is loaded
                if ($.tablesorter.storage) {
                    // get saved filters
                    var f = $.tablesorter.storage(this, 'tablesorter-filters') || [];
                    $(this).trigger('search', [f]);
                }
            })
            .bind('filterEnd', function () {
                if ($.tablesorter.storage) {
                    // save current filters
                    var f = $(this).find('.tablesorter-filter').map(function () {
                    return $(this).val() || '';
                    }).get();
                    $.tablesorter.storage(this, 'tablesorter-filters', f);
                }
            });
        $("#slideTwo").on("click", filterTS);
        $("#slideOne").on("click", hidedates);
是否需要将“表格”更改为“网格视图1”? 似乎什么都不管用。

试试这个:

$(document).ready(function(){
  $('table').trigger('update');
});
或者这个:

$(document).ready(function(){
  $('table').trigger('updateAll', [resort]);
});
试试这个:

$(document).ready(function(){
  $('table').trigger('update');
});
或者这个:

$(document).ready(function(){
  $('table').trigger('updateAll', [resort]);
});

首先,为“filterInit”和“filterEnd”设置的代码基本上与将设置为
true
相同

使用
$('table').trigger('filterResetSaved')
是清除存储的过滤器值所需的方法;但同样,只有当
filter\u saveFilters
选项为
true
时,它才起作用

对于复选框,您可以设置复选框属性
autocomplete=“off”
()以在页面刷新时清除状态;但是现在,如果将
filter\u saveFilters
选项设置为
true
,则通过选中
#slideTwo
设置的任何过滤器都将在页面刷新时设置,因为过滤器值已保存。。也许可以在tablesorter初始化时检查该筛选器的值,如果它与
#slideTwo
的值匹配,您可以设置复选框状态

如果您需要代码方面的帮助,那么提供一个演示或示例会更容易。我为你设置了修改

$(function() {
  $("#GridView1").tablesorter({
    theme: 'green',
    sortList: [[0, 1]],
    headerTemplate: '{content}{icon}',
    // dateFormat: 'mmddyyyy',
    // sortMultiSortKey: 'shiftKey',
    // sortResetKey: 'ctrlKey',
    // usNumberFormat: true,
    widgets: ['zebra', 'filter'],
    widgetOptions: {
      // filter_ignoreCase: true,
      filter_saveFilters: true
    },
    initialize: function(table) {
      var c = table.config,
        $s2 = $('#slideTwo'),
        // c.$filters points to the TD, not the input
        $filter = c.$filters.eq(3).find('.tablesorter-filter'),
        val = $filter.val();
      $s2.prop('checked', val === 'something');
    }
  });
});

*注意:注释掉的选项已设置为默认值。

首先,为“filterInit”和“filterEnd”设置的代码基本上与将设置为
true
相同

使用
$('table').trigger('filterResetSaved')
是清除存储的过滤器值所需的方法;但同样,只有当
filter\u saveFilters
选项为
true
时,它才起作用

对于复选框,您可以设置复选框属性
autocomplete=“off”
()以在页面刷新时清除状态;但是现在,如果将
filter\u saveFilters
选项设置为
true
,则通过选中
#slideTwo
设置的任何过滤器都将在页面刷新时设置,因为过滤器值已保存。。也许可以在tablesorter初始化时检查该筛选器的值,如果它与
#slideTwo
的值匹配,您可以设置复选框状态

如果您需要代码方面的帮助,那么提供一个演示或示例会更容易。我为你设置了修改

$(function() {
  $("#GridView1").tablesorter({
    theme: 'green',
    sortList: [[0, 1]],
    headerTemplate: '{content}{icon}',
    // dateFormat: 'mmddyyyy',
    // sortMultiSortKey: 'shiftKey',
    // sortResetKey: 'ctrlKey',
    // usNumberFormat: true,
    widgets: ['zebra', 'filter'],
    widgetOptions: {
      // filter_ignoreCase: true,
      filter_saveFilters: true
    },
    initialize: function(table) {
      var c = table.config,
        $s2 = $('#slideTwo'),
        // c.$filters points to the TD, not the input
        $filter = c.$filters.eq(3).find('.tablesorter-filter'),
        val = $filter.val();
      $s2.prop('checked', val === 'something');
    }
  });
});

*注意:被注释掉的选项已经设置为默认值。

因此,如果在代码隐藏页面loadcomplete中这样选中复选框,我会将数据值添加到表格的标题中,从而简化整个操作。

If Me.slideTwo.Checked=True Then GridView1.HeaderRow.Cells(10).Attributes.Add("data-value",selUsers.SelectedItem.Text)

而普雷斯托·切诺,这是一种享受。我仍然不知道为什么在表分类器初始化完成后调用javascript函数实际上不起作用。它将文本设置到过滤器字段中,但不应用它。但是,一旦页面加载,javascript就可以很好地工作。

因此,如果在页面加载完成后的代码中选中复选框,我会将数据值添加到表的标题中,从而简化整个操作。

If Me.slideTwo.Checked=True Then GridView1.HeaderRow.Cells(10).Attributes.Add("data-value",selUsers.SelectedItem.Text)

而普雷斯托·切诺,这是一种享受。我仍然不知道为什么在表分类器初始化完成后调用javascript函数实际上不起作用。它将文本设置到过滤器字段中,但不应用它。不过,一旦页面加载,javascript就可以很好地工作。

是的,这不起作用。我有两个不同的场景,一个没有保存筛选器,但试图通过fiterTS()设置为加载,另一个有筛选器保存,如果未选中复选框,则尝试在页面加载时清除它。我尝试了很多不同的方法,但都没有产生任何效果。是的,那是行不通的。我有两个不同的场景,一个没有保存筛选器,但试图通过fiterTS()设置为加载,另一个有筛选器保存,如果未选中复选框,则尝试在页面加载时清除它。我尝试了许多不同的方法,但它根本没有产生任何结果。请注意,我的JQuery非常弱。我认为这里的initialize函数执行以下操作:(1)获取我们将要修改的表配置(2)查找第三组的筛选器(3)获取该筛选器的值并将其放入val(4)如果val='something',则设置checked。这是正确的吗?有两点让我很恼火:(1)删除保存的过滤器的代码(当filter\u saveFilters=true)去哪里清除它们并让tablesorter在没有过滤的情况下初始化?我不能相信