The HTML text

<html> <head> <TITLE>4GuysFromRolla.com</TITLE> <LINK REL="Bookmark Icon" HREF="/favicon.ico"> <META NAME="title" CONTENT="4GuysFromRolla.com"> <META NAME="description" CONTENT="4Guys is an online resource site for ASP and ASP.NET information!"> <META NAME="channel" CONTENT="Windows Technology"> <META NAME="author" CONTENT="Scott Mitchell"> <META NAME="keywords" CONTENT="ASP Web technology Microsoft asp, asp.net, sql, javascript, vbscript, database, date, .net, array, validation, code, request.servervariables, server.mappath, xmlhttp, guys from rolla, css buttons, sql injection, datagrid paging, microsoft.xmlhttp, sql case, stored procedure, 4guysfromrolla, adovbs.inc, 4guysfromrolla.com, asp date functions, asp.net interview questions, microsoft interview questions, vbscript date"> <link rel="alternate" type="application/rss+xml" title="4GuysFromRolla.com Headlines" href="http://aspnet.4guysfromrolla.com/rss/rss.aspx"> <link rel="stylesheet" HREF="/css/text.css" TYPE="text/css"> <link rel="search" type="application/opensearchdescription+xml" href="/OpenSearch.xml" title="4Guys Search"> </head> <body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" rightmargin="0" bgcolor="#FFFFFF" > <script language="JavaScript"> <!-- This script and many more are available free online at --> <!-- The JavaScript Source!! http://javascript.internet.com --> <!-- Original: David Sosnowski (support@codefoot.com) --> <!-- Web Site: http://www.codefoot.com --> <!-- Begin function blockError(){return true;} window.onerror = blockError; // End --> </script> <script language="javascript" src="/include/4guysads_home.js"></script> <!-- Kontera ContentLink(TM);--> <script type='text/javascript'> var dc_AdLinkColor = 'blue' ; var dc_PublisherID = 125541 ; </script> <script type='text/javascript' src='http://kona.kontera.com/javascript/lib/KonaLibInline.js'> </script> <!-- Kontera ContentLink(TM) --> <center><!-- house_ribbon ad tag --> <script language="javascript"> <!-- OAS_AD('house_ribbon'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!house_ribbon"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!house_ribbon" border="0"></a></noscript> <!-- /house_ribbon ad tag --> </center> <table width="100%" cellpadding="4" cellspacing="0" border="0"> <tr><td align="center"><!-- 468x60-1 ad tag --> <script language="javascript"> <!-- OAS_AD('468x60-1'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!468x60-1"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!468x60-1" border="0"></a></noscript> <!-- /468x60-1 ad tag --> </td></tr> </table> &nbsp;&nbsp;<font face="verdana" style="font-size: 10pt; font-weight: bold; color: #336666">When you think ASP, think...</font> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td background="/img/top-bg.gif" width="1%"><a href="http://www.4guysfromrolla.com/"><img src="/img/4guyslogo.gif" width="405" height="85" border="0" vspace="0" hspace="0"></a></td> <td background="/img/top-bg.gif" width="99%"> <table width="100%" cellpadding="0" border="0" cellspacing="0" background> <tr> <td background><img src="/img/sp.gif" width="1" height="20" border="0" alt vspace="0" hspace="0"></td> </tr> <tr> <td background valign="top"> <table cellpadding="0" border="0" background="0"> <tr><form method="post" action="http://search.internet.com/query"> <td><img src="/img/search.gif" width="71" height="25" border="0" vspace="0" hspace="0"></td> <td align="right"> <input type="hidden" name="IC_Summary" value="1"> <input type="hidden" name="IC_StartNumber" value="0"> <input type="hidden" name="IC_BatchSize" value="10"> <input type="hidden" name="IC_RelevanceThreshold" value="50"> <input type="hidden" name="IC_QueryDatabase" value="www.4guysfromrolla.com"> <input type="text" name="IC_QueryText" style="font-size: 7pt; width: 100px; height: 16px;" vspace="0" hspace="0"></td> <td align="left"><input type="image" src="/img/go-green.gif" vspace="0" hspace="0" border="0" name="submit"></td> <td><a href="http://www.4guysfromrolla.com/search/"><img src="/img/advanced-search.gif" width="65" height="25" border="0" vspace="0" hspace="0"></a></td> </tr></form> </table> </td> </tr> <tr> <td background><img src="/img/sp.gif" width="1" height="20" border="0" alt vspace="0" hspace="0"></td> </tr> </table> </td> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td width="1%" background="/img/leftnav-bg.gif" valign="top"> <table width="150" cellpadding="0" cellspacing="0" border="0" background> <tr> <td colspan="3"><img src="/img/site-index.gif" width="150" height="42" border="0" vspace="0" hspace="0"></td> </tr> <tr> <td width="19"><img src="/img/sp.gif" width="19" height="1" border="0"></td> <td width="126" bgcolor="#FDF1DA"> <table width="126" background bgcolor="#FDF1DA" cellpadding="3" cellspacing="0" style="border-left: 1px solid #000000;border-right: 1px solid #000000;"> <tr><td><a href="http://www.4guysfromrolla.com/webtech/" class="guysnav"><i>Recent Articles</i></a> <a href="http://aspnet.4guysfromrolla.com/rss/rss.aspx"><img src="/images/xml.gif" border="0" /></a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/index_asp.shtml" class="guysnav">All Articles</a></td></tr> <tr><td><a href="http://aspnet.4guysfromrolla.com/" class="guysnav">ASP.NET Articles</a> [<a href="http://aspnet.4guysfromrolla.com/1.x/" class="guysnav">1.x</a>] [<a href="http://aspnet.4guysfromrolla.com/2.0/" class="guysnav">2.0</a>]</td></tr> <tr><td><a href="http://www.aspfaqs.com/aspfaqs/" class="guysnav">ASPFAQs.com</a></td></tr> <tr><td><a href="http://www.aspmessageboard.com/" class="guysnav">Message Board</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/LearnMore/" class="guysnav">Related Web Technologies</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/tips/" class="guysnav">User Tips!</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/top10/" class="guysnav">Coding Tips</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/search/" class="guysnav">Search</a></td></tr> </table> </td> <td width="5"><img src="/img/sp.gif" width="5" height="1" border="0"></td> </tr> <tr> <td width="19"><img src="/img/sp.gif" width="19" height="1" border="0"></td> <td><img src="/img/leftnav-btm.gif" width="126" height="10" border="0" alt vspace="0" hspace="0"></td> <td width="5"><img src="/img/sp.gif" width="5" height="1" border="0"></td> </tr> <tr> <td colspan="3"><img src="/img/sp.gif" width="1" height="10" border="0" alt></td> </tr> <tr> <td width="19"><img src="/img/sp.gif" width="19" height="1" border="0"></td> <td colspan="2"> <table cellspacing="0" cellpadding="0" border="0"> <tr><td><!-- marketplace01 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace01'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace01"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace01" border="0"></a></noscript> <!-- /marketplace01 ad tag --> </td></tr> <tr><td><img src="/img/sp.gif" width="1" height="3" border="0"></td></tr> <tr><td><!-- marketplace02 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace02'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace02"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace02" border="0"></a></noscript> <!-- /marketplace02 ad tag --> </td></tr> <tr><td><img src="/img/sp.gif" width="1" height="3" border="0"></td></tr> <tr><td><!-- marketplace03 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace03'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace03"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace03" border="0"></a></noscript> <!-- /marketplace03 ad tag --> </td></tr> <tr><td><img src="/img/sp.gif" width="1" height="3" border="0"></td></tr> <tr><td><!-- marketplace04 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace04'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace04"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace04" border="0"></a></noscript> <!-- /marketplace04 ad tag --> </td></tr> <tr><td><img src="/img/sp.gif" width="1" height="3" border="0"></td></tr> <tr><td><!-- marketplace05 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace05'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace05"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace05" border="0"></a></noscript> <!-- /marketplace05 ad tag --> </td></tr> <tr><td><!-- marketplace06 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace06'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace06"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace06" border="0"></a></noscript> <!-- /marketplace06 ad tag --> </td></tr> <tr><td><!-- marketplace07 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace07'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace07"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace07" border="0"></a></noscript> <!-- /marketplace07 ad tag --> </td></tr> <tr><td><!-- marketplace08 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace08'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace08"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace08" border="0"></a></noscript> <!-- /marketplace08 ad tag --> </td></tr> <tr><td><!-- marketplace09 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace09'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace09"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace09" border="0"></a></noscript> <!-- /marketplace09 ad tag --> </td></tr> <tr><td><!-- marketplace10 ad tag --> <script language="javascript"> <!-- OAS_AD('marketplace10'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace10"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!marketplace10" border="0"></a></noscript> <!-- /marketplace10 ad tag --> </td></tr> </table> </td> </tr> </table> <br> <table width="150" cellpadding="0" cellspacing="0" border="0" background> <tr> <td colspan="3"><img src="/img/leftnav-resources.gif" width="150" height="25" border="0"></td> </tr> <tr> <td width="16"><img src="/img/sp.gif" width="16" height="1" border="0"></td> <td width="126" bgcolor="#EEEEEE"> <table width="130" background bgcolor="#EEEEEE" cellpadding="4" cellspacing="0" style="border-left: 1px solid #000000;border-right: 1px solid #000000;"> <tr><td><b><i>Sections:</i></b></td></tr> <tr> <td><a href="http://www.15seconds.com/book/default.htm" class="guysnav">Book Reviews</a><br> <a href="http://www.4guysfromrolla.com/webtech/chapters/" class="guysnav">Sample Chapters</a></td> </tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/amb/" class="guysnav">Commonly Asked Message Board Questions</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/aspnews.asp" class="guysnav">Headlines from ASPWire.com</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/111599-1.shtml" class="guysnav">JavaScript Tutorials</a></td></tr> <tr><td><a href="http://communities2.microsoft.com/home/console.aspx?siteid=34000003" class="guysnav">MSDN Communities Hub</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/officialdocs.shtml" class="guysnav">Official Docs</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/LearnMore/Security.asp" class="guysnav">Security</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/sqlguru/" class="guysnav">Stump the SQL Guru!</a></td></tr> <tr><td><a href="http://webhost.thelist.com/" class="guysnav">Web Hosts</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/webtech/xml.shtml" class="guysnav">XML Info</a></td></tr> <tr><td><b><i>Information:</i></b></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/advertise.shtml" class="guysnav">Advertise</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/feedback.shtml" class="guysnav">Feedback</a></td></tr> <tr><td><a href="http://www.4guysfromrolla.com/authors.shtml" class="guysnav">Author an Article</a></td></tr> <tr><td><a href="http://www.justtechjobs.com/Jobseekers.asp" class="guysnav">Technology Jobs</a></td></tr> </table> </td> <td width="4"><img src="/img/sp.gif" width="4" height="1" border="0"></td> </tr> <tr> <td width="16"><img src="/img/sp.gif" width="16" height="1" border="0"></td> <td><img src="/img/leftnav-btm-gray.gif" width="130" height="10" border="0" alt vspace="0" hspace="0"></td> <td width="4"><img src="/img/sp.gif" width="4" height="1" border="0"></td> </tr> </table> <br> <div align="center"> <!-- 125x125-1 ad tag --> <script language="javascript"> <!-- OAS_AD('125x125-1'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!125x125-1"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!125x125-1" border="0"></a></noscript> <!-- /125x125-1 ad tag --> <br /> <br /> <!-- 120x60-1 ad tag --> <script language="javascript"> <!-- OAS_AD('120x60-1'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!120x60-1"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!120x60-1" border="0"></a></noscript> <!-- /120x60-1 ad tag --> </div> <br> <table width="150" cellpadding="0" cellspacing="0" border="0" background> <tr> <td colspan="3"><img src="/img/leftnav-icommerce.gif" width="150" height="25" border="0"></td> </tr> <tr> <td width="16"><img src="/img/sp.gif" width="16" height="1" border="0"></td> <td width="126" bgcolor="#EEEEEE"> <table width="130" background bgcolor="#EEEEEE" cellpadding="4" cellspacing="0" style="border-left: 1px solid #000000;border-right: 1px solid #000000;"> <tr> <td> <!-- cpX ad tags --> <!-- cp1 ad tag --> <script language="javascript"> <!-- OAS_AD('cp1'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp1"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp1" border="0"></a></noscript> <!-- /cp1 ad tag --> <br /><!-- cp2 ad tag --> <script language="javascript"> <!-- OAS_AD('cp2'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp2"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp2" border="0"></a></noscript> <!-- /cp2 ad tag --> <br /><!-- cp3 ad tag --> <script language="javascript"> <!-- OAS_AD('cp3'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp3"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp3" border="0"></a></noscript> <!-- /cp3 ad tag --> <br /><!-- cp4 ad tag --> <script language="javascript"> <!-- OAS_AD('cp4'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp4"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp4" border="0"></a></noscript> <!-- /cp4 ad tag --> <br /><!-- cp5 ad tag --> <script language="javascript"> <!-- OAS_AD('cp5'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp5"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp5" border="0"></a></noscript> <!-- /cp5 ad tag --> <br /><!-- cp6 ad tag --> <script language="javascript"> <!-- OAS_AD('cp6'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp6"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp6" border="0"></a></noscript> <!-- /cp6 ad tag --> <br /><!-- cp7 ad tag --> <script language="javascript"> <!-- OAS_AD('cp7'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp7"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp7" border="0"></a></noscript> <!-- /cp7 ad tag --> <br /><!-- cp8 ad tag --> <script language="javascript"> <!-- OAS_AD('cp8'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp8"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp8" border="0"></a></noscript> <!-- /cp8 ad tag --> <br /><!-- cp9 ad tag --> <script language="javascript"> <!-- OAS_AD('cp9'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp9"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp9" border="0"></a></noscript> <!-- /cp9 ad tag --> <br /><!-- cp10 ad tag --> <script language="javascript"> <!-- OAS_AD('cp10'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp10"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp10" border="0"></a></noscript> <!-- /cp10 ad tag --> <br /><!-- cp11 ad tag --> <script language="javascript"> <!-- OAS_AD('cp11'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp11"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp11" border="0"></a></noscript> <!-- /cp11 ad tag --> <br /><!-- cp12 ad tag --> <script language="javascript"> <!-- OAS_AD('cp12'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp12"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp12" border="0"></a></noscript> <!-- /cp12 ad tag --> <br /><!-- cp13 ad tag --> <script language="javascript"> <!-- OAS_AD('cp13'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp13"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp13" border="0"></a></noscript> <!-- /cp13 ad tag --> <br /><!-- cp14 ad tag --> <script language="javascript"> <!-- OAS_AD('cp14'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp14"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!cp14" border="0"></a></noscript> <!-- /cp14 ad tag --> <br /> <!-- /cpX ad tags --> </td> </tr> </table> </td> <td width="4"><img src="/img/sp.gif" width="4" height="1" border="0"></td> </tr> <tr> <td width="16"><img src="/img/sp.gif" width="16" height="1" border="0"></td> <td><img src="/img/leftnav-btm-gray.gif" width="130" height="10" border="0" alt vspace="0" hspace="0"></td> <td width="4"><img src="/img/sp.gif" width="4" height="1" border="0"></td> </tr> </table> <br> <table width="150" cellpadding="0" cellspacing="0" border="0" background> <tr> <td colspan="3"><a href="http://www.internet.com/"><img src="/img/leftnav-icom.gif" width="150" height="25" border="0" alt="internet.com"></a></td> </tr> <tr> <td width="16"><img src="/img/sp.gif" width="16" height="1" border="0"></td> <td width="126" bgcolor="#EEEEEE"> <table width="130" background bgcolor="#EEEEEE" cellpadding="4" cellspacing="0" style="border-left: 1px solid #000000;border-right: 1px solid #000000;"> <tr> <td> <A HREF="http://www.internet.com/it/" CLASS="icomtb" rel="nofollow">IT</A><BR> <A HREF="http://www.internet.com/developer/" CLASS="icomtb" rel="nofollow">Developer</A><BR> <A HREF="http://www.internetnews.com" CLASS="icomtb" rel="nofollow">Internet News</A><BR> <A HREF="http://www.smallbusinesscomputing.com" CLASS="icomtb" rel="nofollow">Small Business</A> <BR> <A HREF="http://www.internet.com/personaltechnology/" CLASS="icomtb" rel="nofollow">Personal Technology</A><BR> <!--<A HREF="http://www.internet.com/sections/international.html" CLASS="icomtb" rel="nofollow">International</A><BR>--> <BR> <A HREF="http://search.internet.com" CLASS="icomtb" rel="nofollow">Search internet.com</A><BR> <A HREF="http://www.internet.com/mediakit/" CLASS="icomtb" rel="nofollow">Advertise</A><BR> <A HREF="http://www.internet.com/Internetcom/Door/41188" CLASS="icomtb" rel="nofollow">Corporate Info</A><BR> <A HREF="http://e-newsletters.internet.com/" CLASS="icomtb" rel="nofollow">Newsletters</A><BR> <A HREF="http://www.justtechjobs.com/" CLASS="icomtb" rel="nofollow">Tech Jobs</A><BR> <A HREF="http://e-newsletters.internet.com/mailinglists.html" CLASS="icomtb" rel="nofollow">E-mail Offers</A><BR> </td> </tr> </table> </td> <td width="4"><img src="/img/sp.gif" width="4" height="1" border="0"></td> </tr> <tr> <td width="16"><img src="/img/sp.gif" width="16" height="1" border="0"></td> <td><img src="/img/leftnav-btm-gray.gif" width="130" height="10" border="0" alt vspace="0" hspace="0"></td> <td width="4"><img src="/img/sp.gif" width="4" height="1" border="0"></td> </tr> </table> </td> <td width="99%" valign="top"> <table width="100%" cellpadding="0" cellspacing="0" border="0" background> <tr> <td background="/img/topnav-bg.gif"><a href="http://www.4guysfromrolla.com/"><img src="/img/asp-topnav.gif" width="57" height="30" border="0" alt="ASP" vspace="0" hspace="0"></a></td> <td background="/img/topnav-bg.gif"><a href="http://aspnet.4guysfromrolla.com/"><img src="/img/aspnet-topnav.gif" width="90" height="30" border="0" alt="ASP.NET" vspace="0" hspace="0"></a></td> <td background="/img/topnav-bg.gif"><a href="http://www.aspfaqs.com/aspfaqs/"><img src="/img/aspfaqs-topnav.gif" width="96" height="30" border="0" alt="ASP FAQs" vspace="0" hspace="0"></a></td> <td background="/img/topnav-bg.gif"><a href="http://www.aspmessageboard.com/"><img src="/img/mboard-topnav.gif" width="141" height="30" border="0" alt="Message Board" vspace="0" hspace="0"></a></td> <td background="/img/topnav-bg.gif"><a href="http://www.4guysfromrolla.com/feedback.shtml"><img src="/img/feedback-topnav.gif" width="96" height="30" border="0" alt="Feedback" vspace="0" hspace="0"></a></td> <td background="/img/topnav-bg.gif"><a href="http://4guysfromrolla.justtechjobs.com/"><img src="/img/aspjobs-topnav.gif" width="99" height="30" border="0" alt="ASP Jobs" vspace="0" hspace="0"></a></td> <td align="right" background="/img/topnav-bg.gif"><img src="/img/topnav-right.gif" width="58" height="30" border="0" vspace="0" hspace="0"></td> </tr> </table> <img src="/img/right-bg.gif" width="7" height="24" border="0" align="right" vspace="0" hspace="0"> <!-- ciu ad tag --> <script language="javascript"> <!-- OAS_AD('ciu'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!ciu"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!ciu" border="0"></a></noscript> <!-- /ciu ad tag --> <div style="padding-left: 5px; padding-right: 5px;"> <table width="130" cellpadding="0" border="0" cellspacing="0" align="right"> <tr> <td> <script type="text/javascript" src="http://jlinks.industrybrains.com/jsct?sid=829&amp;ct=INTERNETCOM_DEVELOPER&amp;tr=4GUYSFROMROLLA&amp;num=5&amp;layt=7&amp;fmt=simp"></script> </td> </tr> <tr> <td> <!-- accessunit_one ad tag --> <script language="javascript"> <!-- OAS_AD('accessunit_one'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!accessunit_one"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!accessunit_one" border="0"></a></noscript> <!-- /accessunit_one ad tag --> <!-- accessunit_two ad tag --> <script language="javascript"> <!-- OAS_AD('accessunit_two'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!accessunit_two"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!accessunit_two" border="0"></a></noscript> <!-- /accessunit_two ad tag --> <!-- accessunit_three ad tag --> <script language="javascript"> <!-- OAS_AD('accessunit_three'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!accessunit_three"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!accessunit_three" border="0"></a></noscript> <!-- /accessunit_three ad tag --> <!-- flex ad tag --> <script language="javascript"> <!-- OAS_AD('flex'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!flex"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!flex" border="0"></a></noscript> <!-- /flex ad tag --> </td> </tr> <!-- JustTechJobs Big Box Start --> <tr> <td> <style type="text/css"> #contentbottomnoinset{ width: 358px; width: expression('360px'); padding: 0px; text-align: left; font-size: 11px; margin-right: 0px; margin-top: 5px; margin-bottom: 0px; border: 1px solid #000000; } #contentbottomnoinset h5 { width: 335px; padding-left: 5px; padding-top: 5px; margin-top: 0px; margin-bottom: 0px; font-size: 16px; color: #333; font-weight: bold; } #contentbottomnoinset .tile { background: #eae7d4; background: url(http://www.internet.com/img/bkgd_botcontentbkgd_tile.gif); line-height: 12px; padding: 3px; } #img_openings{ margin-top: -8px; padding: 5px; } .popinsetlink { font-weight: bold; } </style> <div id="contentbottomnoinset"> <div style="width:100%; background:url('http://www.internet.com/_mocks/windows-channel/4guys/jtjbox/jtjtopbg.jpg') repeat-x; height:43px;"> <h5 class="header"><a href="http://4guysfromrolla.justtechjobs.com/"><img hspace="0" border="0" align="absbottom" alt="Justtechjobs.com" src="http://images.justtechjobs.com/images/4guysfromrolla.gif"/></a>&nbsp;<a href="http://4guysfromrolla.justtechjobs.com/" style="color:#333333; text-decoration:none; font-family:arial,verdana,helvetica;">Featured ASP Jobs</a></h5> </div> <div class="tile"> <div class="tileinset"> <a class="popinsetlink" href=""/><p> <p><a class=popinsetlink href=http://4guysfromrolla.justtechjobs.com/CBJSViewJob.asp?ID={1E6AA9E2-B4A7-45F6-9B6D-D8C0AE400102}>Data Warehouse Architect (IL)</a><br>Next Step Systems<br>US-IL-Chicago</p><p><a class=popinsetlink href=http://4guysfromrolla.justtechjobs.com/CBJSViewJob.asp?ID={A367D9FA-A027-4D3F-9D60-C65E9609829B}>Finance Developer (IL)</a><br>Next Step Systems<br>US-IL-Chicago</p><p><a class=popinsetlink href=http://4guysfromrolla.justtechjobs.com/CBJSViewJob.asp?ID={AF86241A-B9E5-4BCB-A208-1FDF017C830D}>Risk Developer - C# - T-SQL - ASP.Net (IL)</a><br>Next Step Systems<br>US-IL-Chicago</p> </div> <div id="floatrssicon"> <a title="Search all Jobs" href="http://4guysfromrolla.justtechjobs.com/"> Search all ASP Jobs</a> | <a title="Post Your Resume" href="http://4guysfromrolla.justtechjobs.com/CBJSEditResume.asp"> Post A Resume</a> | <a title="Post A Job" href="http://www.justtechjobs.com/CBEmpPostJobLogin.asp?CB=4guysfromrolla.com"> Post A Job</a> </div> <div id="blankhide"> </div><div id="blankhide"> </div><div id="blankhide"> </div><div id="blankhide"> </div> <div id="blankhide"> </div><div id="blankhide"> </div><div id="blankhide"> </div><div id="blankhide"> </div> </div> </div> <br clear="all" /> </td> </tr> <!-- JustTechJobs Big Box Stop --> <tr> <td><img src="/img/sp.gif" width="12" height="10" border="0" alt> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td colspan="2" background="/img/right-hdr-bg.gif"><img src="/img/nl-signup.gif" width="192" height="30" border="0" alt="WebWeekly Sign Up" vspace="0" hspace="0"></td> </tr> <tr> <td><img src="/img/sp.gif" width="11" height="1" border="0" alt></td> <td width="100%"> <table width="100%" cellpadding="4" cellspacing="0" style="border-left: 1px solid #000000;border-bottom: 1px solid #000000;"> <tr> <td>Sign up for <a href="http://www.4guysfromrolla.com/WebWeekly/" class="headlines" style="font-size: 8pt">WebWeekly</a>, the weekly 4Guys newsletter! <br> <table cellpadding="0" border="0" background="0"> <tr><form method="post" action="http://member.internet.com/subscribe.php" id="frmWW" name="frmWW"> <td align="right"><input type="hidden" name="list_names[]" value="4guysfromrolla-html"></td> <td align="left"><input type="image" src="/img/go-white.gif" vspace="0" hspace="0" border="0" name="submit"></td> </tr></form> </table> </td> </tr> </table> </td> </tr> </table> </td> </tr> <tr> <td><img src="/img/sp.gif" width="12" height="10" border="0" alt> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td colspan="2" background="/img/right-hdr-bg.gif"><a href="http://www.internet.com/sections/win.html"><img src="/img/win-tech.gif" width="192" height="30" border="0" alt="Windows Technology" vspace="0" hspace="0"></a></td> </tr> <tr> <td width="1%"><img src="/img/sp.gif" width="11" height="1" border="0" alt></td> <td width="99%"> <table width="100%" cellpadding="4" cellspacing="0" style="border-left: 1px solid #000000;border-bottom: 1px solid #000000;"> <tr> <td>Check out these Web sites for articles, tutorials, FAQs, and code on ASP and related Technologies! <br> &#149; <a href="http://www.15seconds.com/" class="headlines" style="font-size: 8pt">15Seconds.com</a><br> &#149; <a href="http://www.asp101.com/" class="headlines" style="font-size: 8pt">ASP101.com</a><br> &#149; <a href="http://www.aspfaqs.com/" class="headlines" style="font-size: 8pt">ASPFAQs.com</a><br> &#149; <a href="http://www.aspmessageboard.com/" class="headlines" style="font-size: 8pt">ASPMessageboard.com</a><br> &#149; <a href="http://www.aspwire.com/" class="headlines" style="font-size: 8pt">ASPWire.com</a><br> &#149; <a href="http://www.devx.com/" class="headlines" style="font-size: 8pt">DevX.com</a><br> <p> [<a href="http://www.internet.com/sections/win.html" class="readmore">Complete List of Sites</a>] </td> </tr> </table> </td> </tr> </table> </td> </tr> <tr> <td><img src="/img/sp.gif" width="12" height="10" border="0" alt> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td width="1%"><img src="/img/sp.gif" width="11" height="1" border="0" alt></td> <td width="99%"> <a href="http://www.aspwire.com/"><img src="/images/aspwirehead.gif" border="0" alt="News from ASPWire"></a> <div style="font-size: 8pt; font-family: Arial, Helvetica, MS Sans Serif;"> <!-- Updated at: 3/20/2010 4:01:31 AM--> </div> </td> </tr> </table> </td> </tr> </table> <!--content_start--> <!-- <div> <p> <a href="_LINK_" class="headlines">_TITLE_</a><br /><span class="pubdate">_DATE_</span> </p> <div class="description"> <p> </p> <p> <br /><a href="_LINK_" class="readmore">Read More &gt;</a> </p></div> </div> See http://www.4guysfromrolla.com/rss/rss.test.aspx to make sure XML is valid --> <p> <div> <p> <a href="http://www.4guysfromrolla.com/articles/031710-1.aspx" class="headlines">Take Control Of Web Control ClientID Values in ASP.NET 4.0</a><br /><span class="pubDate">03/17/10</span> </p> <div class="description"> <p> Each server-side Web control in an ASP.NET Web Forms application has an <code>ID</code> property that identifies the Web control and is name by which the Web control is accessed in the code-behind class. When rendered into HTML, the Web control turns its server-side <code>ID</code> value into a client-side <code>id</code> attribute. Ideally, there would be a one-to-one correspondence between the value of the server-side <code>ID</code> property and the generated client-side <code>id</code>, but in reality things aren't so simple. By default, the rendered client-side <code>id</code> is formed by taking the Web control's <code>ID</code> property and prefixed it with the <code>ID</code> properties of its <i>naming containers</i>. In short, a Web control with an ID of <code>txtName</code> can get rendered into an HTML element with a client-side <code>id</code> like <code>ctl00_MainContent_txtName</code>. </p><p> This default translation from the server-side <code>ID</code> property value to the rendered client-side <code>id</code> attribute can introduce challenges when trying to access an HTML element via JavaScript, which is typically done by <code>id</code>, as the page developer building the web page and writing the JavaScript does not know what the <code>id</code> value of the rendered Web control will be at design time. (The client-side <code>id</code> value can be determined at runtime via the Web control's <a href="http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx"><code>ClientID</code> property</a>.) </p><p> ASP.NET 4.0 affords page developers much greater flexibility in how Web controls render their <code>ID</code> property into a client-side <code>id</code>. This article starts with an explanation as to why and how ASP.NET translates the server-side <code>ID</code> value into the client-side <code>id</code> value and then shows how to take control of this process using ASP.NET 4.0. Read on to learn more! <br /> <a href="http://www.4guysfromrolla.com/articles/031710-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/031010-1.aspx" class="headlines">Displaying Multimedia Content In A Floating Window Using FancyBox</a><br /><span class="pubDate">03/10/10</span> </p> <div class="description"> <p> While surfing the web you may have come across websites with images and other multimedia content that, when clicked, were displayed in a floating window that hovered above the web page. Perhaps it was a page that showed a series of thumbnail images of products for sale, where clicking on a thumbnail displayed the full sized image in a floating window, dimming out the web page behind it. Have you ever wondered how this was accomplished or whether you could add such functionality to your ASP.NET website? </p><p> In years past, adding such rich client-side functionality to a website required a solid understanding of JavaScript and the "eccentricities" of various web browsers. Today, thanks to powerful JavaScript libraries like <a href="http://jquery.com/">jQuery</a>, along with an active developer community creating plugins and tools that integrate with jQuery, it's possible to add snazzy client-side behaviors without being a JavaScript whiz. </p><p> This article shows how to display text, images, and other multimedia content in a floating window using <a href="http://fancybox.net/">FancyBox</a>, a free client-side library. You'll learn how it works, see what steps to take to get started using it, and explore a number of FancyBox demos. There's also a demo available for download that shows using FancyBox to display both text and images in a floating window in an ASP.NET website. Read on to learn more! <br /> <a href="http://www.4guysfromrolla.com/articles/031010-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/030310-1.aspx" class="headlines">Improving CSS With .LESS</a><br /><span class="pubDate">03/03/10</span> </p> <div class="description"> <p> <a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">Cascading Style Sheets</a>, or CSS, is a syntax used to describe the look and feel of the elements in a web page. CSS allows a web developer to separate the document content - the HTML, text, and images - from the presentation of that content. Such separation makes the markup in a page easier to read, understand, and update; it can result in reduced bandwidth as the style information can be specified in a separate file and cached by the browser; and makes site-wide changes easier to apply. For a great example of the flexibility and power of CSS, check out <a href="http://www.csszengarden.com">CSS Zen Garden</a>. This website has a single page with fixed markup, but allows web developers from around the world to submit CSS rules to define alternate presentation information. </p><p> Unfortunately, certain aspects of CSS's syntax leave a bit to be desired. Many style sheets include repeated styling information because CSS does not allow the use of variables. Such repetition makes the resulting style sheet lengthier and harder to read; it results in more rules that need to be changed when the website is redesigned to use a new primary color. Specifying inherited CSS rules, such as indicating that <code>a</code> elements (i.e., hyperlinks) in <code>h1</code> elements should not be underlined, requires creating a single selector name, like <code>h1 a</code>. Ideally, CSS would allow for nested rules, enabling you to define the <code>a</code> rules directly within the <code>h1</code> rules. </p><p> <a href="http://www.dotlesscss.com/">.LESS</a> is a free, open-source port of Ruby's <a href="http://lesscss.org/">LESS library</a>. LESS (and .LESS, by extension) is a parser that allows web developers to create style sheets using new and improved language features, including variables, operations, mixins, and nested rules. Behind the scenes, .LESS converts the enhanced CSS rules into standard CSS rules. This conversion can happen automatically and on-demand through the use of an HTTP Handler, or done manually as part of the build process. Moreover, .LESS can be configured to automatically minify the resulting CSS, saving bandwidth and making the end user's experience a snappier one. </p><p> This article shows how to get started using .LESS in your ASP.NET websites. Read on to learn more! <br /> <a href="http://www.4guysfromrolla.com/articles/030310-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/022410-1.aspx" class="headlines">Comparing the Performance of Visual Studio's Web Reference to a Custom Class</a><br /><span class="pubDate">02/24/10</span> </p> <div class="description"> <p> As developers, we all make assumptions when programming. Perhaps the biggest assumption we make is that those libraries and tools that ship with the .NET Framework are the best way to accomplish a given task. For example, most developers assume that using <a href="http://www.4guysfromrolla.com/articles/120705-1.aspx">ASP.NET's Membership system</a> is the best way to manage user accounts in a website (rather than rolling your own user account store). Similarly, creating a Web Reference to communicate with a <a href="http://www.4guysfromrolla.com/articles/100803-1.aspx">web service</a> generates markup that auto-creates a <i>proxy class</i>, which handles the low-level details of invoking the web service, serializing parameters, and so on. </p><p> Recently a client made us question one of our fundamental assumptions about the .NET Framework and Web Services by asking, "Why should we use proxy class created by Visual Studio to connect to a web service?" In this particular project we were calling a web service to retrieve data, which was then sorted, formatted slightly and displayed in a web page. The client hypothesized that it would be more efficient to invoke the web service directly via the <code>HttpWebRequest</code> class, retrieve the XML output, populate an <code>XmlDocument</code> object, then use <a href="http://en.wikipedia.org/wiki/Xslt">XSLT</a> to output the result to HTML. Surely that would be faster than using Visual Studio's auto-generated proxy class, right? </p><p> Prior to this request, we had never considered rolling our own proxy class; we had always taken advantage of the proxy classes Visual Studio auto-generated for us. Could these auto-generated proxy classes be inefficient? Would retrieving and parsing the web service's XML directly be more efficient? The only way to know for sure was to test my client's hypothesis. <br /> <a href="http://www.4guysfromrolla.com/articles/022410-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/021710-1.aspx" class="headlines">Integrating Twitter Into An ASP.NET Website</a><br /><span class="pubDate">02/17/10</span> </p> <div class="description"> <p> <a href="http://twitter.com/">Twitter</a> is a popular social networking web service for writing and sharing short messages. These tidy text messages are referred to as <i>tweets</i> and are limited to 140 characters. Users can leave tweets and follow other users directly from Twitter's website or by using the Twitter API. Twitter's API makes it possible to integrate Twitter with external applications. For example, you can use the Twitter API to display your latest tweets on your blog. A mom and pop online store could integrate Twitter such that a new tweet was added each time a customer completed an order. And <a href="http://code.google.com/p/elmah/">ELMAH</a>, a popular open-source error logging library, can be configured to send error notifications to Twitter. </p><p> Twitter's API is implemented over HTTP using the design principles of <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">Representational State Transfer (REST)</a>. In a nutshell, inter-operating with the Twitter API involves a client - your application - sending an XML-formatted message over HTTP to the server - Twitter's website. The server responds with an XML-formatted message that contains status information and data. While you can certainly interface with this API by writing your own code to communicate with the Twitter API over HTTP along with the code that creates and parses the XML payloads exchanged between the client and server, such work is unnecessary since there are many community-created Twitter API libraries for a variety of programming frameworks. </p><p> This article shows how to integrate Twitter with an ASP.NET website using the <a href="http://code.google.com/p/twitterizer/">Twitterizer</a> library, which is a free, open-source .NET library for working with the Twitter API. Specifically, this article shows how to retrieve your latest tweets and how to post a tweet using Twitterizer. Read on to learn more! <br /> <a href="http://www.4guysfromrolla.com/articles/021710-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/021010-1.aspx" class="headlines">Using Microsoft's Chart Controls In An ASP.NET Application: Serializing Chart Data</a><br /><span class="pubDate">02/10/10</span> </p> <div class="description"> <p> In most usage scenarios, the data displayed in a Microsoft Chart control comes from some dynamic source, such as from a database query. The appearance of the chart can be modified dynamically, as well; past installments in this article series showed how to programmatically customize the axes, labels, and other appearance-related settings. However, it is possible to statically define the chart's data and appearance strictly through the control's declarative markup. One of the demos examined in the <a href="http://www.4guysfromrolla.com/articles/072209-1.aspx">Getting Started</a> article rendered a column chart with seven columns whose labels and values were defined statically in the <code>&lt;asp:Series&gt;</code> tag's <code>&lt;Points&gt;</code> collection. </p><p> Given this functionality, it should come as no surprise that the Microsoft Chart Controls also support <i>serialization</i>. Serialization is the process of persisting the state of a control or an object to some other medium, such as to disk. <i>Deserialization</i> is the inverse process, and involves taking the persisted data and recreating the control or object. With just a few lines of code you can persist the appearance settings, the data, or both to a file on disk or to any stream. Likewise, it takes just a few lines of codes to reconstitute a chart from the persisted information. </p><p> This article shows how to use the Microsoft Chart Control's serialization functionality by examining a demo application that allows users to create custom charts, specifying the data to plot and some appearance-related settings. The user can then save a "snapshot" of this chart, which persists its appearance and data to a record in a database. From another page, users can view these saved chart snapshots. Read on to learn more! <br /> <a href="http://www.4guysfromrolla.com/articles/021010-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/020310-1.aspx" class="headlines">A Look at the GridView's New Sorting Styles in ASP.NET 4.0</a><br /><span class="pubDate">02/03/10</span> </p> <div class="description"> <p> Like every Web control in the ASP.NET toolbox, the GridView includes a variety of style-related properties, including <code>CssClass</code>, <code>Font</code>, <code>ForeColor</code>, <code>BackColor</code>, <code>Width</code>, <code>Height</code>, and so on. The GridView also includes style properties that apply to certain classes of rows in the grid, such as <code>RowStyle</code>, <code>AlternatingRowStyle</code>, <code>HeaderStyle</code>, and <code>PagerStyle</code>. Each of these meta-style properties offer the standard style properties (<code>CssClass</code>, <code>Font</code>, etc.) as subproperties. </p><p> In ASP.NET 4.0, Microsoft added four new style properties to the GridView control: <code>SortedAscendingHeaderStyle</code>, <code>SortedAscendingCellStyle</code>, <code>SortedDescendingHeaderStyle</code>, and <code>SortedDescendingCellStyle</code>. These four properties are meta-style properties like <code>RowStyle</code> and <code>HeaderStyle</code>, but apply to <i>column</i> of cells rather than a row. These properties only apply when the GridView is sorted - if the grid's data is sorted in ascending order then the <code>SortedAscendingHeaderStyle</code> and <code>SortedAscendingCellStyle</code> properties define the styles for the column the data is sorted by. The <code>SortedDescendingHeaderStyle</code> and <code>SortedDescendingCellStyle</code> properties apply to the sorted column when the results are sorted in descending order. </p><p> These four new properties make it easier to customize the appearance of the column by which the data is sorted. Using these properties along with a touch of <a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">Cascading Style Sheets (CSS)</a> it is possible to add up and down arrows to the sorted column's header to indicate whether the data is sorted in ascending or descending order. Likewise, these properties can be used to shade the sorted column or make its text bold. This article shows how to use these four new properties to style the sorted column. Read on to learn more! <br /> <a href="http://www.4guysfromrolla.com/articles/020310-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div></p><!--content_stop--> <p align="center"> <table width="90%" cellpadding="1" cellspacing="0" border="0"> <tr><td><hr width="100%" size="1" color="#CC9933"></td></tr> <tr> <td align="center"> <a href="http://www.internet.com/sections/win.html" class="headlines" style="font-size: 8pt">Windows Internet Technology</a> | <a href="http://aspnet.4guysfromrolla.com/" class="headlines" style="font-size: 8pt">ASP.NET</a> [<a href="http://aspnet.4guysfromrolla.com/1.x/" class="headlines" style="font-size: 8pt">1.x</a>] [<a href="http://aspnet.4guysfromrolla.com/2.0/" class="headlines" style="font-size: 8pt">2.0</a>] | <a href="http://www.aspmessageboard.com/" class="headlines" style="font-size: 8pt">ASPMessageboard.com</a> | <a href="http://www.aspfaqs.com/aspfaqs/" class="headlines" style="font-size: 8pt">ASPFAQs.com</a> | <a href="http://www.4guysfromrolla.com/advertise.shtml" class="headlines" style="font-size: 8pt">Advertise</a> | <a href="http://www.4guysfromrolla.com/feedback.shtml" class="headlines" style="font-size: 8pt">Feedback</a> | <a href="http://www.4guysfromrolla.com/authors.shtml" class="headlines" style="font-size: 8pt">Author an Article</a> </td> </tr> <tr><td><hr width="100%" size="1" color="#CC9933"></td></tr> </table> </p> </div> </td> </tr> <tr> <td><img src="/img/btm-left.gif" width="150" height="65" border="0" alt=""></td> <td background="/img/btm-bg.gif" align="right"><img src="/img/btm-right.gif" width="80" height="65" border="0" alt=""></td> </tr> </table> <table width="100%" cellpadding="4" cellspacing="0" border="0"> <tr><td align="center"><!-- 468x60-2 ad tag --> <script language="javascript"> <!-- OAS_AD('468x60-2'); //--> </script><noscript><a href="http://63.236.18.118/RealMedia/ads/click_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!468x60-2"><img src="http://63.236.18.118/RealMedia/ads/adstream_nx.ads/intm/webdev/www.4guysfromrolla.com@468x60-1,468x60-2,marketplace01,marketplace02,marketplace03,marketplace04,marketplace05,marketplace06,marketplace07,marketplace08,marketplace09,marketplace10,cp1,cp2,cp3,cp4,cp5,cp6,cp7,cp8,cp9,cp10,cp11,cp12,cp13,cp14,ciu,house_ribbon,flex,125x125-1,120x60-1,accessunit!468x60-2" border="0"></a></noscript> <!-- /468x60-2 ad tag --> </td></tr> <tr><td align="center"><!-- Kontera exclusion div starts --> <div class="konafilter"> <!-- Google Analytics --> <script src="/icom_includes/footers/scripts/ga.js" type="text/javascript"> </script> <script type="text/javascript" > <!-- hide from no js browsers delete Array.prototype.itemValidation; delete Array.prototype.isArray; var superTracker = _gat._getTracker("UA-2838492-1"); superTracker._initData(); superTracker._trackPageview(); --> </script> <script type="text/javascript" > var site_name = location.hostname; if ( site_name.indexOf("www.") != 0 ) { site_name = "www."+site_name ; } document.write("<SCR" + "IPT LANGUAGE='JavaScript1.2' SRC='/icom_includes/footers/sites/"+ site_name +".js' TYPE='text/javascript'><\/SCR" + "IPT>"); --> </script> <script type="text/javascript" > <!-- hide from no js browsers pageTracker._initData(); pageTracker._trackPageview(); // --> </script> <!-- End Google Analytics --> <!-- Revenue Science API --> <script src="http://js.revsci.net/gateway/gw.js?csid=K08784"></script> <script> DM_addEncToLoc("pid","INT"); DM_tag(); </script> <!-- Revenue Science API --> <style type="text/css"> @charset "UTF-8"; /* CSS Document */ /* JOM CSS */ #jomfooter { border: 0; margin: 5px; padding: 5px; } #jomfooter * { font-family: Arial, Helvetica, sans-serif; padding: 0; margin: 0; } #jomfooter img { border: 0; behavior: url('/icom_includes/footers/css/iepngfix.htc'); padding: 5px; padding: expression('0'); } #jomfooter p { font-size: 11px; line-height: 20px; margin: 10px; } #jomfooter form b { font-size: 12px; } #jomfooter a { text-decoration: underline; } #jomfooter a:hover { text-decoration: none; } #jomfooter table td { border: 0; } /* GEMS Solutions CSS */ #jomfooter #solsect { margin: 0 auto; padding: 10px 0; width: 720px; } #jomfooter #solsect .top { background: url('/icom_includes/footers/soltopbg.gif') repeat-x #bbb; height: 26px; margin-bottom: 1px; } #jomfooter #solsect .top a { font-size: 16px; font-weight: bold; color:#333; text-decoration:none; margin-left: 5px; padding: 0; line-height: 25px; } #jomfooter #solsect .top a:hover { text-decoration: none; } #jomfooter #solsect .solsectpad { background: #fff; } #jomfooter #solsect .solsectpad .main { background:url('/icom_includes/footers/solmidbg.gif') repeat-x #e7e8e3; padding: 5px; margin-bottom: 1px; } #jomfooter #solsect .solsectpad .main h2 { font-size: 12px; color: #000; font-weight: normal; padding-bottom: 3px; } #jomfooter #solsect a { color: #333; font-size: 10px; text-decoration: none; line-height: 13px; } #jomfooter #solsect a:hover { text-decoration: underline; } </style> <!-- Begin JOM Footer --> <div id="jomfooter" align="center"> <p> <a href="http://www.internet.com/"><img src="http://www.internet.com/icom_includes/footers/img/icom_logo_qsfooter.png" width="240" height="40" hspace="0" /></a> <br> The Network for Technology Professionals</p> <form method="POST" action="http://search.internet.com/www.jupiterweb.com" target="_top"> <input type="HIDDEN" name="IC_Summary" value="1"> <input type="HIDDEN" name="IC_StartNumber" value="0"> <input type="HIDDEN" name="IC_BatchSize" value="10"> <input type="HIDDEN" name="IC_RelevanceThreshold" value="50"> <input type="hidden" name="IC_QueryDatabase" value="all"> <b>Search:</b> <input type="text" name="IC_QueryText" size="45"> <input type="image" border="0" value="Find" name="SUBMIT" src="/icom_includes/footers/but_find.gif" width="41" height="20" align="absmiddle"> </form> <p> <a target="_blank" rel="nofollow" href="http://www.internet.com/Internetcom/Door/41188"> About Internet.com</a> <br> <script type="text/javascript"> document.write(' Copyright '); var today = new Date(); document.write( + today.getFullYear()); document.write(' QuinStreet Inc. All Rights Reserved.'); </script> <noscript> Copyright 2010 QuinStreet Inc. All Rights Reserved. </noscript> </p> <p> <a target="_blank" rel="nofollow" href="http://www.internet.com/Internetcom/Door/41187">Legal Notices</a>, <a target="_blank" rel="nofollow" href="http://www.internet.com/Internetcom/Door/41189#Licensing1">Licensing</a>, <a target="_blank" rel="nofollow" href="http://www.internet.com/Internetcom/Door/41189#Permissions">Permissions</a>, <a target="_blank" rel="nofollow" href="http://www.internet.com/Internetcom/Door/41186">Privacy Policy</a>. <br /> <a target="_blank" rel="nofollow" href="http://www.internet.com/mediakit/">Advertise</a> | <a target="_blank" rel="nofollow" href="http://e-newsletters.internet.com/">Newsletters</a> | <a target="_blank" rel="nofollow" href="http://e-newsletters.internet.com/announcement_list.html">E-mail Offers</a> </p> <!-- start solutions links section --> <div id="solsect"> <div class="top" align="left"><a href="#">Solutions</a></div> <div class="solsectpad"> <div class="main" align="left"> <h2>Whitepapers and eBooks</h2> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.devx.com/HotList/HotList-Adobe/Article/43031">Article: Adobe Helps PHP Developers Create Rich Internet Applications</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Link/41283/Microsoft-IT-Strengthens-Security-with-Data-Loss-Prevention-Solution">Case Study: Microsoft IT Strengthens Security with Data Loss Prevention Solution </a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Article/41884/Reduce-Your-Infrastructure-Costs-with-Microsoft-System-Center">Article: Reduce Your Infrastructure Costs with Microsoft System Center</a><br> <a target="_blank" href="http://www.devx.com/IntelResourceCenter/Link/41289">Intel Brief: Five-Star IT Support--Intel Core 2 processor with vPro Delivers ROI of 524 Percent</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Article/40993/Security-Enhancements-Abound-in-Windows-Server-2008">Article: Security Enhancements Abound in Windows Server 2008</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Article/41832/Enterprise-Social-Computing-with-Microsoft-SharePoint-2010">Article: Enterprise Social Computing with Microsoft SharePoint 2010 </a><br> <a target="_blank" href="http://www.devx.com/IntelResourceCenter/Link/41285">Intel Whitepaper: Implementing Intel vPro Technology to Drive Down Client Management Costs</a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Link/41337/Improve-Communications-and-Collaboration">Microsoft Whitepaper: Improve Communications and Collaboration</a><br> <a target="_blank" href="http://www.devx.com/HotList/HotList-Intel/Article/44043">Intel Article: Intel Core i5 vPro Brings Intelligence to the Processor</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40965">Microsoft Personalized Whitepapers and Resources for You</a><br> <a target="_blank" href="http://www.devx.com/VS_2010/Door/43217">Microsoft Articles: Visual Studio 2010</a><br> <a target="_blank" href="http://www.devx.com/HotList/hotlist-Adobe/link/42707">Adobe Article: Java Developers Finding a Home at Adobe Flex</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Link/41053/Make-Better-Decisions">Microsoft Whitepaper: Make Better Decisions - SQL Server 2008 Business Intelligence. </a><br> <a target="_blank" href="http://www.devx.com/solutions">MORE WHITEPAPERS, EBOOKS, AND ARTICLES</a><br> </td> </tr> </table> </div> <div class="main" align="left"> <h2>Webcasts</h2> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Link/41675/Video-How-System-Center-Helps-Reduce-IT-Costs">Video: How System Center Helps Reduce IT Costs </a><br> <a target="_blank" href="http://www.devx.com/ibm">IBM Cloud Computing for Developers Virtual Event, April 6-8 </a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Link/41244/OCS-and-Exchange-Platform-Futures">Microsoft Video: OCS and Exchange: Platform Futures</a><br> <a target="_blank" href="http://www.devx.com/solutions">MORE WEBCASTS, PODCASTS, AND VIDEOS</a><br> </td> </tr> </table> </div> <div class="main" align="left"> <h2>Downloads and eKits</h2> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.internet.com/Solutions/Link/41398">HP PartnerONE | SolutionsINFINITE Visit us at hp.com/partners/us</a><br> <a target="_blank" href="http://www.devx.com/HotList/HotList-IronSpeed/Article/40848">Iron Speed Designer Application Generator</a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.devx.com/solutions">MORE DOWNLOADS, EKITS, AND FREE TRIALS</a><br> </td> </tr> </table> </div> <div class="main" align="left"> <h2>Tutorials and Demos</h2> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40967">Learn Unified Communications</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40968">Learn SQL Server 2008</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40966">Learn Windows Server 2008 R2</a><br> <a target="_blank" href="http://www.devx.com/HotList/Link/40644">Internet.com Hot List: Get the Inside Scoop on IT and Developer Products</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40970">Learn Forefront</a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40969">Learn System Center</a><br> <a target="_blank" href="http://www.devx.com/ebook/Article/39031">All About Botnets</a><br> <a target="_blank" href="http://www.internet.com/Microsoft/Everybodys_Business/Door/40971">Learn SharePoint</a><br> <a target="_blank" href="http://www.devx.com/solutions">MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES</a><br> </td> </tr> </table> </div> </div> </div> </div> <!-- Kontera exclusion div ends --> </div> <!-- End JOM Footer --></td></tr> </table> </body> </html>


