programming4us
programming4us
WEBSITE

Getting Familiar with AJAX

- How To Install Windows Server 2012 On VirtualBox
- How To Bypass Torrent Connection Blocking By Your ISP
- How To Install Actual Facebook App On Kindle Fire
12/6/2011 11:34:52 AM
Here's a short example to help get you familiar with AJAX. It's a very simple Web Forms application that shows behind-the-scenes page content updates with the UpdatePanel server-side control. In this exercise, you create a page with labels showing the date and time that the page loads. One label is outside the UpdatePanel, and the other label is inside the UpdatePanel. You can see how partial-page updates work by comparing the date and time shown in each label.

Implementing a simple partial-page update

  1. Create a new Web site project named AJAXORama. Make it an empty, file system-based Web site. Visual Studio 2010 creates AJAX Enabled projects right from the start. Make sure the default.aspx file is open.

  2. Add a ScriptManager control to the page by dragging one from the Toolbox onto the page. (It is under the AJAX Extensions tab in the Toolbox instead of the normal control tab.) Using the AJAX controls requires a ScriptManager to appear prior to any other AJAX controls on the page. By convention, the control is usually placed outside the DIV Visual Studio creates for you. After placing the script manager control on your page, the <body> element in the Source view should look like this:

    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>

    </div>
    </form>
    </body>

  3. Drag a Label control onto the Default.aspx form. In the Properties pane, give the Label control the name LabelDateTimeOfPageLoad. Then, drop a Button on the form as well. Give it the text Click Me. Open the code-beside file (default.aspx.cs) and update the Page_Load handler so that the label displays the current date and time:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    this.LabelDateTimeOfPageLoad.Text = DateTime.Now.ToString();
    }
    }

  4. Run the page and generate some postbacks by clicking the button a few times. Notice that the label on the page updates with the current date and time each time you click the button.

  5. Add an UpdatePanel control to the page. (You can find this control alongside the ScriptManager control in the AJAX node in the Visual Studio Toolbox.) Then, drop another Label from the Toolbox into the content area of the UpdatePanel. Name the label LabelDateTimeOfButtonClick.

  6. Add some code to the Page_Load method so that the label shows the current date and time:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;


    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    this.LabelDateTimeOfPageLoad.Text = DateTime.Now.ToString();
    this.LabelDateTimeOfButtonClick.Text =
    DateTime.Now.ToString();
    }
    }

    The following graphic shows the UpdatePanel, Button, and Labels as displayed in the Visual Studio Designer (there are some line breaks in between so that the page is readable):



  7. Run the page and generate some postbacks by clicking the button. Both labels should be showing the date and time of the postback (that is, they should show the same time). Although the second label is inside the UpdatePanel, the action causing the postback is happening outside the UpdatePanel.

    The following graphic shows the Web page running without the Button being associated with the UpdatePanel:



  8. Now delete the current button from the form and drop a new button into the UpdatePanel1 control. Add a Label to the UpdatePanel1 as well. Name the new label LabelDateTimeOfButtonPress. Look at the Default.aspx file to see what was produced:

    <%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC
    "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager
    ID="ScriptManager1" runat="server" /><br/>
    <asp:Label ID="LabelDateTimeOfPageLoad"
    runat="server"></asp:Label> <br/>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">

    <ContentTemplate>
    <asp:Label ID="LabelDateTimeOfButtonPress"
    runat="server">
    </asp:Label><br/>
    <asp:Button ID="Button1"
    runat="server" Text="Click Me" />
    </ContentTemplate>
    </asp:UpdatePanel>
    </form>
    </body>
    </html>


    The new Button should now appear nested inside the UpdatePanel along with the new Label.

  9. Run the page and generate some postbacks by clicking the button. Notice that only the label showing the date and time enclosed in the UpdatePanel is updated. This is known as a partial-page update because only part of the page is actually updated in response to a page action, such as clicking the button. Partial-page updates are also sometimes referred to as callbacks rather than postbacks. The following graphic shows the Web page running with the ButtonUpdatePanel: being associated with the



  10. Add an UpdatePanel trigger. Because the second label and the button are both associated with the single UpdatePanel, only the second Label is updated in response to the postback generated by the button. If you could set up partial-page updates based only on elements tied to a single UpdatePanel, that would be fairly restrictive. As it turns out, the UpdatePanel supports a collection of triggers that generate partial-page updates. To see how this works, you need to first move the button outside the UpdatePanel (so that the button generates a full normal postback). The easiest way is simply to drag a button onto the form, making sure it lands outside the UpdatePanel.

    Because the button is outside the UpdatePanel again, postbacks generated by the button are no longer tied solely to the second label, and the partial-page update behavior you saw in step 9 is again nonfunctional.

  11. Update the UpdatePanel's Triggers collection to include the Button's Click event. With the Designer open, select the UpdatePanel. Go to the properties Window and choose Triggers.

  12. Add a trigger and set the control ID to the button's ID and the event to Click as shown in the following graphic:



    (Note that the handy drop-down lists for each property assist you with this selection.) Run the page. Clicking the button should now generate a callback (causing a partial-page update) in which the first label continues to show the date and time of the original page load and the second label shows the date and time of the button click. Pretty cool!

