我尝试使用此代码通过文本框过滤网格视图的所有列,但它只是过滤了网格的最后一列。我该怎么改变它?我的代码有什么问题?我的第一列是2,最后一列是4.我的for循环以2开始,以4结束,但是当我尝试这个“”(i = 2; i< 4; i ++)时,它显示我的索引为3的列。
$(document).ready(function () {
// Client Side Search (Autocomplete)
// Get the search Key from the TextBox
// Iterate through the 1st Column.
// td:nth-child(1) - Filters only the 1st Column
// If there is a match show the row [$(this).parent() gives the Row]
// Else hide the row [$(this).parent() gives the Row]
$('#filter').keyup(function (event) {
var searchKey = $(this).val();
for (i =2; i<5; i++) {
$("#gvwHuman_ctl00 tr td:nth-child(" + i + ")").each(function () {
// $("#gvwHuman_ctl00 tr td:nth-child(" + i + ")").each(function () {
var cellText = $(this).text();
if (cellText.indexOf(searchKey) >= 0) {
$(this).parent().show();
} else {
$(this).parent().hide();
}
});
}
});
});
答案 0 :(得分:1)
问题是对于行的每个单元格,您显示或隐藏该行。所以只有最后一个才重要。
你可以这样做:
// 1 : hide all rows
$("#gvwHuman_ctl00 tr").hide();
// 2 : show the row if there is one match
for (i =2; i<5; i++) {
$("#gvwHuman_ctl00 tr td:nth-child(" + i + ")").each(function () {
// $("#gvwHuman_ctl00 tr td:nth-child(" + i + ")").each(function () {
var cellText = $(this).text();
if (cellText.indexOf(searchKey) >= 0) {
$(this).closest('tr').show();
}
});
}