VS.NET - ASP.NET 2.0 - A Simple Script Callback example written in VB.Net
Synopsis:
ASP.NET 2.0 introduced and AJAX like feature called Script Callbacks. This allows a webpage to execute serverside code and update a webpage without refreshing the entire screen. Listed below is my first Script Callback project. It simply returns the server time or available server memory on a button click without a full refresh of the page. While the functionality of this example is relatively useless, I think the code serves as a good first example at Script Callbacks using VB.net.
For information on Script Callbacks:
More info from Microsoft:I believe there may be some bugs in the vb.net code listed here
Some more info from Microsoft
Atlas,AJAX and script CallBack blog post
Solution:
MarkUpCode
Code Behind
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="CallBackSample" %>
<!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>Sample Script Callback</title>
<script type="text/javascript">
function ReceiveServerData(arg, context)
{
document.getElementById('lblResults').innerText = arg;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Server Time" onclick="CallServer('time','')" />
<input id="Button2" type="button" value="Server Memory" onclick="CallServer('mem','')" /><br />
<br />
<asp:Label ID="lblResults" runat="server" BorderColor="Maroon" BorderWidth="1px" ForeColor="Red"
Width="232px"></asp:Label><br />
</div>
</form>
</body>
</html>
Code Behind
Partial Class CallBackSample
Inherits System.Web.UI.Page
Implements ICallbackEventHandler
Private _callbackArg As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim cm As ClientScriptManager = Page.ClientScript
Dim cbReference As String
cbReference = cm.GetCallbackEventReference(Me, "arg", _
"ReceiveServerData", "context")
Dim callbackScript As String
callbackScript = "function CallServer(arg, context)" & _
"{" & cbReference & "; }"
cm.RegisterClientScriptBlock(Me.GetType(), _
"CallServer", callbackScript, True)
End Sub
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
_callbackArg = eventArgument
End Sub
Public Function GetCallbackResult() As String _
Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
Select Case _callbackArg
Case "time"
Return My.Computer.Clock.LocalTime.ToString()
Case "mem"
Return (My.Computer.Info.AvailablePhysicalMemory / 1024).ToString() & "K"
Case Else
Return _callbackArg
End Select
End Function
End Class