如何在asp.net中使用Javascript从gridview中只包含一列进行搜索?
我从谷歌获得了一个功能,可以使用如何在asp.net中使用Javascript从gridview中只包含一列进行搜索?,javascript,c#,asp.net,gridview,Javascript,C#,Asp.net,Gridview,我从谷歌获得了一个功能,可以使用textbox 其功能是: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> function filter2(phrase, _id) { var words = phrase.value.toLowerCase().split(" ");
textbox
其功能是:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
function filter2(phrase, _id) {
var words = phrase.value.toLowerCase().split(" ");
var table = document.getElementById(_id);
var ele;
for (var r = 1; r < table.rows.length; r++) {
ele = table.rows[r].innerHTML.replace(/<[^>]+>/g, "");
var displayStyle = 'none';
for (var i = 0; i < words.length; i++) {
if (ele.toLowerCase().indexOf(words[i]) >= 0)
displayStyle = '';
else {
displayStyle = 'none';
break;
}
}
table.rows[r].style.display = displayStyle;
}
}
</script>
我用于搜索的Gridview
如下所示:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField DataField="ClassName" HeaderText="Class Name" />
<asp:BoundField DataField="PerWeekClass" HeaderText="Week Classes" />
<asp:BoundField DataField="SubID" visible="false" />
</Columns>
</asp:GridView>
我遇到的问题是这个函数从网格的所有列中搜索字符串
我只需要第一列,应该从中搜索字符串
我在java脚本方面很弱,所以我需要你的帮助来解决这个问题
提前感谢。这是您可以尝试的代码 .aspx 改变
ele=table.rows[r].innerHTML.replace(+/]+>/g,”;
到
ele=table.rows[r].cells[0].innerHTML.replace(+/]+>/g,”;
一个问题。。。。必须使用javascript进行过滤吗?这是客户端,我从上级命令得到了这样做的命令,这很好。谢谢你抽出时间。我还需要一件事,这个函数检查包含序列的字符串,所以若我需要像SQL中的“like”查询一样从序列的开头搜索字符串。。那怎么办呢?我想你明白了。@Waqas将javascript的“indexOf”改为“match”。。然后删除条件“>=0”读取此@Waqas更新了代码。如果这是您的答案,请检查答案:)您在javascript中是否有任何错误?因为没有工作?我试过了,我的目的是工作不,我没有得到任何错误。但当我在文本框中输入字符串时,它什么也没做
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField DataField="ClassName" HeaderText="Class Name" />
<asp:BoundField DataField="PerWeekClass" HeaderText="Week Classes" />
<asp:BoundField DataField="SubID" visible="false" />
</Columns>
</asp:GridView>
<asp:TextBox ID="txt" runat="server" onkeyup="filter(this);"></asp:TextBox>
<br />
<asp:GridView ID="gv" runat="server" Width="100%" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Filter" />
<asp:BoundField DataField="Name" />
</Columns>
</asp:GridView>
function filter(txt) {
var grid = document.getElementById("<%=gv.ClientID %>");
var row = grid.rows.length;
var filterValue = txt.value.toLowerCase();
var splitter = filterValue.split(' ');
var display = '';
var currentRowValue = '';
for (var i = 1; i < row; i++) {
display = 'none';
currentRowValue = grid.rows[i].cells[0].innerText;
for (var j = 0; j < splitter.length; j++) {
if (currentRowValue.toLowerCase().startsWith(splitter[j]))
display = '';
else {
display = 'none';
break;
}
}
grid.rows[i].style.display = display;
}
}
protected void Page_Load(object sender, EventArgs e)
{
// Check
if (!IsPostBack)
{
// Varaible
DataTable dt = new DataTable();
dt.Columns.Add("Filter");
dt.Columns.Add("Name");
// Add
dt.Rows.Add("Do", "Doraemon");
dt.Rows.Add("No", "Nobita");
dt.Rows.Add("Si", "Sizuka");
dt.Rows.Add("Sin", "Sinyu");
// Bind
gv.DataSource = dt;
gv.DataBind();
}
}
ele = table.rows[r].innerHTML.replace(/<[^>]+>/g, "");
ele = table.rows[r].cells[0].innerHTML.replace(/<[^>]+>/g, "");