<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Ajax</title>
        <link>http://onteorasoftware.com/category/3.aspx</link>
        <description>Ajax</description>
        <language>en-US</language>
        <copyright>Ken Tucker</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>VB Cascading Drop Down Example</title>
            <link>http://blog.onteorasoftware.net/archive/2008/04/01/vb-cascading-drop-down-example.aspx</link>
            <description>&lt;p&gt;
Here is simple VB example of the AjaxToolkit's CascadingDropDown extender.  For this example I use the CarsService.Xml found in the AjaxToolkits sample site.  The xml file needs to be placed in the App_data directory
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Here is the Pages Html
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;font size="2"&gt;
&lt;p&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "&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;br /&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;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&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;asp:ScriptManager ID="sm1" EnablePageMethods="true" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                    Make&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;asp:DropDownList ID="DropDownList1" runat="server" Width="341px"&amp;gt;&lt;br /&gt;
                    &amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                    Model&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;asp:DropDownList ID="DropDownList2" runat="server" Width="341px"&amp;gt;&lt;br /&gt;
                    &amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                    Color&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td&amp;gt;&lt;br /&gt;
                    &amp;lt;asp:DropDownList ID="DropDownList3" runat="server"  Width="341px"&amp;gt;&lt;br /&gt;
                    &amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;
                &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;cc1:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="DropDownList1"&lt;br /&gt;
            Category="Make"  PromptText="Please select a make"  LoadingText="[Loading makes...]" ServiceMethod="GetDropDownContents"&amp;gt;&lt;br /&gt;
    &amp;lt;/cc1:CascadingDropDown&amp;gt;&lt;br /&gt;
    &amp;lt;cc1:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="DropDownList2"&lt;br /&gt;
            Category="Model" PromptText="Please select a model" LoadingText="[Loading models...]"&lt;br /&gt;
            ServiceMethod="GetDropDownContents" ParentControlID="DropDownList1"&amp;gt;&lt;br /&gt;
    &amp;lt;/cc1:CascadingDropDown&amp;gt;&lt;br /&gt;
    &amp;lt;cc1:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="DropDownList3"&lt;br /&gt;
            Category="Color" PromptText="Please select a color" LoadingText="[Loading colors...]"&lt;br /&gt;
            ServiceMethod="GetDropDownContents"&lt;br /&gt;
            ParentControlID="DropDownList2"&amp;gt;&lt;br /&gt;
    &amp;lt;/cc1:CascadingDropDown&amp;gt;&lt;br /&gt;
    &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;/p&gt;
&lt;p&gt;
In the code behind I am using a shared class so I only have to load the xml document once.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Imports System.Xml
&lt;/p&gt;
&lt;p&gt;
Partial Class _Default&lt;br /&gt;
    Inherits System.Web.UI.Page
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;System.Web.Services.WebMethod()&amp;gt; _&lt;br /&gt;
&amp;lt;System.Web.Script.Services.ScriptMethod()&amp;gt; _&lt;br /&gt;
 Public Shared Function GetDropDownContents(ByVal knownCategoryValues As String, ByVal category As String) As AjaxControlToolkit.CascadingDropDownNameValue()&lt;br /&gt;
        Dim knownCategoryValuesDictionary As StringDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)
&lt;/p&gt;
&lt;p&gt;
        Return AjaxControlToolkit.CascadingDropDown.QuerySimpleCascadingDropDownDocument(CarsInfo.Document, CarsInfo.Hierarchy, knownCategoryValuesDictionary, category)&lt;br /&gt;
    End Function&lt;br /&gt;
End Class
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
Public Class CarsInfo&lt;br /&gt;
    Private Shared _Doc As XmlDocument&lt;br /&gt;
    Private Shared _load As Boolean = True
&lt;/p&gt;
&lt;p&gt;
    Public Shared ReadOnly Property Document() As XmlDocument&lt;br /&gt;
        Get&lt;br /&gt;
            If _load Then&lt;br /&gt;
                _Doc = New XmlDocument&lt;br /&gt;
                _Doc.Load(HttpContext.Current.Server.MapPath("~/App_Data/CarsService.xml"))&lt;br /&gt;
                _load = False&lt;br /&gt;
            End If&lt;br /&gt;
            Return _Doc&lt;br /&gt;
        End Get&lt;br /&gt;
    End Property
