如何使用selectall javascript仅选择已过滤的行

时间:2013-08-27 20:51:00

标签: c# javascript jquery asp.net gridview

我在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');
                });
            }
        });

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

根据Augusto Men解决:

刚刚更换

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

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

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

非常感谢 Augusto