我可以创建一个运行代码隐藏方法的自定义属性吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以创建一个运行代码隐藏方法的自定义属性吗?相关的知识,希望对你有一定的参考价值。
我在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函数,但我需要它在代码隐藏中运行一个方法。
TextBox
控件只有服务器端TextChanged
事件,你不能轻易地做出“自定义”服务器端事件。但是,您可以通过调用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调用。我认为这是一个更好的解决方案,但你可以自己决定。
以上是关于我可以创建一个运行代码隐藏方法的自定义属性吗?的主要内容,如果未能解决你的问题,请参考以下文章
ServiceStack.OrmLite:索引的自定义命名可以在代码中完成吗?