&lt;/p&gt;
&lt;p&gt;
    Public Shared ReadOnly Property Hierarchy() As String()&lt;br /&gt;
        Get&lt;br /&gt;
            Return New String() {"make", "model"}&lt;br /&gt;
        End Get&lt;br /&gt;
    End Property&lt;br /&gt;
End Class
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;/font&gt;
&lt;img src="http://blog.onteorasoftware.net/aggbug/29.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2008/04/01/vb-cascading-drop-down-example.aspx</guid>
            <pubDate>Tue, 01 Apr 2008 15:03:31 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/29.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2008/04/01/vb-cascading-drop-down-example.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/29.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Use the AjaxSlideShowExtender to show pictures in a directory</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/use-the-ajaxslideshowextender-to-show-pictures-in-a-directory.aspx</link>
            <description>&lt;h3 align="center"&gt;Use the AjaxSlideShowExtender to show pictures in a directory&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
The AjaxSlideShowExtender will automatically display a slide show in an image control.  The slide show extender calls a shared function to get a list of slides.  This tip shows hows to create slide of all the images in a folder. 
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;p&gt;
The Pages HTML
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "&lt;a href="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&lt;/a&gt;"&amp;gt;&lt;br /&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;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&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server" /&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div style="text-align: center"&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Image ID="Image1" runat="server" Height="300" Style="border: 1px solid black;&lt;br /&gt;
                    width: auto" ImageUrl="images/ajax.jpg"&lt;br /&gt;
                    AlternateText="Ajax" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Label runat="Server" ID="imageLabel1" /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Button runat="Server" ID="prevButton" Text="Prev" Font-Size="Larger" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Button runat="Server" ID="playButton" Text="Play" Font-Size="Larger" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Button runat="Server" ID="nextButton" Text="Next" Font-Size="Larger" /&amp;gt;&lt;br /&gt;
                &amp;lt;ajaxToolkit:SlideShowExtender ID="slideshowextend1" runat="server" TargetControlID="Image1"&lt;br /&gt;
                    SlideShowServiceMethod="GetPictures" AutoPlay="true" ImageDescriptionLabelID="imageLabel1"&lt;br /&gt;
                    NextButtonID="nextButton" PlayButtonText="Play" StopButtonText="Stop" PreviousButtonID="prevButton"&lt;br /&gt;
                    PlayButtonID="playButton" Loop="true" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Label ID="lblError" runat="server" /&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &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;
The Code Behind File
&lt;/p&gt;
&lt;p&gt;
Imports System.IO&lt;br /&gt;
Partial Class _Default&lt;br /&gt;
    Inherits System.Web.UI.Page
&lt;/p&gt;
&lt;p&gt;
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;
        MyData.ImagePath = Server.MapPath("~/Images")&lt;br /&gt;
        Dim strUrl As String = Request.Url.ToString
&lt;/p&gt;
&lt;p&gt;
        MyData.Url = strUrl.Substring(0, strUrl.LastIndexOf("/")) &amp;amp; "/Images/"&lt;br /&gt;
    End Sub
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
    &amp;lt;System.Web.Services.WebMethod()&amp;gt; _&lt;br /&gt;
&amp;lt;System.Web.Script.Services.ScriptMethod()&amp;gt; _&lt;br /&gt;
Public Shared Function GetPictures() As AjaxControlToolkit.Slide()&lt;br /&gt;
        Dim di As New DirectoryInfo(MyData.ImagePath)&lt;br /&gt;
        Dim s(di.GetFiles.Length - 1) As AjaxControlToolkit.Slide&lt;br /&gt;
        Dim x As Integer = 0&lt;br /&gt;
        For Each fi As FileInfo In di.GetFiles()&lt;br /&gt;
            s(x) = New AjaxControlToolkit.Slide(MyData.Url &amp;amp; fi.Name, "", Path.GetFileNameWithoutExtension(fi.Name))&lt;br /&gt;
            x += 1&lt;br /&gt;
        Next&lt;br /&gt;
        Return s&lt;br /&gt;
    End Function&lt;br /&gt;
End Class
&lt;/p&gt;
&lt;p&gt;
Public Class MyData&lt;br /&gt;
    Private Shared _Path As String&lt;br /&gt;
    Private Shared _Url As String
&lt;/p&gt;
&lt;p&gt;
    Public Shared Property ImagePath() As String&lt;br /&gt;
        Get&lt;br /&gt;
            Return _Path&lt;br /&gt;
        End Get&lt;br /&gt;
        Set(ByVal value As String)&lt;br /&gt;
            _Path = value&lt;br /&gt;
        End Set&lt;br /&gt;
    End Property
