Ok, so I finally bit the bullet and scheduled some time to sit down and take a look at Microsoft's up and coming server platform currently code-named Longhorn. I almost exclusively use Virtual PC 2007 for this type of testing, and this was no exception. The OS gave me no issues installing in this environment and greeted me after a few reboots with a healthy logon screen that is similar but somewhat less decorated than the Windows Vista logon screen.
In the first installment of this series, we discussed the reasons for creating a clean and efficient UI, and some of the methods behind it. If you haven't read the first part I suggest you do so here. In this article we are going to go over some of the basics in getting setup to provide a streamlined user interface in a business sector. Examples of use would be an intranet application, a Contact management solution, or some similar file / information store. We'll discuss the pro's and con's of a few model types and ultimately choose a method and start our design. The goal at the end of this article is to provide an interface "shell" that can be reused across different application types. This shell should be similar to a template, but more extensible.
David Yancey over at his Geebs blog has created a slick little bit of code to allow users to put a "Who's online" type of control on their sites by querying the membership provider. It appears it also allows for anonymous users as well. Check it out
I've tried to be as thorough as possible in this series of articles, this articles assume above beginner knowledge of CSS, ASP.NET controls, and AJAX Control Toolkit items. The series is scheduled for 5 parts and at the end of the series I will provide a link to an example project that incorporates and demonstrates the items we'll talk about throughout the series.
I just wanted to take a moment to thank the Cedar Rapids branch of the INETA user group for the warm welcome. I enjoyed speaking to the group tonight, and I hope some useful information was had by all.
I'm in the process as we speak of converting the video I took to a web format, and I'll make it available as soon as I can get it converted to something web friendly.
I look forward to further meetings.
To those that had extended questions - I'll get emails out to you, as soon as I can work up some good examples.
To clarify a few points:
At one point during the presentation I mentioned that PHP was not a high performance platform. I should stand corrected (with a little help). What I should have said was - any I could write under PHP wouldn't be high performance by any means.
One of the most significant questions of the evening was:
'What do you see are the downsides to using Ajax' (non verbatim).
Anyone that has comments about that topic - feel free to post.
I've always wished that the Ajax control could create a "fuzzy" shadow. don't get me wrong, I think it's GREAT that it's included in the toolkit as is, but it's a little lacking. In a previous blog entry I had shown a small hack using recursive extenders to create a fuzzy effect. Here's a simplified result:
Recently, I was given the opportunity to speak at an up-coming INETA meeting (Cedar Rapids, IA branch. http://www.crineta.org). I have been doing a lot of Ajax Script service things lately, and really wanted to get the lead out and try my hand at an entire example.
Filed Under: Weblog
Ok, I've started migrating content over from my personal blog to this one - and I'm seeing an issue...it's cutting my code off on the right hand side. I'm not quite sure why this is happening but I'm guessing it's the <pre> tag I use to encapsulate code.
I'll get it worked out in the next few days, so that future code is not cut off.
As a temporary solution you can copy and paste the code from the code blocks directly into your environment, or into notepad or something similar, and it does get it all.
Bryan Sampica ( Freakyuno )
Depending on your design, it may or may not work to have your atlas progress rendering inline with your other content. This is actually kind of a pain. My situation included a gridview being rendered that may require the user to scroll, clicking a paging link at the bottom. Clicking this link triggers the update progress template at the TOP of the page - But does almost nothing to inform the user who has now scrolled down and doesn't see it.
We need a way to inform the user that an Ajax panel is getting data from the server, and is actually doing anything. Surprisingly enough, the "page flash" that we all hated in a standard browser application, did serve as instant user feedback - where as Ajax update panes leave the web page drooling and blinking at the user. In some cases they may not even be aware that data has changed or updated.
Ok - so lets get started eh?
For this example, I'm going to return a DateTime string, and set it to the label in my page. I'm going to do this in some code that forces a delay so we can see the update Progress template work.
Go ahead and get your page setup like this to get us started.
You can get some free Ajax Update type animated GIFS from this site. I went ahead and grabbed the Roller.gif for this example.
<div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> <div id="updateDiv" style="position: absolute"> <img src="roller.gif" /> </div> </ProgressTemplate> </asp:UpdateProgress> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Label ID="lblDateTime" runat="server" Text="" /><br /> <asp:Button ID="btnUpdate" runat="server" Text="Update" /> </ContentTemplate> </asp:UpdatePanel> </div>
Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnUpdate.Click 'THREAD SLEEP should never be used in production applications System.Threading.Thread.Sleep(4000) lblDateTime.Text = System.DateTime.Now End Sub
Again, nothing special here. We simply created a button click event that updates our labels value. The progress template we setup will kick in as soon as that thread sleep starts ticking.
And Wa-lah! Go ahead and render your page and click the button. You're progress now stays on your mouse, and gives the user instant feedback that something is going on. In a follow-up we'll examine two different methods of accomplishing this, that also could be useful.
Bryan Sampica - ASP.NET MVP.
I'd like to thank Joe S, and the ASP.NET team for taking their time to setup this blog for me. I intend to put it to good use. Over the next few days I'll be migrating content from my previous blog located at http://bryan.proessent.com to here. Both should remain active though.