<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Client Side Web Development</title><link>http://forums.asp.net/130.aspx</link><description>Client-side programming discussions, including CSS, DHTML, JScript/Javascript, etc. &lt;a href="http://aspadvice.com/SignUp/list.aspx?l=18&amp;c=16" target="_blank"&gt;Email List&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: First callback works, second callback gets error</title><link>http://forums.asp.net/thread/1210394.aspx</link><pubDate>Sun, 26 Feb 2006 21:14:30 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1210394</guid><dc:creator>codequest</dc:creator><author>codequest</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1210394.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=130&amp;PostID=1210394</wfw:commentRss><description>&lt;p&gt;In review,&amp;nbsp;looking for a way around this, I&amp;nbsp;asked&amp;nbsp;myself why the program should do two call backs with no user intervention in between...and&amp;nbsp;recognized that was&amp;nbsp;not a particularly useful&amp;nbsp;design in the first place!&lt;/p&gt;
&lt;p&gt;So this problem is solved by making that "feature" go away.&amp;nbsp; Which is a good thing, since it's a known MS bug and there doesn't seem to be a fix right now.&amp;nbsp;&amp;nbsp; For the situation in which two call backs in quick succession because of, for example, two user clicks, there are some answers in the link above.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: First callback works, second callback gets error</title><link>http://forums.asp.net/thread/1209375.aspx</link><pubDate>Fri, 24 Feb 2006 23:12:36 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1209375</guid><dc:creator>codequest</dc:creator><author>codequest</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1209375.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=130&amp;PostID=1209375</wfw:commentRss><description>&lt;p&gt;Probably should have done a search first, but the best answers (as of this date) seem to be here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://west-wind.com/weblog/posts/2694.aspx"&gt;http://west-wind.com/weblog/posts/2694.aspx&lt;/a&gt;&amp;nbsp; (feedback at bottom of page)&lt;/p&gt;
&lt;p&gt;and unfortunately, there really isn't a "how to" answer here that fits this situation (far as I can tell...)&lt;/p&gt;
&lt;p&gt;So, still looking...&lt;/p&gt;</description></item><item><title>First callback works, second callback gets error</title><link>http://forums.asp.net/thread/1209211.aspx</link><pubDate>Fri, 24 Feb 2006 20:19:50 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1209211</guid><dc:creator>codequest</dc:creator><author>codequest</author><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1209211.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=130&amp;PostID=1209211</wfw:commentRss><description>&lt;p&gt;The code below represents a "2 round" callback test bench.&amp;nbsp; It does one callback, and then another one.&amp;nbsp;&amp;nbsp; It completes both callbacks.&amp;nbsp; However, in the second round, it produces the following exception:&lt;/p&gt;
&lt;p&gt;------------------------------------------------------------------&lt;br /&gt;line 164&lt;br /&gt;char 13&lt;br /&gt;Error:&amp;nbsp; '__pendingCallbacks[...].async' is null or not an object&lt;br /&gt;URL:&amp;nbsp; (stuff) ................/CallBackTest.aspx&lt;br /&gt;------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;I got a similar error in the full app when I did only one round of callback, which I traced to a variable declaration/scope issue ( %-} javascript newbie..).&amp;nbsp;&amp;nbsp; When I got the same type of error in the "two rounds" of callback, I looked for a similar issue, but did not find it (which doesn't mean it isn't there...)&amp;nbsp;&amp;nbsp; So I tried to replicate it in this test bed, assuming it would work here OK, where there are no mis-declared variables (perhaps a rash assumption...)&amp;nbsp; But the error does occur here, and since the test code is pretty bare (and can be made more bare), I'm out of ideas.&lt;/p&gt;
&lt;p&gt;I've included a test procedure below.&amp;nbsp; I just tested it all the way through&amp;nbsp;and it works and produces the error.&amp;nbsp; Takes literally only a few minutes to setup....&lt;/p&gt;
&lt;p&gt;I would appreciate any suggestions on how to fix this problem, so that I can use these callback techniques in the full app.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;======================&amp;nbsp; TEST PROCEDURE&amp;nbsp; =============================&lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;nbsp; Create a new web site (I'm using VS2005)&lt;br /&gt;&amp;gt;&amp;nbsp; Delete the Default page&lt;br /&gt;&amp;gt;&amp;nbsp; Add a Webform named "CallBackTest" with VB code behind&lt;br /&gt;&amp;gt;&amp;nbsp; Add a Class named "G"&lt;br /&gt;&amp;gt;&amp;nbsp; Add a Javascript file named JScript&lt;br /&gt;&amp;gt;&amp;nbsp; Copy the code sections below (to the appropriate files) to completely replace the contents of four files just added (code behind = 4th file)&lt;br /&gt;&amp;gt;&amp;nbsp; Compile it with debug&lt;br /&gt;&amp;gt;&amp;nbsp; select from the drop down and click the button&lt;/p&gt;
&lt;p&gt;Alerts show the activity moving through the code.&lt;br /&gt;The error occurs near the end, as the code is executing or returning from the second round callback&lt;/p&gt;
&lt;p&gt;=====================&amp;nbsp;&amp;nbsp; THE WEBFORM =====================================&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="CallBackTest.aspx.vb" Inherits="CallBackTest" %&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &lt;/p&gt;
&lt;p&gt;"&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&lt;/a&gt;"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;html xmlns="&lt;a href="http://www.w3.org/1999/xhtml"&gt;http://www.w3.org/1999/xhtml&lt;/a&gt;" &amp;gt;&lt;br /&gt;&amp;lt;head runat="server"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body style="font-family:Sans-Serif;font-size:medium"&amp;gt;&lt;br /&gt;&amp;lt;script src=JScript.js&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;/p&gt;
&lt;p&gt;function StartCallBack(varMessage) {&lt;br /&gt;&amp;nbsp; alert("at start of callback client sender")&lt;br /&gt;&amp;nbsp; var Command = varMessage &lt;br /&gt;&amp;nbsp; var context = new Object();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; context.CommandName = "StartCallBack";&lt;br /&gt;&amp;nbsp; &amp;lt;%=CallBackSenderSetupString%&amp;gt;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;function CallBackHandler(varCallBackResult, varContext) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert("at start of callback client receiver")&lt;br /&gt;&amp;nbsp; if (varContext.CommandName == "StartCallBack" ) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CallBackRouter(varCallBackResult) }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;function onError(message, context) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;alert("Exception :\n" + message);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;select id="Select1" style="z-index: 107; left: 44px; position: absolute; top: 60px"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option&amp;gt;ADD&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option&amp;gt;MOVE&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/select&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input id="TestButton" style="z-index: 104; left: 36px; position: absolute; top: 96px"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="button" value="button" language="javascript" onclick="TestButton_onclick()" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input id="Text2" style="z-index: 106; left: 40px; position: absolute; top: 132px; width: 484px;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="text" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;=====================&amp;nbsp;&amp;nbsp; THE CLASS FILE&amp;nbsp; =====================================&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Imports Microsoft.VisualBasic&lt;/p&gt;
&lt;p&gt;Public Class G&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Shared CBString As String&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Shared Sub CallBackRouter(ByVal varString)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If varString = "ADD" Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CBString = "$CMD$EXTRA$ADD$" &amp;amp; varString &amp;amp; "&amp;nbsp; From the server router sub"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If varString = "MOVE" Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CBString = "$CMD$EXTRA$MOVE$" &amp;amp; varString &amp;amp; "&amp;nbsp;&amp;nbsp; From the server router sub"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If varString = "$ADD$ROUND2" Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CBString = "$ADD$ROUND2$RETURN" &amp;amp; "&amp;nbsp;&amp;nbsp; From the server router sub"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If varString = "$MOVE$ROUND2" Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CBString = "$MOVE$ROUND2$RETURN" &amp;amp; "&amp;nbsp;&amp;nbsp; From the server router sub"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CBString = "INVALID REQUEST"&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;End Class&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;=====================&amp;nbsp;&amp;nbsp; THE VB CODE BEHIND&amp;nbsp; FILE =====================================&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Partial Class CallBackTest&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits System.Web.UI.Page&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Implements ICallbackEventHandler&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public CallBackSenderSetupString As String&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp; this is used to communicate with the client&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Handles Me.Load&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp; callbackStr is translated into Javascript&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CallBackSenderSetupString = Page.ClientScript.GetCallbackEventReference(Me, "Command", _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "CallBackHandler", "context", "onError", False)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp;&amp;nbsp; This receives information from the client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements &lt;/p&gt;
&lt;p&gt;System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp; the eventArgument contains the information from the client "Command" variable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'MsgBox("I'm in 'RaiseCallbackEvent' at the server")&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G.CallBackRouter(eventArgument)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp; This returns information to the client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return G.CBString&amp;nbsp;&amp;nbsp; 'the string has the information from the server side actions&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/p&gt;
&lt;p&gt;End Class&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;=====================&amp;nbsp;&amp;nbsp; THE JAVASCRIPT&amp;nbsp; FILE&amp;nbsp; =====================================&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;function TestButton_onclick() {&lt;br /&gt;var Text1 = document.getElementById("Select1")&lt;br /&gt;//alert("started")&lt;br /&gt;var Text2 = document.getElementById("Text2")&lt;br /&gt;Text2.value = ""&lt;br /&gt;RunTest(Text1.options[Text1.selectedIndex].text)&lt;br /&gt;&amp;nbsp;}&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;function RunTest(varString) {&lt;br /&gt;//alert("calling GetCallBackValue")&lt;br /&gt;wrkVar = GetCallBackValue(varString)&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;function GetCallBackValue(varString) {&lt;br /&gt;alert("initiating callback in GetValue")&lt;br /&gt;wrkvar = StartCallBack(varString) }&lt;/p&gt;
&lt;p&gt;function CallBackRouter(varString) {&lt;br /&gt;alert("in the client router") &lt;br /&gt;if (varString.indexOf("$CMD$EXTRA$ADD") &amp;gt; -1) {DoAddCallBack("$ADD$ROUND2"); return}&lt;br /&gt;if (varString.indexOf("$CMD$EXTRA$MOVE") &amp;gt; -1) {DoMoveCallBack("$MOVE$ROUND2"); return }&lt;/p&gt;
&lt;p&gt;if (varString.indexOf("$ADD$ROUND2") &amp;gt; -1) {DoAdd(varString); return }&lt;br /&gt;if (varString.indexOf("$MOVE$ROUND2") &amp;gt; -1) {DoMove(varString); return }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;function DoAddCallBack(varString) {&lt;br /&gt;var Text2 = document.getElementById("Text2")&lt;br /&gt;Text2.value = "Starting Second Round"&lt;br /&gt;alert ("starting round 2 add callback")&lt;br /&gt;wrkvar = StartCallBack(varString) &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;function DoMoveCallBack(varString) {&lt;br /&gt;var Text2 = document.getElementById("Text2")&lt;br /&gt;Text2.value = "Starting Second Round"&lt;br /&gt;alert ("starting round 2 move callback")&lt;br /&gt;wrkvar = StartCallBack(varString) &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;function DoAdd(varString) {&lt;br /&gt;var Text2 = document.getElementById("Text2")&lt;br /&gt;Text2.value = ""&lt;br /&gt;Text2.value = "DO ADD = " + varString }&lt;/p&gt;
&lt;p&gt;function DoMove(varString) {&lt;br /&gt;var Text2 = document.getElementById("Text2")&lt;br /&gt;Text2.value = ""&lt;br /&gt;Text2.value = "DO MOVE = " + varString }&lt;/p&gt;
&lt;p&gt;==================================================&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>