&lt;/p&gt;
&lt;p&gt;
    Public Shared Property Url() As String&lt;br /&gt;
        Get&lt;br /&gt;
            Return _Url&lt;br /&gt;
        End Get&lt;br /&gt;
        Set(ByVal value As String)&lt;br /&gt;
            _Url = value&lt;br /&gt;
        End Set&lt;br /&gt;
    End Property&lt;br /&gt;
End Class
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;img src="http://blog.onteorasoftware.net/aggbug/64.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/use-the-ajaxslideshowextender-to-show-pictures-in-a-directory.aspx</guid>
            <pubDate>Mon, 17 Sep 2007 01:35:47 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/64.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/use-the-ajaxslideshowextender-to-show-pictures-in-a-directory.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/64.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Getting the Back Button to work with Ajax</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/getting-the-back-button-to-work-with-ajax.aspx</link>
            <description>&lt;h3 align="center"&gt;Getting the Back Button to work with Ajax&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;
Microsoft's Asp.Net Ajax makes it easy to create a web page that can refresh itself with out posting back.  Unfortunately when a web page updates itself using ajax the user is unable to press the back button to get back to what is was on the page before.  In this article I will first show to create an ajax enable website which uses a webservice to update itself. Then we will make the back button work properly.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
First create a new AjaxEnabledWebsite and lets start off by adding a webservice to the Project named Customers.  This web service will connect to the northwind database and return the company name for a customer id.  To make this webservice work with ajax we have to make the web service a ScriptService.  
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;hr /&gt;
&lt;font size="2" color="#0000ff"&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;Imports System.Web&lt;br /&gt;
Imports System.Web.Services&lt;br /&gt;
Imports System.Web.Services.Protocols&lt;br /&gt;
Imports System.Data.SqlClient&lt;br /&gt;
Imports System.Data&lt;br /&gt;
Imports System.Text&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;&amp;lt;WebService(Namespace:="&lt;a href="http://tempuri.org/"&gt;http://tempuri.org/&lt;/a&gt;")&amp;gt; _&lt;br /&gt;
&amp;lt;WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)&amp;gt; _&lt;br /&gt;
&amp;lt;Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()&amp;gt; _&lt;br /&gt;
&amp;lt;Microsoft.Web.Script.Services.ScriptService()&amp;gt; _&lt;br /&gt;
Public Class Customers&lt;br /&gt;
    Inherits System.Web.Services.WebService&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;    &amp;lt;WebMethod()&amp;gt; _&lt;br /&gt;
    Public Function GetName(ByVal strID As String) As String&lt;br /&gt;
        Dim strOut As New StringBuilder&lt;br /&gt;
        Dim connStr As String&lt;br /&gt;
        connStr = "Server = .;Database = Northwind; integrated security=sspi;"&lt;br /&gt;
        Dim conn As New SqlConnection(connStr)&lt;br /&gt;
        Dim cmd As New SqlCommand&lt;br /&gt;
        Try&lt;br /&gt;
            conn.Open()&lt;br /&gt;
            If strID &amp;lt;&amp;gt; "" Then&lt;br /&gt;
                cmd = New SqlCommand("Select CompanyName From Customers where Customerid = @CustomerID", conn)&lt;br /&gt;
                cmd.Parameters.AddWithValue("@CustomerID", strID)&lt;br /&gt;
                strOut.Append("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;")&lt;br /&gt;
                strOut.Append(cmd.ExecuteScalar.ToString())&lt;br /&gt;
                strOut.Append("&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;")&lt;br /&gt;
            End If&lt;br /&gt;
        Catch ex As Exception&lt;br /&gt;
            strOut.Append("&amp;lt;H1&amp;gt;Database Error&amp;lt;/H1&amp;gt;")&lt;br /&gt;
        Finally&lt;br /&gt;
            conn.Close()&lt;br /&gt;
        End Try&lt;br /&gt;
        Return strOut.ToString&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;    End Function&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;End Class&lt;br /&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#000000" /&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;p&gt;
We also have to make a change to the httpHandlers section of the web.config file for this to work.&lt;br /&gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
    &amp;lt;httpHandlers&amp;gt;&lt;br /&gt;
      &amp;lt;remove verb="*" path="*.asmx"/&amp;gt;&lt;br /&gt;
      &amp;lt;add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/&amp;gt;&lt;br /&gt;
      &amp;lt;add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" validate="false"/&amp;gt;&lt;br /&gt;
    &amp;lt;/httpHandlers&amp;gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;br /&gt;
