May 2008 - Posts - More Wally - Wallace B. McClure
in

MoreWally.com

Giving people what they want, More Wally. This is the technical and personal blog site of
Wallace B. (Wally) McClure.

This Blog

Syndication

News

Please goy buy 3-4 copies of my book on MonoTouch titled "Professional Android Programming with Mono for Android for .NET/C# Developers." They make great gifts all year round. Plus, I get about $.25 when you buy a copy.

Technical Sites

More Wally - Wallace B. McClure

This blog will have all kinds of posts about Wally McClure. In it, there will be tons of .NET and computer programming posts as well as Wally's views on life in general. As you might guess, this site and blog help you get More Wally in your life. What more could anyone want? iPhone, Android, MonoTouch, MonoDroid, Mobile, HTML5, .NET, ADO.NET, ASP.NET, AJAX, jQuery, jQuery Mobile, ASP.NET AJAX, and Windows Azure............follow me on twitter at Wally

May 2008 - Posts

  • ASP.NET Podcast Show #114 - ADO.NET Data Services in .NET 3.5 Service Pack 1 Beta1 with ASP.NET AJAX

    Subscribe to everything.

    Original Url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/05/31/asp-net-podcast-show-114-ado-net-data-services-in-net-3-5-service-pack-1-beta1-with-asp-net-ajax.aspx 

    Subscribe to WMV.

    Subscribe to M4V for iPod.

    Subscribe to MP3.

    Download WMV.

    Download W4V for iPod.

    Download MP3.

    Show Notes:

    • ADO.NET Data Services Viewing DataSql Server Database .
    • ADO.NET Data Services.
    • Javascript.
    • No SQL.
    • Getting data.
    • Insert a record.
    • Update a record.
    • Metadata.
    • I had a snafu while recording, so some audio may sound clipped.

    Source Code:

    ADO.NET Data Services Editing Data<%@ ServiceHost Language="C#" Factory="System.Data.Services.DataServiceHostFactory" Service="OrderItemDataService" %>

    Codebehind file:

    using System;

    using System.Data.Services;

    using System.Collections.Generic;

    using System.Linq;

    using System.ServiceModel.Web;

     

    public class OrderItemDataService : DataService< ADONETDataServicesModel.ADONETDataServicesEntities >

    {

        // This method is called only once to initialize service-wide policies.

        public static void InitializeService(IDataServiceConfiguration config)

        {

            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.

            // For testing purposes use "*" to indicate all entity sets/service operations.

            // "*" should NOT be used in production systems.

            // Example for entity sets (this example uses "AllRead" which allows reads but not writes)

            // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);

            config.SetEntitySetAccessRule("*", EntitySetRights.All);

            config.UseVerboseErrors = true;

            //config.SetEntitySetAccessRule("tbOrder", EntitySetRights.All);

            // Example for service operations

            // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);

      }

     

        // Query interceptors, change interceptors and service operations go here

    }

    Display Data:

    <script language="javascript" type="text/javascript">

    function pageLoad()

    {

        var strOut;

        var Service = GetDataService();

     

        var QueryString = "/tbOrder";

        Service.query(QueryString, OnCompleteSuccess, OnCompleteFailure);

    }

    function GetDataService()

    {

        return(new Sys.Data.DataService("WebDataService.svc"));

    }

    function OnCompleteSuccess(result) {

        var strReturn = "<br />";

        var Output = "On Complete Success Called." + strReturn;

        var i = 0;

        for (m in result)

        {

            Output += m + strReturn;

        }

     

        for (m in result[0]) {

            Output += m + strReturn;

        }

     

        Output += "<table>";

        Output += "<tr><th>Total Amount</th>" +

                  "<th>Date of Order</th>" +

                  "<th>Comment</th>" +

                  "<th>Customer Name</th>" +

                  "<th>Edit</th>" +

                  "</tr>";

        for (i=0; i< result.length; i++)

        {

            Output += "<tr>" +

                "<td>" + result[i].TotalAmount + "</td>" +

                "<td>" + result[i].DateOrdered + "</td>" +

                "<td>" + result[i].Comment + "</td>" +

                "<td>" + result[i].CustomerName + "</td>" +

                "<td><a href='EditOrder.aspx?OrderID=" + result[i].OrderId + "'>Edit</td>" +

                "</tr>";

        }

        Output += "</table>";

        $get("OutputDiv").innerHTML = Output;

    }

     

    function OnCompleteFailure(result)

    {

        alert("On Complete Failure Called.");

    }

    Add/Edit/Delete file:

            var OrderID=<%=Request.QueryString["OrderID"] %>;

           

            function pageLoad() {

                FillOrderData();

            }

            function FillOrderData()

            {

                var Service = GetDataService();

                var QueryString = "tbOrder(" + OrderID + ")?$expand=tbItem";

                Service.query(QueryString, OnCompleteSuccess, OnCompleteFailure);

            }

            function GetDataService()

            {

                return(new Sys.Data.DataService("OrderItemDataService.svc"));

            }

            function OnCompleteSuccess(result)

            {

                var i = 0;

                var Output = "<table><tr><th>Part</th><th>Price</th>" +

                    "<th>Edit</th><th>Delete</th></tr>";

                for(i = 0; i < result.tbItem.length; i++)

                {

                    Output += "<tr><td>" + result.tbItem[i].Part +

                        "</td><td>" + result.tbItem[i].Price + "</td>" +

                        "<td><a href='BLOCKED SCRIPTEditItem(" + result.tbItem[i].ItemId + ")'>Edit</a></td>" +

                        "<td><a href='BLOCKED SCRIPTDeleteItem(" + result.tbItem[i].ItemId + ")'>Delete</a></td>" +

                        "</tr>";

                }

                Output += "</table>";

                $get("OutputGrid").innerHTML = Output;

            }

           

            function OnCompleteFailure(result)

            {

                alert("OnCompleteFailure called.");

            }

           

            function DeleteItem( ItemId )

            {

                var Service = GetDataService();

               

                if ( window.confirm("Do you really want to delete this Item?" ) )

                {

                    alert("Delete it.");

                    Service.remove(null, "tbItem(" + ItemId + ")",

                        DeleteItemSucceed, DeleteItemFailure);

                }

            }

           

            function DeleteItemSucceed( result )

            {

                FillOrderData();

                alert("DeleteItemSucceed called.");

            }

           

            function DeleteItemFailure( result )

            {

                alert("DeleteItemFailure called.");

            }

           

            function EditItem( ItemId )

            {

                var Service = GetDataService();

                var QueryString = "tbItem(" + ItemId + ")";

                Service.query(QueryString, EditItemSucceed, EditItemFailure);

            }

           

            function EditItemSucceed( result )

            {

                $get("txtPrice").value = result.Price;

                $get("txtPart").value = result.Part;

                $get("hdItemId").value = result.ItemId;

                $get("OutputSpecifics").style.visibility = "visible";

                $get("OutputGrid").style.visibility = "hidden";

                FillOrderData();

            }

           

            function EditItemFailure( result )

            {

                alert("EditItemFailure called.");

            }

           

            function SaveItem()

            {

                var ThisItemId = $get("hdItemId").value;

                var Service = GetDataService();

               

                if (ThisItemId == "" )

                {

                    var newProduct =

                    {

                        Price:      $get("txtPrice").value,

                        Part:       $get("txtPart").value,

                        tbOrder:    { __metadata: {uri: "/tbOrder(" + OrderID + ")" }}

                    };

                    Service.insert(newProduct, "tbItem", InsertItemSucceed, InsertItemFailed);

                }

                else{

                    var updateProduct=

                    {

                        ItemId:     $get("hdItemId").value,

                        Price:      $get("txtPrice").value,

                        Part:       $get("txtPart").value,

                        tbOrder:    { __metadata: {uri: "/tbOrder(" + OrderID + ")" }}

                        //$get("hdOrderId").value

                    }

                    Service.update(updateProduct, "tbItem(" + $get("hdItemId").value + ")", UpdateItemSucceed, UpdateItemFailed, updateProduct);

                }

            }

            function InsertItemSucceed(result)

            {

                alert("InsertItemSucced called.");

                FillOrderData();

            }

            function InsertItemFailed(result)

            {

                alert("InsertItemFailed called.");

            }

            function UpdateItemSucceed(result)

            {

                alert("UpdateItemSucceed called.");

            }

            function UpdateItemFailed(result)

            {

                alert("UpdateItemFailed called.");

            }

            function BeginAdd()

            {

                $get("OutputGrid").style.visibility = "hidden";

                $get("OutputSpecifics").style.visibility = "visible";

                $get("txtPrice").value = "";

                $get("txtPart").value = "";

                $get("hdItemId").value = "";

            }

  • Deep Fried Bytes

    Keith Elder and Chris Woodruff have just gone live with Deep Fried Bytes, a podcast on the subject of technology.  Check it out at http://deepfriedbytes.com/.

  • Before installing SP1 Beta1, check out this tool

  • ADO.NET Data Services in.NET 3.5 SP1 Beta1

    I started working on an example using the ADO.NET Data Services (formerly Astoria) in .NET 3.5 SP!.  ADO.NET Data Services uses the Entity Framework to expose data to clients in a restful manner.  Its ideally suited to data access over ajax clients.  For some reason, my sample wouldn't completely run.  I could query and delete, but no inserty or updatey action would work.  The error messages I got were crap merely saying that the operation failed.  What good are those messages?  I posted some messages and I decided to contact Pablo Castro about the issue.  Pablo was his usual helpful self.  He gave me a bunch of suggestions.  I went through them and it looked like I needed to have the VJ# redistributable installed.  I then mucked up my VPC session.  I went back and started from the beginning with a fresh VPC.  I installed VJ# redistributable, .NET 3.5 SP1 beta1, Sql Express Management Studio, and voila, I got meaningful error messages finally.  With the meaningful error messages, it was cake to fix the updatey problem.  The inserty problem magically resolved itself.  All was right with the world.  Expect a video podcast on this topic shortly along with source code examples and things that tripped me up in the process..

  • Pictures from Recent Events (Western Michigan Day of .NET & User Group talk in California, MD)

    I wanted to post some of the pictures that I took at the events that I have been to in the past week.  They are:

    Western Michigan Day of .NET: http://aspnetpodcast.com/CS11/photos/random_pics/tags/Western+Michigan+Day+of+.NET/default.aspx

    California, MD User Group Talk: http://aspnetpodcast.com/CS11/photos/random_pics/tags/California+Maryland/default.aspx

  • Follow me on Twitter

    As if we don't have enough things that waste our time, follow my comments about life and things upto 140 characters on twitter.  My twitter url is http://twitter.com/wbm and enjoy.

    PS.  If you follow me, I'll follow you, assuming you aren't a twitter spammer.

  • LinkedIn Profile

    I just made my LinkedIn profile public.  Check it out at http://www.linkedin.com/in/wallymcclure  Please check it out and tell the world about us.

  • .NET 3.5 SP1 Beta 1 requires Vista SP1 on Vista - This is Temporary

    This may be buried somewhere in the documentation, but I wanted to mention it.  .NET 3.5 Service Pack Beta 1 requires Vista SP1 if you are installing it on Vista.  I know this because I was installing it into my VPC with Vista and the install has errored out.  Then I saw a post about this somewhere, think it was an email from my MVP lead.  So, if you are installing the Beta 1 SP1 on Vista, check to make sure that you are using Vista with SP1.  IIRC, the post I read said that Vista SP1 would NOT be required on the final .NET 3.5 SP1.  This is why they have betas.

     Wally

  • CodeStock in Knoxville, TN on August 9

    It looks like CodeStock is going to happen on August 9.  More info to follow soon.  Michael Neel is doing a lot of work on it.

    Wally

  • Western Michigan Day of .NET

    On Friday, I'm headed to the Western Michigan Day of .NET.  Whose idea was it to drive 630 miles?  Oh yeah, it is mine.

  • ASP.NET Podcast Show #113 - Deep Dive into the ASP.NET AJAX UpdatePanel

  • ASP.NET Podcast Show #112 - Intro to ASP.NET AJAX

    Original Url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/05/07/asp-net-podcast-show-112-intro-to-asp-net-ajax.aspx

    Subscribe to everything <---- This is what the cool kids are doing.

    Subscribe to WMV.

    Subscribe to MP4/M4V.

    Subscribe to MP3

    Download WMV.

    Download M4V.

    Download MP3.

    Show Notes:

     

  • New feeds for the ASP.NET Podcast

    I've created some new feeds for the ASP.NET Podcast  There is still the same general feed.  It will have all shows and all of the variations of the shows in it.  These include WMV, MP4/M4V, MP3, and whatever else one can throw in it. The rest of the feeds are:

    If you have any problems, let me know ASAP! 

    Wally

     

  • ASP.NET Podcast Show #111 - ASP.NET AJAX with Virtual Earth

    Original url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/05/05/asp-net-podcast-show-111-asp-net-ajax-with-virtual-earth.aspx

    Subscribe.ASP.NET AJAX with Virtual Earth <-- Everybody needs some, how about you!

    Download WMV - Video for PC.

    Download M4V - Video for iPod.

    Download MP3 - Audio only.

    Show Notes:

    • Upcoming events.
    • URLs of importance, so important that your life depends on them.
    • Mapping with Virtual Earth.
    • Web Services.
    • Client Script.

    Source Code:

    Master Page:

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>ASP.NET Podcast Mapping Page</title>    <asp:ContentPlaceHolder id="head" runat="server">    </asp:ContentPlaceHolder>    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAA_mrKwezGRvHyiI2zD3-QjxQyvuBphQwgXhP_kHK6Ww2QlMKTbxQ3mY6sQnMU6V5PMK8wQzOfhkt_Vw" language="javascript" type="text/javascript"></script>    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script> </head><body onunload="GUnload()">    <form id="form1" runat="server">    <asp:ScriptManager ID="sm" runat="server">        <Services>            <asp:ServiceReference Path="~/GetMapData.asmx" />        </Services>    </asp:ScriptManager>    <div>        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body>

    </html>

     

    ASP.NET Page:

     <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Live_Default" Title="Virtual Earth Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"><div id="MapDiv" style="position:relative; width:450px; height: 350px;" ></div><br /><div id="MapInfo"></div> <script language="javascript" type="text/javascript">var Map;function pageLoad(){    GetMapData.MapData(SetupMap);}   function SetupMap(result){    var Lat = result.Center.Lat;    var Lon = result.Center.Lon;    var ZoomLevel = result.ZoomLevel;    var MapView, TopLeft, BottomRight;    Map = new VEMap('MapDiv');    Map.LoadMap(new VELatLong(Lat, Lon), ZoomLevel ,'h' ,false);    MapView = Map.GetMapView();    TopLeft = MapView.TopLeftLatLong;    BottomRight = MapView.BottomRightLatLong;    //TopleftLatLong and BottomRightLatLong return a VELatLong object.    Map.AttachEvent("onchangeview", MapChangedView);    GetMapData.GetPointData(10, TopLeft.Latitude, TopLeft.Longitude,        BottomRight.Latitude, BottomRight.Longitude, GetDataSuccess);}function GetDataSuccess(result){    var i = 0;    var Lat, Lon;    $get("MapInfo").innerHTML = "";    for(i=0;i<result.length;i++)    {        Lat = result[i].Location.Lat;        Lon = result[i].Location.Lon;        var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(Lat, Lon));        shape.SetTitle("Title: " + i);        shape.SetDescription(result[i].Description);        Map.AddShape(shape);        $get("MapInfo").innerHTML += "Point Location - Lat: " +             result[i].Location.Lat + " Lon: " + result[i].Location.Lon + "<br />";    }}

     

    function MapChangedView(e){    Map.DeleteAllShapes();    MapView = Map.GetMapView();    TopLeft = MapView.TopLeftLatLong;    BottomRight = MapView.BottomRightLatLong;    GetMapData.GetPointData(10, TopLeft.Latitude, TopLeft.Longitude,        BottomRight.Latitude, BottomRight.Longitude, GetDataSuccess);}</script></asp:Content>

     

    Web Service: 

    using System;using System.Collections;using System.Collections.Generic;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Web.Script.Services; /// <summary>/// Summary description for GetMapData/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ScriptService]public class GetMapData : System.Web.Services.WebService {     public GetMapData () {         //Uncomment the following line if using designed components         //InitializeComponent();     }     [WebMethod]    [GenerateScriptType(typeof(MapData))]    public MapData MapData()    {        MapData md = new MapData();        LatLon ll = new LatLon();        ll.Lat = 36;        ll.Lon = -84;        md.Center = ll;        md.ZoomLevel = 8;        return (md);    }     [WebMethod]    [GenerateScriptType(typeof(PointData))]    public PointData[] GetPointData(int PointCount,         double ULLat, double ULLon,         double LRLat, double LRLon)    {        int i = 0;        double PTLat, PTLon;        double LatDelta, LonDelta;        Random rd = new Random();        PointData pd;        LatLon ll;        List<PointData> pdl = new List<PointData>();         LatDelta = ULLat - LRLat;        LonDelta = ULLon - LRLon;         for (i = 0; i < PointCount; i++)        {            pd = new PointData();            ll = new LatLon();            ll.Lat = LRLat + LatDelta * rd.NextDouble();            ll.Lon = LRLon + LonDelta * rd.NextDouble();            pd.Location = ll;            pd.Description = "Point number: " + i.ToString();            pdl.Add(pd);        }        return (pdl.ToArray());    }} public class MapData{    public LatLon Center;    public int ZoomLevel;} public class LatLon{    public double Lat;    public double Lon;} public class PointData{    public LatLon Location;    public string Description;}
  • ASP.NET Podcast Show #110 - Integrating ASP.NET AJAX with Google Maps

    Original Url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/05/01/asp-net-podcast-110-integrating-asp-net-ajax-with-google-maps.aspx

    Subscribe

    Download - WMV - PC Video.

    Download M4V - iPod Video.

    Download MP3 - Audio Only.

    ASP.NET AJAX with Google MapsShow Notes:

    • Integrate ASP.NET AJAX with Google Maps.
    • Google Key.
    • Web Services.
    • Returning Data.
    • Setting up the Map.
    • Adding points to the Map. 
    • Clearing the Map.

    Web Service Code:

    using System;using System.Collections;using System.Collections.Generic;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Web.Script.Services; /// <summary>/// Summary description for GetMapData/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ScriptService]public class GetMapData : System.Web.Services.WebService {     public GetMapData () {         //Uncomment the following line if using designed components         //InitializeComponent();     }     [WebMethod]    [GenerateScriptType(typeof(MapData))]    public MapData MapData()    {        MapData md = new MapData();        LatLon ll = new LatLon();        ll.Lat = 36;        ll.Lon = -84;        md.Center = ll;        md.ZoomLevel = 8;        return (md);    }     [WebMethod]    [GenerateScriptType(typeof(PointData))]    public PointData[] GetPointData(int PointCount,         double ULLat, double ULLon,         double LRLat, double LRLon)    {        int i = 0;        double PTLat, PTLon;        double LatDelta, LonDelta;        Random rd = new Random();        PointData pd;        LatLon ll;        List<PointData> pdl = new List<PointData>();         LatDelta = ULLat - LRLat;        LonDelta = ULLon - LRLon;         for (i = 0; i < PointCount; i++)        {            pd = new PointData();            ll = new LatLon();            ll.Lat = LRLat + LatDelta * rd.NextDouble();            ll.Lon = LRLon + LonDelta * rd.NextDouble();            pd.Location = ll;            pd.Description = "Point number: " + i.ToString();            pdl.Add(pd);        }        return (pdl.ToArray());    }} public class MapData{    public LatLon Center;    public int ZoomLevel;} public class LatLon{    public double Lat;    public double Lon;} public class PointData{    public LatLon Location;    public string Description;}

    ASPX Page Code:

    <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Google_Default" Title="Google Maps Page" %><asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"><div id="MapDiv" style="width:450px; height: 350px;" ></div> <br /><div id="MapInfo"></div><script language="javascript" type="text/javascript">var Map;function pageLoad(){    GetMapData.MapData(SetupMap);} function SetupMap(result){    var Lat = result.Center.Lat;    var Lon = result.Center.Lon;    var ZoomLevel = result.ZoomLevel;    var Bounds, sw, ne;    Map = new GMap($get("MapDiv"));        Map.addControl(new GSmallMapControl());    Map.addControl(new GMapTypeControl());    Map.setCenter(new GLatLng(Lat, Lon), ZoomLevel);    Bounds = Map.getBounds();    sw = Bounds.getSouthWest();    ne = Bounds.getNorthEast();    $get("MapInfo").innerHTML="SW Point: " + sw + "<br />" + "NE Point: " + ne + "<br />";    GEvent.addListener(Map, "dragend", MapMoved);    GEvent.addListener(Map, "zoomend", MapZoomed);    GetMapData.GetPointData(10, sw.lat(), ne.lng(), ne.lat(), sw.lng(), GetDataSuccess);}function MapMoved(){    var Bounds, sw, ne;    Bounds = Map.getBounds();    sw = Bounds.getSouthWest();    ne = Bounds.getNorthEast();    Map.clearOverlays();    GetMapData.GetPointData(10, sw.lat(), ne.lng(), ne.lat(), sw.lng(), GetDataSuccess);}function MapZoomed(OldZoomLevel, NewZoomLevel){    MapMoved();}function GetDataSuccess(result){    var i = 0;    $get("MapInfo").innerHTML = "";    for(i=0;i<result.length;i++)    {        var pt = new GLatLng(result[i].Location.Lat,             result[i].Location.Lon);        Map.addOverlay(DisplayPointMarker(pt, result[i].Description));        $get("MapInfo").innerHTML += "Point Location - Lat: " +             result[i].Location.Lat + " Lon: " + result[i].Location.Lon + "<br />";    }} function DisplayPointMarker(point, Description){    var gmrker = new GMarker(point);    var Message = Description    GEvent.addListener(gmrker, "click", function(){        Map.openInfoWindowHtml(point, Message);    });    return(gmrker);}</script></asp:Content> 

    MasterPage.master source code:

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>ASP.NET Podcast Mapping Page</title>    <asp:ContentPlaceHolder id="head" runat="server">    </asp:ContentPlaceHolder>    <script src=http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=........." language="javascript" type="text/javascript"></script>    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script> </head><body onunload="GUnload()">    <form id="form1" runat="server">    <asp:ScriptManager ID="sm" runat="server">        <Services>            <asp:ServiceReference Path="~/GetMapData.asmx" />        </Services>    </asp:ScriptManager>    <div>        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body></html><%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>ASP.NET Podcast Mapping Page</title>    <asp:ContentPlaceHolder id="head" runat="server">    </asp:ContentPlaceHolder>    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAA_mrKwezGRvHyiI2zD3-QjxQyvuBphQwgXhP_kHK6Ww2QlMKTbxQ3mY6sQnMU6V5PMK8wQzOfhkt_Vw" language="javascript" type="text/javascript"></script>    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script> </head><body onunload="GUnload()">    <form id="form1" runat="server">    <asp:ScriptManager ID="sm" runat="server">        <Services>            <asp:ServiceReference Path="~/GetMapData.asmx" />        </Services>    </asp:ScriptManager>    <div>        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body></html><%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!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>ASP.NET Podcast Mapping Page</title>    <asp:ContentPlaceHolder id="head" runat="server">    </asp:ContentPlaceHolder>    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAA_mrKwezGRvHyiI2zD3-QjxQyvuBphQwgXhP_kHK6Ww2QlMKTbxQ3mY6sQnMU6V5PMK8wQzOfhkt_Vw" language="javascript" type="text/javascript"></script>    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script> </head><body onunload="GUnload()">    <form id="form1" runat="server">    <asp:ScriptManager ID="sm" runat="server">        <Services>            <asp:ServiceReference Path="~/GetMapData.asmx" />        </Services>    </asp:ScriptManager>    <div>        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body></html>
2006 - Wallace B. McClure
Powered by Community Server (Non-Commercial Edition), by Telligent Systems