回调的入门理解

回调可以在回发的前提下,让客户端执行服务器端代码,从而提高用户体验。

 

如果一个页面实现回调,那么首先就得实现icallbackeventhandler接口的raisecallbackevent 过程和 getcallbackresult 函数。

raisecallbackevent 处理客户端的请求。

getcallbackresult 将服务器端的处理结果以字符串的形式返回给客服端。

 

在客服端的定义两个函数:

1.接受服务器端处理结果的接受函数。

2. 向服务器端发出请求的事件驱动函数,事件驱动函数里面必须包含一个在服务端定义的javascript 函数。最后由服务器定义的javascript 函数 去调用 clientscript 的getcallbackeventreference 函数 生成的 javacript 函数。

 另外在这里有一个非常重要的对象得说明,clientscript 的getcallbackeventreference 函数,

它是客户端和服务器端的信息使者,也就是说它去驱动服务器的响应,给服务器端提供相关的数据。

 

 

下面是详细的是代码:

html 部分:

   <%@ Page Language="VB" AutoEventWireup="false" CodeFile="test_callback.aspx.vb" Inherits="test_callback" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script language ="javascript" type ="text/javascript" >
      function callservicefunction()
      {
         var c_c=document.getElementById ("<%=me.listbox1.clientid %>");
         var select_value=c_c.options[c_c.selectedIndex].value ;
      
        
         callserver(select_value);
      }
     
      function receiveservicedata(result)
      {
         var c_c=document.getElementById ("<%=me.label1.clientid %>");
             c_c.innerText =result;
      }
   
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ListBox ID="ListBox1" runat="server" Height="243px" Width="86px"></asp:ListBox>&nbsp;<br />
        <input id="Button1" style="width: 71px"  onclick ="callservicefunction( )" type="button" value="查找" /><br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label" Width="197px"></asp:Label></div>
    </form>
</body>
</html>

 绑定代码部分:

Imports System.data
Partial Class test_callback
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler

    Dim return_result As String
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return return_result
    End Function

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        return_result = Me.ListBox1.Items(CType(eventArgument, Integer) - 1).Text
    End Sub

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Dim dt As DataTable
        Dim dc As DataColumn
        Dim dc1 As DataColumn
        Dim dr As DataRow
        dt = New DataTable
        dc = New DataColumn("id")
        dc1 = New DataColumn("name")
        dt.Columns.Add(dc)
        dt.Columns.Add(dc1)

        For i As Integer = 0 To 10
            dr = dt.NewRow()
            dr.Item(0) = i + 1
            dr.Item(1) = (i + 1).ToString + "production"
            dt.Rows.Add(dr)
        Next
        Me.ListBox1.DataTextField = "name"
        Me.ListBox1.DataValueField = "id"
        Me.ListBox1.DataSource = dt
      
        Me.ListBox1.DataBind()


    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim callbackscript As String
        Dim cbReference As String
        cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "receiveservicedata", "context")

        callbackscript = " function callserver(arg,context) {" & _
                          cbReference + " };"
        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), _
            "callserver", callbackscript, True)

    

    End Sub
End Class

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值