Lets set up default.aspx to use the webservice for updating its content.  First we have to register the webservice with the pages script manager.
&lt;/p&gt;
&lt;p&gt;
        &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;Services&amp;gt;&lt;br /&gt;
            &amp;lt;asp:ServiceReference Path="~/Customers.asmx" /&amp;gt;&amp;lt;/Services&amp;gt;&lt;br /&gt;
        &amp;lt;/asp:ScriptManager&amp;gt;
&lt;/p&gt;
&lt;p&gt;
Now we need to make a callback function in java script for the web service.  This function will display the results.
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       function displayName(results) &lt;br /&gt;
        {      &lt;br /&gt;
            $get("CompanyName").innerHTML = results;&lt;br /&gt;
        }        &lt;br /&gt;
    &amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Of course we have to add a few controls to the form to display the data.  Here is the html for default.aspx.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "&lt;a href="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&lt;/a&gt;"&amp;gt;&lt;br /&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;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       function displayName(results) &lt;br /&gt;
        {      &lt;br /&gt;
            $get("CompanyName").innerHTML = results;&lt;br /&gt;
        }        &lt;br /&gt;
    &amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;Services&amp;gt;&lt;br /&gt;
            &amp;lt;asp:ServiceReference Path="~/Customers.asmx" /&amp;gt;&amp;lt;/Services&amp;gt;&lt;br /&gt;
        &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;asp:Label ID="Label1" runat="server" Text="Label"&amp;gt;&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
            &amp;lt;table&amp;gt;&lt;br /&gt;
                &amp;lt;tr&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                        &amp;lt;asp:DataList ID="DataList1" runat="server" DataKeyField="CustomerID" DataSourceID="SqlDataSource1"&amp;gt;&lt;br /&gt;
                            &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
                                &amp;lt;a href="javascript:Customers.GetName('&amp;lt;%# Eval("CustomerID") %&amp;gt;', displayName)"&amp;gt;&lt;br /&gt;
                                    &amp;lt;%# Eval("CustomerID") %&amp;gt;&lt;br /&gt;
                                &amp;lt;/a&amp;gt;&lt;br /&gt;
                                &amp;lt;br /&amp;gt;&lt;br /&gt;
                            &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
                        &amp;lt;/asp:DataList&amp;gt;&lt;br /&gt;
                        &amp;lt;asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="&amp;lt;%$ ConnectionStrings:NorthWindConnectionString %&amp;gt;"&lt;br /&gt;
                            SelectCommand="SELECT [CustomerID] FROM [Customers]"&amp;gt;&amp;lt;/asp:SqlDataSource&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td style='vertical-align:top; width: 50%;'&amp;gt;&lt;br /&gt;
                        &amp;lt;div id="CompanyName" &amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &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;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;hr /&gt;
On the page we have a label lblNow which I use for displaying the time the page was displayed.  Here is the code behind file which updates the label&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
Partial Class _Default&lt;br /&gt;
    Inherits System.Web.UI.Page 
&lt;p&gt;
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;
        lblNow.Text = Now.ToLongTimeString&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
