Tab controls on web pages

With the recent surge in AJAX enabled web sites I have to wonder if web user interfaces are still as intuitive as they were when we simply had to fill in a form and press the Save or Submit button. Nowadays user interfaces, like the one pictures below from Community Server 2007, are relying more and more on tab controls and other controls that are more often seen in traditional PC applications.

Community Server tabbed profile editor

The problem I often encounter with tab controls embedded in web applications is confusion. If I click on a tab, will it in fact post-back to the server and render a new page or is it a client site control. In the case of Community Server it is a client-side control but I’ve experienced other sites and applications that simply lose my changes when I change tabs. Its really quite annoying as I don’t like entering my information only to find that most of my edits have actually been discarded.

If only there was a way that web developers could communicate with the end-user more. One idea would be to prompt the user to save or discard the changes.

[tags]user interface,design[/tags]

Silverlight 1.1 UserControl C# template code does not follow best practices

Why does the Microsoft Visual Studio team not follow the best practices internally? When creating a Silverlight 1.1 UserControl under Visual Studio 2008 Beta 2 it generates the following code by default.

    System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("Project1.UserControl1.xaml");
    this.InitializeFromXaml(new System.IO.StreamReader(s).ReadToEnd());

Most developers would realise that this is not good code. Why do I say this, well firstly the code is creating two objects, a System.IO.UnmanagedMemoryStream and a System.IO.StreamReader, that implement IDisposable and are not disposing the objects immediately after use. Yeah sure the finalizer will take care of any unmanaged resources at the end of the day but why not just release the resources in a predictable and up front manner. I have recommended that Microsoft use the following instead.

    using (System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("Project1.UserControl1.xaml"))
    {
        using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
        {
            this.InitializeFromXaml(sr.ReadToEnd());
        }
    }

If you feel strongly about best practices, please take a moment and vote for this on the feedback site here.

[tags]Visual Studio,Silverlight,best practices[/tags]

Building data interfaces for .NET

SA Developer .NET Just a quick reminder for the free SA Developer .NET event tomorrow, the 8th September 2007, on building .NET data interfaces. The talk will be held in the Microsoft auditorium in Bryanston and presented by André van Rensburg.

There are tons of resources available on how to access data from a .net application. How is it that this is still really difficult to get right? The myriad of options and requirements often makes it difficult to map the two extremes effectively – to choose the right option for a given requirement. I will discuss some practical approaches to accessing data with ADO.net that focus on fast and effective ways to get up and running without sacrificing flexibility and maintainability. I will include discussions on DAL-BLL generators, data object verses data sets, usage scenarios, presentation integration, and if time permits, how to ‘Linq’ it all together.

If you haven’t done so already, please RSVP and let us know you are coming on the forum here.

[tags]SA Developer .NET,events[/tags]