The HTML Output

4GuysFromRolla.com
  When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles [1.x] [2.0]
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips
Search

Sections:
Book Reviews
Sample Chapters
Commonly Asked Message Board Questions
Headlines from ASPWire.com
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
Web Hosts
XML Info
Information:
Advertise
Feedback
Author an Article
Technology Jobs



















internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers
ASP ASP.NET ASP FAQs Message Board Feedback ASP Jobs

WebWeekly Sign Up
Sign up for WebWeekly, the weekly 4Guys newsletter!
Windows Technology
Check out these Web sites for articles, tutorials, FAQs, and code on ASP and related Technologies!
15Seconds.com
ASP101.com
ASPFAQs.com
ASPMessageboard.com
ASPWire.com
DevX.com

[Complete List of Sites]

News from ASPWire

Take Control Of Web Control ClientID Values in ASP.NET 4.0
03/17/10

Each server-side Web control in an ASP.NET Web Forms application has an ID property that identifies the Web control and is name by which the Web control is accessed in the code-behind class. When rendered into HTML, the Web control turns its server-side ID value into a client-side id attribute. Ideally, there would be a one-to-one correspondence between the value of the server-side ID property and the generated client-side id, but in reality things aren't so simple. By default, the rendered client-side id is formed by taking the Web control's ID property and prefixed it with the ID properties of its naming containers. In short, a Web control with an ID of txtName can get rendered into an HTML element with a client-side id like ctl00_MainContent_txtName.

