我使用textbox从数据库中搜索项目,并将它们加载到gridview和
我使用custom paging在gridview上显示每页只显示25条记录
我发现java 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>并称之为:
<input name="txtTerm" onkeyup="filter2(this, '<%=GridView1.ClientID %>')" placeholder="Search" type="text"/>此功能搜索记录来自激活页面,显然将在服务器端完成整个数据库的搜索,我使用了asp textbox。
但是我需要onkeyup="filter2(this, '<%=GridView1.ClientID %>')"事件在我的asp textbox e-g中
<asp:TextBox ID="txtSearch" onkeyup="filter2(this, '<%=GridView1.ClientID %>')" placeholder="Search" runat="server" AutoPostBack="True" OnTextChanged="txtSearch_TextChanged" />但是asp不允许我那样做.
我需要你的帮助才能做到这一点。
提前谢谢。
编辑:
我需要在单个textbox中同时搜索(客户端、服务器端),因为
客户端允许从已加载的gridview和
服务器端允许在单击时从数据库中搜索
发布于 2015-09-10 07:35:04
您可以通过后面的代码添加呈现的输入控件的client属性:
protected void Page_Load(object sender, EventArgs e)
{
txtSearch.Attributes.Add("onkeyup", string.Format("filter2(this,'{0}')",GridView1.ClientID)");
}编辑:
在@Lukas的正确评论之后,我们应该说,主要的问题是在textbox we控件中使用<%=GridView1.ClientID %>内联表达式:
<%= %>将直接将字符串写入响应流,这是在构建服务器控件之后发生的,因此将呈现为字符串,而不是解析。
例如:
<asp:Label runat="server" ID="label">test</asp:Label>
<asp:TextBox runat="server" ID="txt" Text="<%# label.ID %>" onkeyup="alert('<%: label.ID %>')"></asp:TextBox>这就是我们的产出:

https://stackoverflow.com/questions/32495476
复制相似问题