So if we run the project you will see a list of the northwind product categories.  When you click on one of the customer id it will call a java script function which will display the company name.  You can see by the fact the time is not changing in the label the page is not posting back.
&lt;/p&gt;
&lt;p&gt;
The browsers back button remembers when a webpage loads, posts back, or the page loaded in an IFrame changes.  So for the back button to work with ajax we need to add a hidden IFrame to the page.  The trick here is to get the page we navigate to in the iframe to update our webpage.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Add a new webpage to the project named History.aspx.  In the call back function we are using parent.document to change the div on the main form. Here is the html for the page.&lt;br /&gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="history.aspx.vb" Inherits="history" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "&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;br /&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;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
        function GetID()&lt;br /&gt;
        {&lt;br /&gt;
            var url=window.location.href;&lt;br /&gt;
            var idstring=url.split("?")[1];
&lt;/p&gt;
&lt;p&gt;
            if(!idstring)&lt;br /&gt;
                return null;
&lt;/p&gt;
&lt;p&gt;
            idstring=idstring.substr(("ID=").length);&lt;br /&gt;
            idstring=unescape(idstring);&lt;br /&gt;
            return idstring;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        function displayResult(results)&lt;br /&gt;
        {&lt;br /&gt;
            parent.document.all.item("CompanyName").innerHTML = results;&lt;br /&gt;
        }&lt;br /&gt;
       &lt;br /&gt;
        function body_onload()&lt;br /&gt;
        {&lt;br /&gt;
         var idstring=GetID();&lt;br /&gt;
          if(idstring)&lt;br /&gt;
          {&lt;br /&gt;
             Customers.GetName(idstring, displayResult);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body onload="body_onload();"&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server"&amp;gt;&lt;br /&gt;
                &amp;lt;Services&amp;gt;&lt;br /&gt;
                    &amp;lt;asp:ServiceReference Path="~/Customers.asmx" /&amp;gt;&lt;br /&gt;
                &amp;lt;/Services&amp;gt;&lt;br /&gt;
            &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Now we need to make some changes to default.aspx.  First we have to add a hidden iframe to the form. 
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
            &amp;lt;iframe id="hiddeniframe" src="history.aspx" style='visibility: hidden;'&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Finally we have to get the link to change the page in the iframe instead of calling the web service.   Here is the updated pages html.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "&lt;a href="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&lt;/a&gt;"&amp;gt;&lt;br /&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;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
       function ChangeFrame(id)&lt;br /&gt;
       {&lt;br /&gt;
            window.frames["hiddeniframe"].location.href ="history.aspx?ID=" + id;&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;asp:Label ID="Label1" runat="server" Text="Label"&amp;gt;&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
            &amp;lt;table&amp;gt;&lt;br /&gt;
                &amp;lt;tr&amp;gt;&lt;br /&gt;
                    &amp;lt;td&amp;gt;&lt;br /&gt;
                        &amp;lt;asp:DataList ID="DataList1" runat="server" DataKeyField="CustomerID" DataSourceID="SqlDataSource1"&amp;gt;&lt;br /&gt;
                            &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
                                &amp;lt;a href="javascript:ChangeFrame('&amp;lt;%# Eval("CustomerID") %&amp;gt;')"&amp;gt;&lt;br /&gt;
                                    &amp;lt;%# Eval("CustomerID") %&amp;gt;&lt;br /&gt;
                                &amp;lt;/a&amp;gt;&lt;br /&gt;
                                &amp;lt;br /&amp;gt;&lt;br /&gt;
                            &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
                        &amp;lt;/asp:DataList&amp;gt;&lt;br /&gt;
                        &amp;lt;asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="&amp;lt;%$ ConnectionStrings:NorthWindConnectionString %&amp;gt;"&lt;br /&gt;
                            SelectCommand="SELECT [CustomerID] FROM [Customers]"&amp;gt;&amp;lt;/asp:SqlDataSource&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;td style='vertical-align:top; width: 50%;'&amp;gt;&lt;br /&gt;
                        &amp;lt;div id="CompanyName" &amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/table&amp;gt;&lt;br /&gt;
            &amp;lt;iframe id="hiddeniframe" src="history.aspx" style='visibility: hidden;'&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;hr /&gt;
Now when the user clicks on the link it calls a webpage in a hidden iframe which updates the main page.  The user now can use the back button
&lt;img src="http://blog.onteorasoftware.net/aggbug/93.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/getting-the-back-button-to-work-with-ajax.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 22:01:16 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/93.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/getting-the-back-button-to-work-with-ajax.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/93.aspx</wfw:commentRss>
        </item>
        <item>
            <title>AjaxToolKit Slide Show Control</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/ajaxtoolkit-slide-show-control.aspx</link>
            <description>&lt;h3 align="center"&gt;AjaxToolKit Slide Show Control&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
While working on the Orlando Code Camp website I decided to add a page which shows a slide show of the pictures taken at code camp. The new &lt;a href="http://ajax.asp.net/ajaxtoolkit/SlideShow/SlideShow.aspx"&gt;Ajax Tool Kit Slide Show Control&lt;/a&gt; was perfect for this task. The photos were uploaded to the Flickr website.
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;
The Slide Show control requires a shared (static c#) function which would return an Array of Slides. The slide class contains a link to the photo, the photos name, and description of the photo. Since I did not want to store a list of photos in a database or xml file I decided to use the &lt;a href="http://www.codeplex.com/FlickrNet"&gt;FlickrNet library&lt;/a&gt; on the Code Plex website to get a list of the code camp photos. You will need an api key from &lt;a href="http://www.flickr.com/services/api/"&gt;Flickr&lt;/a&gt; to use this class library.
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;
In this example I look up the username by the URL the photo collections is located. The I get a list of the photos by the username. The Flickr .Net library will create an xml file to cache the photo list by default. I turned this feature off because not all webservers will allow the dll to write to the bin directory the Flickr dll is located in. 
&lt;/p&gt;
&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/coding4fun/archive/2006/11/22/1126978.aspx"&gt;Article about Flickr.Net API on Coding4Fun Website&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.orlandocodecamp.com/photos.aspx"&gt;Orlando Code Camp Photo Show&lt;/a&gt; 
&lt;hr /&gt;
HTML&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;
&amp;lt;head runat="server"&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Orlando Code Camp Files&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" /&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div style="text-align: center"&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Image ID="Image1" runat="server" Height="300" Style="border: 1px solid black;&lt;br /&gt;
                    width: auto" ImageUrl="http://farm1.static.flickr.com/177/434079572_dd113d2313.jpg?v=0"&lt;br /&gt;
                    AlternateText="Orlando Code Camp" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Label runat="Server" ID="imageLabel1" /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;br /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Button runat="Server" ID="prevButton" Text="Prev" Font-Size="Larger" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Button runat="Server" ID="playButton" Text="Play" Font-Size="Larger" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Button runat="Server" ID="nextButton" Text="Next" Font-Size="Larger" /&amp;gt;&lt;br /&gt;
                &amp;lt;ajaxToolkit:SlideShowExtender ID="slideshowextend1" runat="server" TargetControlID="Image1"&lt;br /&gt;
                    SlideShowServiceMethod="GetPictures" AutoPlay="true" ImageDescriptionLabelID="imageLabel1"&lt;br /&gt;
                    NextButtonID="nextButton" PlayButtonText="Play" StopButtonText="Stop" PreviousButtonID="prevButton"&lt;br /&gt;
                    PlayButtonID="playButton" Loop="true" /&amp;gt;&lt;br /&gt;
                &amp;lt;asp:Label ID="lblError" runat="server" /&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Code Behind File&lt;br /&gt;
&lt;br /&gt;
Imports FlickrNet&lt;br /&gt;
&lt;br /&gt;
Partial Class _Default&lt;br /&gt;
    Inherits System.Web.UI.Page&lt;br /&gt;
&lt;br /&gt;
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;
&lt;br /&gt;
    End Sub&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;System.Web.Services.WebMethod()&amp;gt; _&lt;br /&gt;
  &amp;lt;System.Web.Script.Services.ScriptMethod()&amp;gt; _&lt;br /&gt;
   Public Shared Function GetPictures() As AjaxControlToolkit.Slide()&lt;br /&gt;
        Dim strApiKey As String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"&lt;br /&gt;
        Dim strSecret As String = "xxxxxxxxxxxxxxxxxxxxx"&lt;br /&gt;
        Flickr.CacheDisabled = True&lt;br /&gt;
        Dim f As New FlickrNet.Flickr()&lt;br /&gt;
        Try&lt;br /&gt;
            f.ApiKey = strApiKey&lt;br /&gt;
            f.ApiSecret = strSecret&lt;br /&gt;
&lt;br /&gt;
            Dim user As FlickrNet.FoundUser = f.UrlsLookupUser("http://www.flickr.com/photos/onetug/sets/72157600026752869/")&lt;br /&gt;
            Dim ccPhotos As FlickrNet.Photos&lt;br /&gt;
            Dim so As New FlickrNet.PhotoSearchOptions&lt;br /&gt;
            so.UserId = user.UserId&lt;br /&gt;
            ccPhotos = f.PhotosSearch(so)&lt;br /&gt;
&lt;br /&gt;
            Dim s(ccPhotos.PhotoCollection.Count) As AjaxControlToolkit.Slide&lt;br /&gt;
&lt;br /&gt;
            For x As Integer = 0 To ccPhotos.PhotoCollection.Count - 1&lt;br /&gt;
                Dim ph As FlickrNet.Photo = ccPhotos.PhotoCollection.Item(x)&lt;br /&gt;
                s(x) = New AjaxControlToolkit.Slide(ph.MediumUrl, "", ph.Title)&lt;br /&gt;
            Next&lt;br /&gt;
            Return s&lt;br /&gt;
        Catch ex As Exception&lt;br /&gt;
            Dim s(0) As AjaxControlToolkit.Slide&lt;br /&gt;
            s(0) = New AjaxControlToolkit.Slide("http://static.flickr.com/186/435708815_c74ba67436_b.jpg", "", _&lt;br /&gt;
                "Shawn Weisfeld delivering the books to A Gift for Teaching")&lt;br /&gt;
            Return s&lt;br /&gt;
        End Try&lt;br /&gt;
    End Function&lt;br /&gt;
&lt;br /&gt;
End Class 
&lt;img src="http://blog.onteorasoftware.net/aggbug/70.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/ajaxtoolkit-slide-show-control.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 19:31:46 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/70.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/ajaxtoolkit-slide-show-control.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/70.aspx</wfw:commentRss>
        </item>
        <item>
            <title>UpdatePanel Gotcha</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/updatepanel-gotcha.aspx</link>
            <description>&lt;h3 align="center"&gt;UpdatePanel Gotcha&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;
Do not update the contents inside a UpdatePanel with java script. You will not get the resuts you expect. 
&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;
For example place a span and button inside an update panel.When you click on a button control the java script onClientClick will fire followed by the Click event for the button. So if we update the span's text with onClientClick the text will update briefly then the UpdatePanel will catch the post back made by the click event and erase our changes. 
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%@ Register Assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"&lt;br /&gt;
    Namespace="Microsoft.Web.UI" TagPrefix="asp" %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "&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;br /&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;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
        function displayClick()&lt;br /&gt;
        {&lt;br /&gt;
            $get("span1").innerHTML="Hello World";&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"&amp;gt;&lt;br /&gt;
            &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;
             &amp;lt;asp:UpdatePanel ID="UpdatePanel1" runat="server" &amp;gt;&lt;br /&gt;
                &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;
                   &amp;lt;span id="span1"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
                    &amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;asp:linkButton runat="server" Text="Button" ID="button1" OnClientClick="displayClick();" /&amp;gt;&lt;br /&gt;
                &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;/asp:UpdatePanel&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
By moving the Span outside the update panel we will still be able to update the contents of the span without posting back. The UpdatePanel still prevents the pages postback. 
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%@ Register Assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"&lt;br /&gt;
    Namespace="Microsoft.Web.UI" TagPrefix="asp" %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "&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;br /&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;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&lt;/p&gt;
&lt;p&gt;
    &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;
        function displayClick()&lt;br /&gt;
        {&lt;br /&gt;
            $get("span1").innerHTML="Hello World";&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/script&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"&amp;gt;&lt;br /&gt;
            &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;
            &amp;lt;span id="span1"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
            &amp;lt;br /&amp;gt;&lt;br /&gt;
            &amp;lt;asp:UpdatePanel ID="UpdatePanel1" runat="server"&amp;gt;&lt;br /&gt;
                &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;
                    &amp;lt;asp:LinkButton runat="server" Text="Button" ID="button1" OnClientClick="displayClick();" /&amp;gt;&lt;br /&gt;
                &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;/asp:UpdatePanel&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &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;/p&gt;
&lt;img src="http://blog.onteorasoftware.net/aggbug/90.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/updatepanel-gotcha.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 19:18:59 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/90.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/updatepanel-gotcha.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/90.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Atlas Tool Kit</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-tool-kit.aspx</link>
            <description>&lt;h3 align="center"&gt;Atlas Tool Kit&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
The atlas tool kit is truely awsome. I see there is an error in collapsiblepanelextender documentation. The sample code on the webpage shows the expanddirection as height when the valid values are horizontal and vertical. It also shows openedsize instead of expandedsize. 
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&lt;br /&gt;
             &amp;lt;atlasToolkit:CollapsiblePanelExtender ID="cpe" runat="Server"&amp;gt;&lt;br /&gt;
                &amp;lt;atlasToolkit:CollapsiblePanelProperties ExpandedSize="200" TargetControlID="pnlRss"&lt;br /&gt;
                    ExpandControlID="LinkButton1" CollapseControlID="LinkButton1" Collapsed="True"&lt;br /&gt;
                    TextLabelID="LinkButton1" CollapsedText="Show Details..." ExpandedText="Hide Details..."&lt;br /&gt;
                    SuppressPostBack="true" /&amp;gt;&lt;br /&gt;
           &amp;lt;/atlasToolkit:CollapsiblePanelExtender&amp;gt;&lt;br /&gt;
           &amp;lt;asp:Label ID="lblRss" Text="Whats New in VB-Tips" runat="server"&amp;gt;&amp;lt;/asp:Label&amp;gt;&lt;br /&gt;
&amp;lt;asp:LinkButton ID="LinkButton1" runat="server" Text="Show Details.."&amp;gt;&lt;br /&gt;
&amp;lt;/asp:LinkButton&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
     &amp;lt;asp:Panel ID="pnlRss" runat="server" Width="100%" ScrollBars="Vertical"&amp;gt;&lt;br /&gt;
                &amp;lt;asp:DataList ID="DataList1" runat="server" BackColor="White" BorderColor="#E7E7FF"&lt;br /&gt;
                    BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="RssDataSource1"&lt;br /&gt;
                    GridLines="Horizontal"&amp;gt;&lt;br /&gt;
                    &amp;lt;FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /&amp;gt;&lt;br /&gt;
                    &amp;lt;SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /&amp;gt;&lt;br /&gt;
                    &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
                         &amp;lt;asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='&amp;lt;%# Eval("link") %&amp;gt;'&lt;br /&gt;
                            Text='&amp;lt;%# Eval("title") %&amp;gt;'&amp;gt;&amp;lt;/asp:HyperLink&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                        &amp;lt;asp:Label ID="descriptionLabel" runat="server" Text='&amp;lt;%# Eval("description") %&amp;gt;'&amp;gt;&amp;lt;/asp:Label&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                        &amp;lt;br /&amp;gt;&lt;br /&gt;
                        pubDate:&lt;br /&gt;
                        &amp;lt;asp:Label ID="pubDateLabel" runat="server" Text='&amp;lt;%# Eval("pubDate") %&amp;gt;'&amp;gt;&amp;lt;/asp:Label&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
                        &amp;lt;br /&amp;gt;&lt;br /&gt;
                    &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
                    &amp;lt;AlternatingItemStyle BackColor="#F7F7F7" /&amp;gt;&lt;br /&gt;
                    &amp;lt;ItemStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /&amp;gt;&lt;br /&gt;
                    &amp;lt;HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /&amp;gt;&lt;br /&gt;
                &amp;lt;/asp:DataList&amp;gt;&amp;lt;cc1:RssDataSource ID="RssDataSource1" runat="server" MaxItems="0"&lt;br /&gt;
                    Url="&lt;a href="http://www.vb-tips.com/newsfeed.aspx"&gt;http://www.vb-tips.com/newsfeed.aspx&lt;/a&gt;"&amp;gt;&lt;br /&gt;
                &amp;lt;/cc1:RssDataSource&amp;gt;&lt;br /&gt;
            &amp;lt;/asp:Panel&amp;gt;&lt;br /&gt;
           &amp;lt;atlas:ScriptManager ID="s1" EnablePartialRendering="true" runat="server"&amp;gt;&lt;br /&gt;
            &amp;lt;/atlas:ScriptManager&amp;gt;
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;img src="http://blog.onteorasoftware.net/aggbug/114.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-tool-kit.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 18:35:37 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/114.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-tool-kit.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/114.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Atlas April Ctp Released</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-april-ctp-released.aspx</link>
            <description>&lt;h3 align="center"&gt;Atlas April Ctp Released&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
The April CTP of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B01DC501-B3C1-4EC0-93F0-7DAC68D2F787&amp;amp;displaylang=en"&gt;Atlas&lt;/a&gt; was released today. Along with a &lt;a href="http://atlas.asp.net/atlastoolkit/"&gt;toolkit&lt;/a&gt; that has some cool tools. 
&lt;/p&gt;
&lt;br /&gt;
&lt;img src="http://blog.onteorasoftware.net/aggbug/117.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-april-ctp-released.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 18:28:29 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/117.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-april-ctp-released.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/117.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Atlas March Ctp Released</title>
            <link>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-march-ctp-released.aspx</link>
            <description>&lt;h3 align="center"&gt;Atlas March Ctp Released&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
The March CTP of &lt;a href="http://atlas.asp.net/default.aspx?tabid=47"&gt;Atlas&lt;/a&gt; was released today. It is the first version of Atlas to have a go live license. 
&lt;/p&gt;
&lt;br /&gt;
&lt;img src="http://blog.onteorasoftware.net/aggbug/122.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ken Tucker</dc:creator>
            <guid>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-march-ctp-released.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 18:06:38 GMT</pubDate>
            <wfw:comment>http://blog.onteorasoftware.net/comments/122.aspx</wfw:comment>
            <comments>http://blog.onteorasoftware.net/archive/2007/09/16/atlas-march-ctp-released.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.onteorasoftware.net/comments/commentRss/122.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>