Wednesday, November 9, 2011

Creating a Project Status Dashboard using ASP.NET


When I was working as a contractor for Maricopa County in Phoenix, AZ  I was asked by the CIO to create a "quick" prototype application that would track strategic priorities, related initiatives (projects) and organizations working on the initiatives.  He wanted to track how initiatives where meeting the priorities and the status of the initiatives (on time, past due, over budget, etc.).  He wanted to see everything with a simple dashboard style Webpage that showed green lights, yellow lights and red lights.  A screen shot of the solution I threw together for him in (about a day total) using ASP.NET 2.0 is shown below:
Project Initiatives Example with green, yellow and red lights
I'm a big fan of the ObjectDataSource control combined with the N-Tier/N-Layer architecture where you have a Presentation tier, Business tier, Data tier (and possibly a Model tier for data entity objects) but for simple admin pages I don't hesitate to use the SqlDataSource control....especially when there are no business objects available to consume, and when the project has to be done as quickly as possible.  So, this project demonstrates using the SqlDataSource control throughout to call SQL Server 2000 stored procedures to perform selects, inserts, updates and deletes.  It relies upon the GridView and DetailsView controls to display and edit data and leverages templates to embed drop-down list controls into the DetailsView.  It also demonstrates how to access nested parameter data using the "$" character.  I wrote about how this character can be used to find nested control values in a previous post.
You can download the project below.  The Readme.txt file that is included lets you know where to get the sample database to attach as well as a few minor setup tasks.  NOTE:  I did this project very quickly (it was only a prototype) so it's by no means perfect and doesn't handle all potential errors that could come up.  However, it will give people a head-start if they're trying to learn ASP.NET 2.0 controls.