[英]How to call javascript function from asp:textbox?
我正在使用textbox
从数据库中搜索项目并将其加载到gridview
,
我在gridview
上使用了custom paging
,每页仅显示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
但是我在asp textbox
需要onkeyup="filter2(this, '<%=GridView1.ClientID %>')"
事件,例如
<asp:TextBox ID="txtSearch" onkeyup="filter2(this, '<%=GridView1.ClientID %>')" placeholder="Search" runat="server" AutoPostBack="True" OnTextChanged="txtSearch_TextChanged" />
但是asp不允许我这样做。
我需要您的帮助才能实现这一目标。
提前致谢。
编辑:
我需要在单个textbox
同时搜索(客户端,服务器端),因为
客户端允许从gridview的加载页面搜索
服务器端允许在单击时从数据库中搜索
您可以通过下面的代码添加呈现的输入控件的client属性:
protected void Page_Load(object sender, EventArgs e)
{
txtSearch.Attributes.Add("onkeyup", string.Format("filter2(this,'{0}')",GridView1.ClientID)");
}
编辑:
在@Lukas正确评论之后,我们应该说主要问题是在文本框webcontrol中使用<%=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>
这就是我们的输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.