Project SOAK winner of 2008 Imagine Cup Australia.

The theme of this year’s Imagine Cup is “Imagine a world where technology enables a sustainable environment.” It had been a great honorary for me to take part as one the Judges of the 2008 Imagine Cup Australia. All the teams worked real hard and came up with breathtaking solutions. The interesting part was  solutions were built on top of cutting edge technologies technologies ie. Silverlight, Virtual Earth, LINQ, ASP.NET 3.5, WCF, .NET 3.5 and SQL2005.

The Project SOAK is announced the winner of Australian Imagine Cup 08. SOAK which stands for “Smart Operational Agriculture toolKit” is an integrated hardware and softwares platform that aims to help farmers make the most of the water (and other) resources on their land. It does this through an integration of a wide range of sensors which gathers data about the environment in real time, provide rich visual information to end-user about the status of the farm, and electronically controls various systems such as sprinklers. The team members of SOAK blogged more about the project, can be found here

http://davidburela.wordpress.com/2008/05/22/2008-imagine-cup-australian-winner-project-soak/

http://www.istartedsomething.com/20080523/imagine-cup-australian-winner-project-soak/

Australian PC Magazine has just published published a very insightful story on this project and the competition

I found SOAK to be a brilliant piece of work, where the team combined latest technologies together and came up with a environment friendly cost effective solution.

The winning team will now represent Australia at the World Imagine Cup finals in Paris in July.

 

Imagine Cup 2008 – Australia – Judging Panel

 

The Imagine Cup’s judging panel consisted of Roger Lawrence, Microsoft Australia’s Manager Developer Evangelism; Nigel Watson, Microsoft Australia Architect Evangelist; Shekhar Kalra, computer science lecturer at RMIT University; Shahed Khan, Senior Software Engineer at Ocean Informatics MVP C#.NET, and APC, represented by its editor, Tony Sarno.

ASP.NET Bug, Multi View control do not save ViewState, of dynamically added controls

Couple of days back me and my colleague, we discovered an issue with the ASP.NET Multi View Control.
We were surprised  to see that it do not add ViewState, of the dynamically added controls, of the Inactive Tabs.

ASP.NET 2.0

       <asp:MultiView ID=”MultiView1″ runat=”server” EnableViewState=”true”>       
        </asp:MultiView>

C# Code Behind

        if (!IsPostBack)
        {
            int index = 1;
            foreach (View v in MultiView1.Views)
            {               
                    TextBox t = new TextBox();
                    t.ID = index.ToString();
                    t.Text = “This text will not be assigned, to any Inactive Tabs, unless you put a breakpoint on this line and watch the value of this line explicitly“;
                    v.Controls.Add(t);
                    index = index + 1;               
            }
        }

 

Surprisingly, you will notice only the Textbox.Text of the Active Tab will have value,
however if you go to any other Tab of the MultiViewControl, you will notice that the TextBoxes are empty.

After investigating further we realized that the Viewstates of the dynamically added controls are not saved (for any of the inactive tabs).
It became more interesting, when we started to debug, by putting a breakpoint to watch TextBox.Text, surprisingly every TextBox gets populated with desired Text ( for all tabs including the inactive tab, only when you explicitly watch ). Also it saves all ViewState correctly.

Not sure whether its a bug,  the ASP.NET team may have wanted this behavior to enhance performance of the Multi View control,

but if that is the case, why does it populate the TextBox.Text and also saves into Viewstate, when we try to debug !!!

 

Do not believe me?  Try it by yourself !!