【问题标题】:how to select only filtered rows using selectall javascript如何使用 selectall javascript 仅选择过滤的行
【发布时间】:2013-08-27 20:50:59
【问题描述】:

我有一个用于在 gridview 上过滤文本框的脚本和用于每行复选框的脚本。 当我在网格中过滤某些内容时,我会得到一些过滤的行。我想使用 selectall 脚本选择那些过滤的行。但它正在选择网格中的所有结果。

选择复选框脚本:

      $("#<%=gvCheckDetails.ClientID%> input:checkbox").live("click", function(event) {
            var tbl = $("#<%=gvCheckDetails.ClientID%>");
            var checkbox = $(this);
            var checkState = checkbox.is(":checked");
            var ancestorName = checkbox.parent().parent()[0].nodeName; // tr or th?                

            // if it's a header, we'll work with all rows (select on or off)
            if (ancestorName.toLowerCase() === "th") {
                $(tbl[0].config.rowsCopy).each(function() {
                    if (checkState)
                        $(this).find("input:checkbox").attr('checked', true);
                    else
                        $(this).find("input:checkbox").removeAttr('checked');
                });
            }
        });

任何人都可以帮助我如何修改上面的脚本以在选中全选时仅选择过滤的值(搜索文本框正在使用 aspx 中的 jscript 动态过滤网格行)

【问题讨论】:

  • 你能发一个 jsfiddle 吗?
  • 所以你使用全选来选择已经从全选中筛选出来的行?这让我有点反胃。
  • 问题现在解决了。在下面发布答案。感谢您的快速回复。

标签: c# javascript jquery asp.net gridview


【解决方案1】:

:visible 选择器通常可以解决问题。它只会过滤可见的元素,包括它在 DOM 中的父元素。

$(tbl[0].config.rowsCopy).filter(':visible').each(function() {

【讨论】:

  • 感谢 Augusto,它看起来像解决方案,但不起作用。当我单击全选复选框时,什么都没有发生……可能我们需要更改代码中的某些内容或某处。你能修改它以使其正常工作吗...
  • 您能否检查 $(tbl[0].config.rowsCopy).filter(':visible') 是否返回某些内容(即您所排除的内容 - 可见行)?
  • 最后通过添加过滤器解决了问题 $(this).filter(':visible').find("input:checkbox").attr('checked', true);
【解决方案2】:

根据Augusto Men解决答案:

刚刚换了

$(this).find("input:checkbox").attr('checked', true);

$(this).filter(':visible').find("input:checkbox").attr('checked', true);

所以现在复选框检查正在过滤并仅应用可见的。

非常感谢奥古斯托

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2016-07-29
    相关资源
    最近更新 更多