This default translation from the server-side ID property value to the rendered client-side id attribute can introduce challenges when trying to access an HTML element via JavaScript, which is typically done by id, as the page developer building the web page and writing the JavaScript does not know what the id value of the rendered Web control will be at design time. (The client-side id value can be determined at runtime via the Web control's ClientID property.)

ASP.NET 4.0 affords page developers much greater flexibility in how Web controls render their ID property into a client-side id. This article starts with an explanation as to why and how ASP.NET translates the server-side ID value into the client-side id value and then shows how to take control of this process using ASP.NET 4.0. Read on to learn more!
Read More >


Displaying Multimedia Content In A Floating Window Using FancyBox
03/10/10

While surfing the web you may have come across websites with images and other multimedia content that, when clicked, were displayed in a floating window that hovered above the web page. Perhaps it was a page that showed a series of thumbnail images of products for sale, where clicking on a thumbnail displayed the full sized image in a floating window, dimming out the web page behind it. Have you ever wondered how this was accomplished or whether you could add such functionality to your ASP.NET website?

In years past, adding such rich client-side functionality to a website required a solid understanding of JavaScript and the "eccentricities" of various web browsers. Today, thanks to powerful JavaScript libraries like jQuery, along with an active developer community creating plugins and tools that integrate with jQuery, it's possible to add snazzy client-side behaviors without being a JavaScript whiz.

This article shows how to display text, images, and other multimedia content in a floating window using FancyBox, a free client-side library. You'll learn how it works, see what steps to take to get started using it, and explore a number of FancyBox demos. There's also a demo available for download that shows using FancyBox to display both text and images in a floating window in an ASP.NET website. Read on to learn more!
Read More >


Improving CSS With .LESS
03/03/10

Cascading Style Sheets, or CSS, is a syntax used to describe the look and feel of the elements in a web page. CSS allows a web developer to separate the document content - the HTML, text, and images - from the presentation of that content. Such separation makes the markup in a page easier to read, understand, and update; it can result in reduced bandwidth as the style information can be specified in a separate file and cached by the browser; and makes site-wide changes easier to apply. For a great example of the flexibility and power of CSS, check out CSS Zen Garden. This website has a single page with fixed markup, but allows web developers from around the world to submit CSS rules to define alternate presentation information.

Unfortunately, certain aspects of CSS's syntax leave a bit to be desired. Many style sheets include repeated styling information because CSS does not allow the use of variables. Such repetition makes the resulting style sheet lengthier and harder to read; it results in more rules that need to be changed when the website is redesigned to use a new primary color. Specifying inherited CSS rules, such as indicating that a elements (i.e., hyperlinks) in h1 elements should not be underlined, requires creating a single selector name, like h1 a. Ideally, CSS would allow for nested rules, enabling you to define the a rules directly within the h1 rules.

.LESS is a free, open-source port of Ruby's LESS library. LESS (and .LESS, by extension) is a parser that allows web developers to create style sheets using new and improved language features, including variables, operations, mixins, and nested rules. Behind the scenes, .LESS converts the enhanced CSS rules into standard CSS rules. This conversion can happen automatically and on-demand through the use of an HTTP Handler, or done manually as part of the build process. Moreover, .LESS can be configured to automatically minify the resulting CSS, saving bandwidth and making the end user's experience a snappier one.

This article shows how to get started using .LESS in your ASP.NET websites. Read on to learn more!
Read More >


Comparing the Performance of Visual Studio's Web Reference to a Custom Class
02/24/10

As developers, we all make assumptions when programming. Perhaps the biggest assumption we make is that those libraries and tools that ship with the .NET Framework are the best way to accomplish a given task. For example, most developers assume that using ASP.NET's Membership system is the best way to manage user accounts in a website (rather than rolling your own user account store). Similarly, creating a Web Reference to communicate with a web service generates markup that auto-creates a proxy class, which handles the low-level details of invoking the web service, serializing parameters, and so on.

Recently a client made us question one of our fundamental assumptions about the .NET Framework and Web Services by asking, "Why should we use proxy class created by Visual Studio to connect to a web service?" In this particular project we were calling a web service to retrieve data, which was then sorted, formatted slightly and displayed in a web page. The client hypothesized that it would be more efficient to invoke the web service directly via the HttpWebRequest class, retrieve the XML output, populate an XmlDocument object, then use XSLT to output the result to HTML. Surely that would be faster than using Visual Studio's auto-generated proxy class, right?

Prior to this request, we had never considered rolling our own proxy class; we had always taken advantage of the proxy classes Visual Studio auto-generated for us. Could these auto-generated proxy classes be inefficient? Would retrieving and parsing the web service's XML directly be more efficient? The only way to know for sure was to test my client's hypothesis.
Read More >


Integrating Twitter Into An ASP.NET Website
02/17/10

Twitter is a popular social networking web service for writing and sharing short messages. These tidy text messages are referred to as tweets and are limited to 140 characters. Users can leave tweets and follow other users directly from Twitter's website or by using the Twitter API. Twitter's API makes it possible to integrate Twitter with external applications. For example, you can use the Twitter API to display your latest tweets on your blog. A mom and pop online store could integrate Twitter such that a new tweet was added each time a customer completed an order. And ELMAH, a popular open-source error logging library, can be configured to send error notifications to Twitter.

Twitter's API is implemented over HTTP using the design principles of Representational State Transfer (REST). In a nutshell, inter-operating with the Twitter API involves a client - your application - sending an XML-formatted message over HTTP to the server - Twitter's website. The server responds with an XML-formatted message that contains status information and data. While you can certainly interface with this API by writing your own code to communicate with the Twitter API over HTTP along with the code that creates and parses the XML payloads exchanged between the client and server, such work is unnecessary since there are many community-created Twitter API libraries for a variety of programming frameworks.

This article shows how to integrate Twitter with an ASP.NET website using the Twitterizer library, which is a free, open-source .NET library for working with the Twitter API. Specifically, this article shows how to retrieve your latest tweets and how to post a tweet using Twitterizer. Read on to learn more!
Read More >


Using Microsoft's Chart Controls In An ASP.NET Application: Serializing Chart Data
02/10/10

In most usage scenarios, the data displayed in a Microsoft Chart control comes from some dynamic source, such as from a database query. The appearance of the chart can be modified dynamically, as well; past installments in this article series showed how to programmatically customize the axes, labels, and other appearance-related settings. However, it is possible to statically define the chart's data and appearance strictly through the control's declarative markup. One of the demos examined in the Getting Started article rendered a column chart with seven columns whose labels and values were defined statically in the <asp:Series> tag's <Points> collection.

Given this functionality, it should come as no surprise that the Microsoft Chart Controls also support serialization. Serialization is the process of persisting the state of a control or an object to some other medium, such as to disk. Deserialization is the inverse process, and involves taking the persisted data and recreating the control or object. With just a few lines of code you can persist the appearance settings, the data, or both to a file on disk or to any stream. Likewise, it takes just a few lines of codes to reconstitute a chart from the persisted information.

This article shows how to use the Microsoft Chart Control's serialization functionality by examining a demo application that allows users to create custom charts, specifying the data to plot and some appearance-related settings. The user can then save a "snapshot" of this chart, which persists its appearance and data to a record in a database. From another page, users can view these saved chart snapshots. Read on to learn more!
Read More >


A Look at the GridView's New Sorting Styles in ASP.NET 4.0
02/03/10

Like every Web control in the ASP.NET toolbox, the GridView includes a variety of style-related properties, including CssClass, Font, ForeColor, BackColor, Width, Height, and so on. The GridView also includes style properties that apply to certain classes of rows in the grid, such as RowStyle, AlternatingRowStyle, HeaderStyle, and PagerStyle. Each of these meta-style properties offer the standard style properties (CssClass, Font, etc.) as subproperties.

In ASP.NET 4.0, Microsoft added four new style properties to the GridView control: SortedAscendingHeaderStyle, SortedAscendingCellStyle, SortedDescendingHeaderStyle, and SortedDescendingCellStyle. These four properties are meta-style properties like RowStyle and HeaderStyle, but apply to column of cells rather than a row. These properties only apply when the GridView is sorted - if the grid's data is sorted in ascending order then the SortedAscendingHeaderStyle and SortedAscendingCellStyle properties define the styles for the column the data is sorted by. The SortedDescendingHeaderStyle and SortedDescendingCellStyle properties apply to the sorted column when the results are sorted in descending order.

These four new properties make it easier to customize the appearance of the column by which the data is sorted. Using these properties along with a touch of Cascading Style Sheets (CSS) it is possible to add up and down arrows to the sorted column's header to indicate whether the data is sorted in ascending or descending order. Likewise, these properties can be used to shade the sorted column or make its text bold. This article shows how to use these four new properties to style the sorted column. Read on to learn more!
Read More >


Windows Internet Technology | ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article


The Network for Technology Professionals

Search:

About Internet.com

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | E-mail Offers