Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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过滤器导致gridview标题不显示?_Javascript_Asp.net_Gridview - Fatal编程技术网

如何防止Javascript过滤器导致gridview标题不显示?

如何防止Javascript过滤器导致gridview标题不显示?,javascript,asp.net,gridview,Javascript,Asp.net,Gridview,我的目标是创建一个具有gridview的网页,该网页可以通过任何值进行过滤,但每次在过滤器中输入字符时,标题都会消失。我认为过滤器也在过滤标题,但我不能确定。这是我的密码: $(文档).ready(函数(){ $(“#fbody tbody”).attr('id','testing'); }); var table=$('#fbody').DataTable(); 新的$.fn.dataTable.FixedHeader(表{ }); $(function(){//当DOM准备就绪时将调用此

我的目标是创建一个具有gridview的网页,该网页可以通过任何值进行过滤,但每次在过滤器中输入字符时,标题都会消失。我认为过滤器也在过滤标题,但我不能确定。这是我的密码:


$(文档).ready(函数(){
$(“#fbody tbody”).attr('id','testing');
});
var table=$('#fbody').DataTable();
新的$.fn.dataTable.FixedHeader(表{
});
$(function(){//当DOM准备就绪时将调用此函数
$('#MainContent_txtFilter').keyup(函数(){
//警报(“hi”);
//var数据=此.value.split(“”);
var data=this.value.toUpperCase().split(“”);
var jo=$(“#测试”).find(“tr”);
如果(this.value==“”){
jo.show();
返回;
}
//隐藏所有行
jo.hide();
//循环过滤jquery对象以获得结果。
jo.filter(函数(i,v){
var$t=$(本);
对于(变量d=0;d-1){
返回true;
}
}
返回false;
})
//显示匹配的行。
.show();
}).focus(函数(){
此值为“”;
$(this.css)({
“颜色”:“黑色”
});
$(this.unbind('focus');
}).css
({
“颜色”:“#C0”
});
});



过滤器:


要确保只针对表体中的行,请将jQuery选择器限制在表的
tbody
区域,例如:

var jo = $("#testing").find("tbody tr");
这将导致忽略
thead
区域,从而不受影响。

很抱歉,在重新阅读您的代码后,我终于注意到
#testing
ID已经指向
tbody
。没有帮助的是GridView控件有一个坏习惯,即包含
tbody
中的所有内容,包括标题

作为一种潜在的解决方法,请尝试连接一个
OnRowDataBound
处理程序:

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header) {
        e.Row.TableSection = TableRowSection.TableHeader;
    }
}

这将导致标题在语义正确的
thead
元素中呈现,使您能够在不影响标题的情况下以
tbody
为目标。

我感谢您的响应。我尝试了这个,但它不起作用。gridview没有过滤任何内容。代码的这一部分不只是说明gri的哪一部分吗应该返回dview?我认为.find(“tr”)只是说“如果你找到一个与筛选器匹配的单元格,那么就返回整行”。例如,如果你将“tr”替换为“td”,如果文本框中输入了“green”,那么筛选器将返回所有包含“green”的单元格。请让我知道这是否正确。已经有一段时间了,但我今天在另一个项目中使用了类似的代码,您的建议效果很好。上次尝试使用它时,我一定错过了其他内容。抱歉延迟,非常感谢您的帮助。没问题,很高兴它有用:)