Async Callbacks

As you know by now, standard Web pages require the browser to instigate postbacks. Many times, postbacks are generated by clicking a Button control (in ASP.NET terms). However, you can enable most ASP.NET controls to generate postbacks as well. For example, if you'd like to receive a postback whenever a user selects an item in a DropDownList, just flip the AutoPostBack property to true, and the control will generate the normal postback whenever the selected item changes.

In some cases, an entire postback is warranted for events such as when the selected item changes. However, in most cases generating postbacks is distracting for users and leads to very poor performance of your page. That's because standard postbacks refresh the whole page.

ASP.NET AJAX support introduces the notion of the asynchronous postback by using JavaScript running inside the client page. The XMLHttpRequest object posts data to the server—making an end run around the normal postback. The server returns data as XML, JSON, or HTML and has to refresh only part of the page. The JavaScript running in the page replaces old HTML in the Document Object Model with new HTML based on the results of the asynchronous postback.

If you've done any amount of client-side script programming, you can imagine how much work doing something like this can be. Performing asynchronous postbacks and updating pages usually requires a lot of JavaScript.

The UpdatePanel control you just used in the preceding exercise hides all of the client-side code and also the server-side plumbing. Also, because of the well-architected server-side control infrastructure in ASP.NET, the UpdatePanel maintains the same server-side control model you're used to seeing in ASP.NET.

Other  
  •  ASP.NET Server-Side Support for AJAX & AJAX Client Support
  •  ASP.NET and AJAX
  •  IIS 7.0 : Securing Communications with Secure Socket Layer (SSL)
  •  ASP.NET 4 : Getting More Advanced with the Entity Framework (part 2) - Updates, Inserts, and Deletes
  •  ASP.NET 4 : Getting More Advanced with the Entity Framework (part 1) - Querying with LINQ to Entities
  •  IIS 7.0 : Implementing Access Control - Authentication (part 4)
  •  IIS 7.0 : Implementing Access Control - Authentication (part 3) - IIS Client Certificate Mapping Authentication
  •  IIS 7.0 : Implementing Access Control - Authentication (part 2) - Digest Authentication & Windows Authentication
  •  IIS 7.0 : Implementing Access Control - Authentication (part 1)
  •  IIS 7.0 : Implementing Access Control - NTFS ACL-based Authorization & URL Authorization
  •  
    Top 10
    - Microsoft Visio 2013 : Adding Structure to Your Diagrams - Finding containers and lists in Visio (part 2) - Wireframes,Legends
    - Microsoft Visio 2013 : Adding Structure to Your Diagrams - Finding containers and lists in Visio (part 1) - Swimlanes
    - Microsoft Visio 2013 : Adding Structure to Your Diagrams - Formatting and sizing lists
    - Microsoft Visio 2013 : Adding Structure to Your Diagrams - Adding shapes to lists
    - Microsoft Visio 2013 : Adding Structure to Your Diagrams - Sizing containers
    - Microsoft Access 2010 : Control Properties and Why to Use Them (part 3) - The Other Properties of a Control
    - Microsoft Access 2010 : Control Properties and Why to Use Them (part 2) - The Data Properties of a Control
    - Microsoft Access 2010 : Control Properties and Why to Use Them (part 1) - The Format Properties of a Control
    - Microsoft Access 2010 : Form Properties and Why Should You Use Them - Working with the Properties Window
    - Microsoft Visio 2013 : Using the Organization Chart Wizard with new data
    REVIEW
    - First look: Apple Watch

    - 3 Tips for Maintaining Your Cell Phone Battery (part 1)

    - 3 Tips for Maintaining Your Cell Phone Battery (part 2)
    Video Sports
    programming4us programming4us
    programming4us
     
     
    programming4us