您的位置:首页 > 编程语言 > ASP

利用ICallbackEventHandler接口实现无刷新的方法(2)

2006-10-10 09:47 756 查看
ICallbackEventHandler 用于指示控件可以作为服务器的回调事件的目标,为任何需要接收回调事件的自定义控件实现
ICallbackEventHandler 接口.公开成员有:
 
string  GetCallbackResult  返回以控件为目标的回调事件的结果。 
void   RaiseCallbackEvent  处理以控件为目标的回调事件。 

//////////////////////////////////////返回值的错误会导致程序不能正常运行.

创建实现客户端回调的 ASP.NET 页与创建任何 ASP.NET 页类似,但也有些不同。例如,该页必须执行以下操作:
实现 ICallbackEventHandler 接口。可以向任何 ASP.NET 网页添加此接口声明。
包括一个实现 RaiseCallbackEvent 接口的方法。此方法将由回调来调用,然后它将向 clientCallback 函数返
回一个字符串。

实现 ICallbackEventHandler 接口的控件的示例包括 GridView、DetailsView 和 TreeView 控件。当回调
事件以实现了 ICallbackEventHandler 接口的控件为目标时,将把事件变量作为参数传递来调用
RaiseCallbackEvent 方法以处理该事件,并且 GetCallbackResult 方法返回回调的结果。

//创建服务器代码回调方法
//在服务器代码中,必须创建实现 RaiseCallbackEvent 接口的方法。该方法使用一个字符串参数,
//而不是事件处理程序常用的那两个常见参数。该方法也返回一个字符串。
//该方法的部分内容可能与下面的代码示例类似。
public String RaiseCallbackEvent(String eventArgument As String)
{
    return eventArgument + " new value";
}
 
//创建客户端脚本函数
发送回调
发送回调的函数在服务器代码中生成。实际回调由任何页都可使用的、
实现 ICallbackEventHandler 接口的库函数执行。通过调用页的 GetCallbackEventReference 方法,
可获取对该库函数的引用。然后动态生成一个客户端函数,该函数包含对从
GetCallbackEventReference 方法之一返回的值的调用。向该方法传递以下内容:
对页的一个引用(在 C# 中为 this,在 Visual Basic 中为 Me)、传递数据时所依据的参数名称、
将接收回调数据的客户端脚本函数的名称,以及传递所需的任何上下文的参数。

生成函数之后,通过调用 RegisterClientScriptBlock 方法将其插入到页中。

下面的代码示例演示如何动态创建一个名为 CallServer 的函数,该函数然后会调用回调。

void Page_Load(object sender, EventArgs e)
{
    String cbReference = Page.GetCallbackEventReference(this, "arg",
        "ReceiveServerData", "context");
    String callbackScript = "function CallServer(arg, context) {" +
        cbReference + "; }";
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
        "CallServer",  callbackScript, true);
}

接收回调
可以编写在页中静态接收回调的客户端函数。该函数的名称必须与在 GetCallbackEventReference 方
法调用中传递的名称相匹配。接收函数接受两个字符串值:一个用于返回值,另一个(可选)用于从服务器
传回的上下文值。

该函数可能与下面的代码示例类似。
<script type="text/javascript">
function ReceiveServerData(rvalue, context)
{
    span1.innerText = "Return value = " + rvalue;
}
</script>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息