【www.gdgbn.com--php函数】
由用户触发
callback的一般使用方法还算简单,直接参照msdn的帮助和范例就足够了。但是想要真正用好、用精,或者想开发一些基于callback机制的web组件,那么,就要先深入了解callback的实现机制了。在本文中,teddy将和您一起解析callback的整个调用、反馈机制,相信对于帮助您更好的使用callback,将能有一定的益处
-
在button的 onclick 中写入:
onclick="<%= clientscript.getcallbackeventreference(this,"document.getelementbyid("txtusername").value","oncallback",null) %>" 在网页特效中编写相应的函数
function oncallbacknobtn()在 xxx.asp教程x.cs 中继承 icallbackeventhandler 并实现其方法。
{
callserver(document.getelementbyid("txtusername").value,"");
}
public partial class webpage_callbackbtn : system.web.ui.page, icallbackeventhandler
{
protected string struserinfo; //callback最终得到的信息
protected void page_load(object sender, eventargs e)
{
}
#region icallbackeventhandler 成员
public string getcallbackresult()
{
return struserinfo;
}
public void raisecallbackevent(string eventargument) //服务端的处理函数
{
if (eventargument == "") return;
system.data.sqlclient.sqlconnection conn = new system.data.sqlclient.sqlconnection();
conn.connectionstring = system.web.configuration.webconfigurationmanager.connectionstrings["nowthwindconnectionstring"].connectionstring;
sqlcommand cmd = new sqlcommand();
cmd.commandtype = commandtype.text;
cmd.parameters.add("@firstname", sqldbtype.nvarchar, 10)
.value = eventargument;
cmd.commandtext = "select employeeid, lastname from employees where firstname=@firstname";
cmd.connection = conn;
sqldatareader reader;
connectionstate previousconnectionstate = conn.state;
try
{
if (conn.state == connectionstate.closed)
{
conn.open();
}
reader = cmd.executereader();
using (reader)
{
while (reader.read())
{
// process sprocresults datareader here.
struserinfo += reader[0];
}
}
struserinfo += "###";
}
finally
{
if (previousconnectionstate == connectionstate.closed)
{
conn.close();
}
}
}
#endregion
}
raisecallbackevent() 负责接收 client 端的javascript 所传送过来的参数,以此参数查询数据库教程中的数据,最后由 getcallbackresult() 将结果传回 client端的javascript,最后将结果显示出来。 完成 o(∩_∩)o~ 现在在 textbox 中输入 nancy 则会显示 1### 。如果输入的名字在数据库中没有则不显示,(我的只是完成了《圣殿祭司的asp.net教程》中的这一节的一部分)
-
如上 3. 在 xxx.aspx.cs 中继承 icallbackeventhandler 并实现其方法。
在 javascript中添加
<script type="text/javascript">在 aspx.cs 中动态注册 javascript
function dosearch(){
var txtfirstname= document.getelementbyid("txtusername");
callserver(txtfirstname.value,"");
}
function receiveserverdata(txtuserinfo)
{
results.innertext=txtuserinfo;
}
var int=self.setinterval("dosearch()",5000);
</script>
protected void page_load(object sender, eventargs e)完成
{
string cbreference = page.clientscript.getcallbackeventreference(this,"arg", "receiveserverdata", null);
//page.clientscript.getcallbackeventreference(this,"arg", "receiveserverdata", null);
string callbackscript;
callbackscript = "function callserver(arg,context){" + cbreference + "};";
//string callbackscript = "function callserver(arg,context){webform_docallback("__page",arg,receiveserverdata,null,null,false)};";
page.clientscript.registerclientscriptblock(this.gettype(), "callserver123", callbackscript, true);
}