Archives / 2007 / October
  • Important Information regarding Visual Studios 2008 Beta 2

    We know many of you have been testing the Visual Studio 2008 Beta 2 VPC images,  It has been brought to our attention that the current Visual Studio 2008 Beta 2 VPC images will expire on November 1, 2007, rather than March 15, 2008 as originally announced.  It is strongly encouraged that you take all necessary steps before November 1, 2007 to back up all your projects and move your Team Foundation Server data to an alternate location.  For instructions on moving your TFS data please refer to the article Moving Team Foundation Server,, located on the MSDN Library.


    REQUEST: As this change impacts many members of the community, assistance you can provide spreading the word is greatly appreciated.  So please share this information with the community any where you see fit – blogs, web sites, user groups, newsletters, etc.


    For the latest information and up to date information on this please refer to the Visual Studio Developer Center,


    A short Frequently Asked Questions (FAQ) is listed below:

     FAQQ. Will my data be available after November 1, 2007?

    A. This is still being researched, however, currently the understanding is that customers will NOT be able to access their date after November 1st unless the data is moved to an alternate installation location.

     Q. Can I reset my system date to re-enable the OS image?

    A. Again there is still research being done, however, from the current understanding of the problem resetting the system date back DOES NOT re-enable the OS image.


    If we have any further information to share will be sure to let you know.


    Thank you for helping us spread the word.



  • HDC07 - A big success!

    What a great time to be had a development conferences.  Putting that many smart people in one room should be illegal honestly.  Two solid days of .NET energy (and one adobe flex talk, ...<blink>) - Culminated with a 4 hour presentation by Scott Guthrie on the new Visual Studios 2008 / .NET 3.0 and 3.5 features. 


  • Ajax Service Methods: Returning Strong types or lists.

    In all the examples we've seen so far, we've returned simple strings, integers, or a standard type / value.  That's all fine and good, until we have something a little more complex to return, or need to return a list or array of something, or a list of type.  In the following example I'll demonstrate through code how to accomplish just that.

    So lets get started at our webservice first.  I'll create a webservice in my project named WebService1.asmx.  Inside it will be a class called WebService1.  The first thing we need to do is add the class attribute that lets us call this through our JavaScript proxy.

    <System.Web.Script.Services.ScriptService()> _

    I'm going to go ahead and fire up my service to check it and test the hello world example, once I'm done with that, we can move on!

    <?xml version="1.0" encoding="utf-8" ?> <string xmlns="">Hello World</string>

    Ok, I hope everyone checked their service, create the complex type that we'll be returning, we need are going to add a new class file to our project, and call it widget.

    I'm going to keep the example simple, so I've just wired up two properties, with their private members, and a default constructor with one overload so that I can new it in one line.

    Public Class widget
     Private _Name As String
     Public Property Name() As String
     Return _Name
     End Get
     Set(ByVal value As String)
     _Name = value
     End Set
     End Property
     Private _Price As Decimal
     Public Property Price() As Decimal
     Return _Price
     End Get
     Set(ByVal value As Decimal)
     _Price = value
     End Set
     End Property
     Public Sub New()
     End Sub
     Public Sub New(ByVal Name As String, ByVal Price As Decimal)
     _Price = Price
     _Name = Name
     End Sub
    End Class

    Ok, so back to our webservice to do something with our widget!  I'm going to mock up 5 widgets for this example, normally you'd connect to your datasource or collection object to get real life data.

    <WebMethod()> _
    Public Function GetWidgets() As List(Of widget)
     Dim tempWidgets As New List(Of widget)
     For I As Integer = 1 To 5
     Dim tempWidget As New widget("Name:" & I, CDec(I))
     Return tempWidgets
    End Function

    I can verify this is working by running the service again and getting this result:

    <?xml version="1.0" encoding="utf-8" ?> 
    - <ArrayOfWidget xmlns:xsi="" xmlns:xsd="" xmlns="">
    - <widget>
    - <widget>
    - <widget>
    - <widget>
    - <widget>

    Ok, now for the fun part, lets work with this data coming back - lets get into the page we'd like to call the webservice, and wire it up.  The first thing we'll need is a container to hold this data.  I'm just loading up a div in this case, dont forget to set the ID so you can find it. 

    <div id="returnData">

    In this case, I'm going to have a button fire the event that calls the webservice, so we'll add that too:

    <asp:Button ID="button1" runat="server" OnClientClick="doWork" Text="Do Work" />

    The last thing we need before we write our JavaScript is our service reference inside our script manager on the page.

    <asp:ScriptManager ID="scriptmanager1" runat="server">
     <asp:ServiceReference Path="~/WebService1.asmx" />

    Ok, on to our Javascript!

    I'm going to post the complete example in here - and let you guys parse through it.  Please feel free to post comments or questions:

    <script type="text/javascript" language="javascript">
     function pageLoad(){
     ret = WebService1.GetWidgets(onComplete, onError, onTimeout);
     function onComplete(result){
     var retData = new Array(5);
     retData = result;
     var strDiv = ""
     var x = 0;
     for (x=0; x<5; x++)
     strDiv = strDiv + retData[x].Name + " " + retData[x].Price + "<br />";
     document.getElementById("returnData").innerHTML = strDiv;
     function onError(){}
     function onTimeout(){}

    As always, Happy Coding and good luck!

    Bryan Sampica