我在onkeyup
上为Page_Load
添加了TextBox
个属性。我有它,所以它能够运行JavaScript函数。我想知道我是否可以更改它以在代码隐藏文件中运行方法。我尝试了this.methodname
,但它要求输入一个字符串作为参数。
问题TextBox
:
<asp:TextBox ID="txtCurrBlk" runat="server" onkeyup="txtUpdate()"
style="width:80px" Text='<%#Eval("currentBlack") %>'
AutoPostBack="true" />
在此C#文件中的page_load
下:
txtCurrBlkTotal.Attributes.Add("onKeyUp", "CallScript(this)");
我想在文件后面的相同代码中运行的函数:
protected void keypressUpdateTotals()
{
readingTextChanged();
updateTotals();
}
所以onkeyup
目前会运行我设置的任何JavaScript函数,但是我需要在代码隐藏中运行一个方法。
答案 0 :(得分:0)
TextBox
控件只有服务器端TextChanged
事件,您无法轻松制作&#34; custom&#34;服务器端事件。但是,您可以通过调用CallScript()
函数让您的JavaScript _postback()
函数回发到服务器。
将OnTextChanged
属性添加到TextBox
控件中(我建议同时删除AutoPostBack
属性,但这取决于您):
<asp:TextBox ID="txtCurrBlkTotal" runat="server"
onkeyup="CallScript(this)"
OnTextChanged="txtCurrBlk_TextChanged" />
我已在此处直接添加了onkeyup
,但如果您愿意,可以使用txtCurrBlkTotal.Attributes.Add("onKeyUp", "CallScript(this)");
。
现在,在CallScript()
函数的末尾,为您的_postback()
控件调用TextBox
函数:
function CallScript(sender) {
//...
__doPostBack("<%= txtCurrBlkTotal.ClientID %>", "");
}
每次触发onKeyUp
事件时,都会回发到服务器。您可以在TextChanged
事件中捕获并处理该事件:
protected void txtCurrBlkTotal_TextChanged(object sender, EventArgs e) {
keypressUpdateTotals();
}
或者,您可以让JavaScript CallScript()
函数对代码隐藏keypressUpdateTotals()
函数进行Ajax调用。我认为这是一个更好的解决方案,但你可以自己决定。