我正在使用 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
例如
<asp:TextBox ID="txtSearch" onkeyup="filter2(this, '<%=GridView1.ClientID %>')" placeholder="Search" runat="server" AutoPostBack="True" OnTextChanged="txtSearch_TextChanged" />
但是 asp 不允许我这样做..
我需要你的帮助才能实现这一目标。
提前致谢。
编辑:
我需要在单个 textbox
中搜索(客户端、服务器端)
因为
客户端允许从 gridview 的加载页面和
服务器端允许在点击时从数据库中搜索
最佳答案
您可以通过隐藏代码添加渲染输入控件的客户端属性:
protected void Page_Load(object sender, EventArgs e)
{
txtSearch.Attributes.Add("onkeyup", string.Format("filter2(this,'{0}')",GridView1.ClientID)");
}
编辑:
在@Lukas 的正确评论之后,我们应该说主要问题是使用 <%=GridView1.ClientID %>
文本框 webcontrol 内的内联表达式:
<%= %> 会将字符串直接写入响应流,这发生在构建服务器控件之后,因此将呈现为字符串而不进行解析。
例如:
<asp:Label runat="server" ID="label">test</asp:Label>
<asp:TextBox runat="server" ID="txt" Text="<%# label.ID %>" onkeyup="alert('<%: label.ID %>')"></asp:TextBox>
这是我们的输出:
关于javascript - 如何从 asp :textbox? 调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32495476/