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> <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.webmediabrands.com/corporate/" 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={9683D562-87FE-4D7F-B98C-9E51CAE07339}>Software Developer/Programmer - Interview NOW! Need 10 People!</a><br>Next Step Systems<br>US-IL-Des Plaines</p><p><a class=popinsetlink href=http://4guysfromrolla.justtechjobs.com/CBJSViewJob.asp?ID={16E7E37E-950C-4FC8-B900-E4AE849AFF3D}>VB.NET Developer</a><br>The Computer Merchant, Ltd<br>US-MA-Boston</p><p><a class=popinsetlink href=http://4guysfromrolla.justtechjobs.com/CBJSViewJob.asp?ID={3397453C-B5DD-4366-A0B4-0EC08CD5CCC0}>Product Manager, Storage (PA)</a><br>Next Step Systems<br>US-PA-Wayne</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: 7/5/2009 11:26:13 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://aspnet.4guysfromrolla.com/rss/rss.test.aspx to make sure XML is valid --> <p> <div> <p> <a href="http://www.4guysfromrolla.com/articles/070109-1.aspx" class="headlines">Examining ASP.NET&apos;s Membership, Roles, and Profile - Part 15</a><br /><span class="pubDate">07/01/09</span> </p> <div class="description"> <p> When a visitor registers a new account on an ASP.NET website that uses the Membership system, they are prompted (by default) for their username, password, e-mail address, and other pertinent information. Along with functionality for registering new accounts, the ASP.NET Membership system provides page developers techniques for modifying information about users. For instance, with just a couple of lines of code you can change an existing user's e-mail address, approve a user, or unlock them (if their account was locked out). However, there are certain bits of user information that cannot be modified through the Membership API, such as the username. </p><p> For most sites this is a non-issue. Once a visitor has registered an account that username is fixed; if they want a different username, well, they'll just have to register a new account. But consider a website that has customized the account creation process so that instead of prompting the user for both a username and e-mail address, the user is only asked to enter an e-mail address and that it is used as both their username and e-mail address on file. Anytime a user switched e-mail addresses - which can happen when changing jobs, changing ISPs, or moving to the new, hip, web-based e-mail provider of the day - they need to also change their username on your site. </p><p> In order to change a user's username we'll need to bypass the Membership API and work directly with the user store. This article shows how to interface directly with the SQL Server database schema used by the <code>SqlMembershipProvider</code> to change an existing user's username. Read on to learn more! <br /> <a href="http://aspnet.4guysfromrolla.com/articles/070109-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/062409-1.aspx" class="headlines">ASP.NET Master Page Advice, Tips, and Tricks</a><br /><span class="pubDate">06/24/09</span> </p> <div class="description"> <p> <a href="http://www.4guysfromrolla.com/articles/010505-1.aspx">Master pages</a> are an important part of any ASP.NET website. In a nutshell, a master page allows the page developer to define a website template, indicating what portions of the template are to remain fixed across pages that use the template and what regions of the template are customizable on a page-by-page basis. Having the site design and layout centralized in one (or more) master pages makes it easy to add new pages to the site that inherit the same look and feel and greatly simplifies changing the site design or adding or removing content that is common to all pages, such as content in the <code>&lt;head&gt;</code> element, footers, and references to CSS and JavaScript files. </p><p> This article presents advice for using master pages, along with assorted tips and tricks that I've picked up over the years in using master pages. Read on to learn more! And if you have additional recommendations and advice on using master pages, please don't hesitate to <a href="mailto:mitchell@4guysfromrolla.com">drop me a line</a> and I'll be happy to add your insight to this article. <br /> <a href="http://aspnet.4guysfromrolla.com/articles/062409-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/061709-1.aspx" class="headlines">Using ASP.NET 3.5's ListView and DataPager Controls: Inserting Data</a><br /><span class="pubDate">06/17/09</span> </p> <div class="description"> <p> The ListView control is similar to the GridView control in many ways: both display a set of records, both support built-in sorting, paging, editing, and deleting functionality with minimal effort. The ListView differs from the GridView in two key ways: </p> <ul> <li>Rather than using fields, the ListView is rendered via templates, which offers the page developer much finer control over the emitted markup, and</li> <li>The ListView supports built-in <b>inserting support</b></li> </ul> <p>The <a href="http://www.4guysfromrolla.com/articles/122607-1.aspx">first installment in this series</a> explored the ListView's template-based rendering. This installment looks at how to use the ListView's inserting functionality. </p><p> In a nutshell, inserting data from the ListView requires two steps: defining the inserting interface via the <code>InsertItemTemplate</code> and specifying where the inserting interface should go via the <code>InsertItemPosition</code> property. Much like with <a href="http://www.4guysfromrolla.com/articles/061009-1.aspx">editing data from within the ListView</a>, the <code>InsertItemTemplate</code> can contain two-way databinding statements when using a data source control to get the inputs entered by the user from the ListView's inserting interface into the parameters of the data source control. And like with the editing and deleting workflows, you can programmatically examine and modify the user's submitted data before inserting the data, cancelling the operation altogether if needed. </p><p> This article walks through the steps for creating a ListView that allows users to insert records. It also shows how to optionally cancel the inserting workflow based on programmatic logic. Read on to learn more! </p><p> (<i>It is assumed that the reader is familiar with how to insert data using a data source control. If this is not the case, please first read <a href="http://www.4guysfromrolla.com/articles/050207-1.aspx">Accessing and Updating Data in ASP.NET: Inserting Data</a>.</i>) <br /> <a href="http://aspnet.4guysfromrolla.com/articles/061709-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/061009-1.aspx" class="headlines">Using ASP.NET 3.5's ListView and DataPager Controls: Editing Data</a><br /><span class="pubDate">06/10/09</span> </p> <div class="description"> <p> The GridView and DetailsView controls offer built-in editing functionality that can be turned on with the tick of a checkbox. Without writing a line of declarative markup or server-side source code, the page developer gets a decent out of the box editing interface. Namely, each field in the GridView or DetailsView is rendered in its editing interface; BoundFields display a TextBox control while CheckBoxFields display an enabled checkbox. Moreover, a CommandField is added, which displays the Edit, Update, and Cancel buttons, as needed. </p><p> While the ListView control provides editing support, it requires a bit more work from the page developer to get it going. The reason is because the ListView is defined by templates whereas the GridView and DetailsView are defined by fields. Many fields types, such as the BoundField, can generate their own editing interface, but with templates the page developer is on the hook for specifying the editing interface. Creating an editable ListView control entails defining the editing interface via the <code>EditItemTemplate</code> and adding the Edit, Update, and Cancel buttons in the appropriate spots. </p><p> This article walks through creating an editable ListView control, with the finished results available for download at the end of the article. Read on to learn more! </p><p> (<i>It is assumed that the reader is familiar with how to edit data using a data source control. If this is not the case, please first read <a href="http://www.4guysfromrolla.com/articles/080107-1.aspx">Accessing and Updating Data in ASP.NET: Updating Basics</a>.</i>) <br /> <a href="http://aspnet.4guysfromrolla.com/articles/061009-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/060309-1.aspx" class="headlines">Implementing Incremental Navigation with ASP.NET</a><br /><span class="pubDate">06/03/09</span> </p> <div class="description"> <p> Traditionally, website navigation has been focused on minimizing the number of clicks required to open a given page. However, this goal has nothing to do with the real purpose of navigation, which is to make finding information easy, consistent, and transparent to the user. Also, as websites get bigger, traditional navigation controls such as drop-down menus or tree views become impractical. Faster Internet connections and larger screen sizes now allow developers to experiment with new styles of navigation. </p><p> This article shows how to implement <i>incremental navigation</i>, which is a style of navigation where users find information by clicking through a series of lightweight pages, with each click resulting in a small, but highly visible change to the navigation user interface. It differs from traditional drop-down menu navigation in that incremental navigation limits the amount of new choices available to just the next level in the sitemap hierarchy. </p><p> I've created a customizable framework for implementing this sort of navigation scheme named Theseus, which you can download from the end of this article. Underneath the covers, Theseus uses ASP.NET's <a href="http://msdn.microsoft.com/en-us/library/system.web.sitemap.aspx"><code>SiteMap</code> class</a> and the configured sitemap provider to implement the incremental navigation. This article starts with an overview of incremental navigation and then goes on to examine how to use Theseus to implement such a navigation scheme in your website. Read on to learn more! <br /> <a href="http://aspnet.4guysfromrolla.com/articles/060309-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/052709-1.aspx" class="headlines">Using ASP.NET 3.5's ListView and DataPager Controls: Deleting Data</a><br /><span class="pubDate">05/27/09</span> </p> <div class="description"> <p> The previous installments in this article series have demonstrated how to display, group, sort, and page through data using the ListView control. In addition to displaying data, the ListView control also provides support for inserting, updating, and deleting data. If the ListView uses a data source control (such as a SqlDataSource or ObjectDataSource) and that data source control is configured to support insert, updating, or deleting, then implementing such functionality in the ListView does not require writing a single line of code. Rather, adding inserting and updating support entails creating templates that define the inserting and updating user interfaces and Button controls that trigger the actual update or insert. Implementing deleting support requires simply adding a properly configured Delete button to the ItemTemplate. </p><p> This installment and the next explore how to perform inserts, updates, and deletes using the ListView control. This installment focuses on deleting and shows how to perform simple, standard deletes as well as more advanced deleting scenarios. The demos explored here (as well as the demos from previous installments) are available for download at the end of the article. Read on to learn more! </p><p> (<i>It is assumed that the reader is familiar with how to delete data using a data source control. If this is not the case, please first read <a href="http://aspnet.4guysfromrolla.com/articles/062007-1.aspx">Accessing and Updating Data in ASP.NET: Deleting Data</a>.</i>) <br /> <a href="http://aspnet.4guysfromrolla.com/articles/052709-1.aspx" class="readmore">Read More &gt;</a> </p> </div> </div><hr /><div> <p> <a href="http://www.4guysfromrolla.com/articles/052009-1.aspx" class="headlines">Examining ASP.NET 2.0's Membership, Roles, and Profile - Part 14</a><br /><span class="pubDate">05/20/09</span> </p> <div class="description"> <p> The ASP.NET Toolbox includes two Web controls for managing users' passwords: the ChangePassword control and the PasswordRecovery control. The ChangePassword control allows a user signed into the site to change their password by entering their existing password and their new, desired password. The PasswordRecovery control is used to reset or recover a user's password in the event that it has been forgotten. The PasswordRecovery control is used by anonymous users who need to be reminded of their password. Assuming that the Membership system is configured to require that users have a security question and answer (the default behavior), the user is presented with their security question and must correctly enter their security answer in order to have their password reset or recovered. </p><p> While there are two controls for managing passwords, there are no Web controls in the Toolbox for managing a user's security question and answer. In other words, there's no built-in control that allows a signed in user to change her security question and answer. The good news is that while no control offers this functionality it's not difficult to implement this feature ourselves. The <code>MembershipUser</code> class has a <a href="http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser.changepasswordquestionandanswer.aspx"><code>ChangePasswordQuestionAndAnswer</code> method</a> that modifies the security question and answer information using the configured Membership provider. </p><p> This article shows how to build a page that permits a signed in user to change their security question and answer, and a demo application is available for download at the end of the article that showcases this functionality in action. Read on to learn more! <br /> <a href="http://aspnet.4guysfromrolla.com/articles/052009-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"><!-- 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"> <img src="/icom_includes/footers/img/wmb_footer.png" width="174" height="19" hspace="0" /> <p align="center"> <a target="_blank" href="http://www.internet.com"><img src="/icom_includes/footers/img/intm_footer.png" alt="internet.com" width="97" height="15" hspace="0" border="0" align="absmiddle"></a><img src="/icom_includes/footers/ruledivide_foot.gif" alt="" width="1" height="25" hspace="10" border="0" align="absmiddle"><a target="_blank" href="http://www.mediabistro.com"><img src="/icom_includes/footers/img/mb_footer.png" alt="mediabistro.com" width="102" height="44" hspace="5" border="0" align="absmiddle"></a><img src="/icom_includes/footers/ruledivide_foot.gif" alt="" width="1" height="25" hspace="10" border="0" align="absmiddle"><a target="_blank" href="http://www.justtechjobs.com"><img src="/icom_includes/footers/img/jtj_footer.png" alt="Justtechjobs.com" width="99" height="13" hspace="0" border="0" align="absmiddle"></a><img src="/icom_includes/footers/ruledivide_foot.gif" alt="" width="1" height="25" hspace="10" border="0" align="absmiddle"><a target="_blank" href="http://www.graphics.com"><img src="/icom_includes/footers/img/gdc_footer.png" alt="Graphics.com" width="108" height="18" hspace="0" border="0" align="absmiddle"></a> </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.webmediabrands.com/"> WebMediaBrands Corporate Info</a> <br><script type="text/javascript"> document.write(' Copyright '); var today = new Date(); document.write( + today.getFullYear()); document.write(' WebMediaBrands Inc. All Rights Reserved.'); </script> <noscript>Copyright 2009 WebMediaBrands Inc. All Rights Reserved.</noscript> </p> <p> <a target="_blank" rel="nofollow" href="http://www.webmediabrands.com/corporate/legal.html">Legal Notices</a>, <a target="_blank" rel="nofollow" href="http://www.webmediabrands.com/corporate/reprints.html#Licensing1">Licensing</a>, <a target="_blank" rel="nofollow" href="http://www.webmediabrands.com/corporate/reprints.html#Reprints1">Reprints</a>, <a target="_blank" rel="nofollow" href="http://www.webmediabrands.com/corporate/reprints.html#Permissions">Permissions</a>, <a target="_blank" rel="nofollow" href="http://www.webmediabrands.com/corporate/privacy/privacypolicy.html">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" href="http://www.internetshopper.com/">Shopping</a> | <a target="_blank" rel="nofollow" href="http://e-newsletters.internet.com/announcement_list.html">E-mail Offers</a> | <a href="http://freelancer.internet.com/" >Freelance Jobs</a> <img src="/icom_includes/headers/icom/icon_new.jpg" align="top" border="0"> </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/MS_Azure/Article/42227">Whitepaper: Introducing the Azure Services Platform</a><br> <a target="_blank" href="http://www.devx.com/MS_Azure/Article/42228">Whitepaper: Introduction to Microsoft .NET Services for Developers</a><br> <a target="_blank" href="http://www.devx.com/MS_Azure/Article/42226">Whitepaper: Securing Microsoft's Cloud Infrastructure</a><br> <a target="_blank" href="http://www.devx.com/ebook/Article/38087">Internet.com eBook: Becoming a Better Project Manager </a><br> <a target="_blank" href="http://www.devx.com/MS_Partner/Door/35665">Microsoft Partner Portal: What Azure Means for Microsoft Partners</a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <a target="_blank" href="http://www.devx.com/ebook/Article/40784">Internet.com eBook: Web Development Frameworks for Java</a><br> <a target="_blank" href="http://www.devx.com/ebook/Article/40319">Internet.com eBook: Developing a Content Management System Strategy</a><br> <a target="_blank" href="http://www.devx.com/MS_TechNet/Door/41641">Article: Ten Things IT Professionals Should Know About Windows 7</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.devx.com/MS_Azure/Article/41869">Get Started with .NET Services</a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <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.devx.com/Amyuni/Door/39454">Amyuni: PDF & PDF/A Engine for .NET and ActiveX Apps</a><br> <a target="_blank" href="http://www.devx.com/RedGateVS/Link/41666">Red Gate Free Trial: SQL Toolbelt</a><br> <a target="_blank" href="http://www.devx.com/IronSpeedVS/Door/17479">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/RedGateVS/Link/41831">Download Award-Winning Red Gate SQL Backup Pro</a><br> <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.devx.com/HotList/Link/40644">Internet.com Hot List: Get the Inside Scoop on the Hottest IT and Developer Products</a><br> <a target="_blank" href="http://www.devx.com/HotList/HotList-Sun/Article/41546">Internet.com Hot List: Java EE 6 Platform Highlights the JavaOne Conference</a><br> </td> <td width="10"> </td> <td width="50%" valign="top" align="left"> <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> <!-- 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

Examining ASP.NET's Membership, Roles, and Profile - Part 15
07/01/09

When a visitor registers a new account on an ASP.NET website that uses the Membership system, they are prompted (by default) for their username, password, e-mail address, and other pertinent information. Along with functionality for registering new accounts, the ASP.NET Membership system provides page developers techniques for modifying information about users. For instance, with just a couple of lines of code you can change an existing user's e-mail address, approve a user, or unlock them (if their account was locked out). However, there are certain bits of user information that cannot be modified through the Membership API, such as the username.

For most sites this is a non-issue. Once a visitor has registered an account that username is fixed; if they want a different username, well, they'll just have to register a new account. But consider a website that has customized the account creation process so that instead of prompting the user for both a username and e-mail address, the user is only asked to enter an e-mail address and that it is used as both their username and e-mail address on file. Anytime a user switched e-mail addresses - which can happen when changing jobs, changing ISPs, or moving to the new, hip, web-based e-mail provider of the day - they need to also change their username on your site.

In order to change a user's username we'll need to bypass the Membership API and work directly with the user store. This article shows how to interface directly with the SQL Server database schema used by the SqlMembershipProvider to change an existing user's username. Read on to learn more!
Read More >


ASP.NET Master Page Advice, Tips, and Tricks
06/24/09

Master pages are an important part of any ASP.NET website. In a nutshell, a master page allows the page developer to define a website template, indicating what portions of the template are to remain fixed across pages that use the template and what regions of the template are customizable on a page-by-page basis. Having the site design and layout centralized in one (or more) master pages makes it easy to add new pages to the site that inherit the same look and feel and greatly simplifies changing the site design or adding or removing content that is common to all pages, such as content in the <head> element, footers, and references to CSS and JavaScript files.

This article presents advice for using master pages, along with assorted tips and tricks that I've picked up over the years in using master pages. Read on to learn more! And if you have additional recommendations and advice on using master pages, please don't hesitate to drop me a line and I'll be happy to add your insight to this article.
Read More >


Using ASP.NET 3.5's ListView and DataPager Controls: Inserting Data
06/17/09

The ListView control is similar to the GridView control in many ways: both display a set of records, both support built-in sorting, paging, editing, and deleting functionality with minimal effort. The ListView differs from the GridView in two key ways:

  • Rather than using fields, the ListView is rendered via templates, which offers the page developer much finer control over the emitted markup, and
  • The ListView supports built-in inserting support

The first installment in this series explored the ListView's template-based rendering. This installment looks at how to use the ListView's inserting functionality.

In a nutshell, inserting data from the ListView requires two steps: defining the inserting interface via the InsertItemTemplate and specifying where the inserting interface should go via the InsertItemPosition property. Much like with editing data from within the ListView, the InsertItemTemplate can contain two-way databinding statements when using a data source control to get the inputs entered by the user from the ListView's inserting interface into the parameters of the data source control. And like with the editing and deleting workflows, you can programmatically examine and modify the user's submitted data before inserting the data, cancelling the operation altogether if needed.

This article walks through the steps for creating a ListView that allows users to insert records. It also shows how to optionally cancel the inserting workflow based on programmatic logic. Read on to learn more!

(It is assumed that the reader is familiar with how to insert data using a data source control. If this is not the case, please first read Accessing and Updating Data in ASP.NET: Inserting Data.)
Read More >


Using ASP.NET 3.5's ListView and DataPager Controls: Editing Data
06/10/09

The GridView and DetailsView controls offer built-in editing functionality that can be turned on with the tick of a checkbox. Without writing a line of declarative markup or server-side source code, the page developer gets a decent out of the box editing interface. Namely, each field in the GridView or DetailsView is rendered in its editing interface; BoundFields display a TextBox control while CheckBoxFields display an enabled checkbox. Moreover, a CommandField is added, which displays the Edit, Update, and Cancel buttons, as needed.

While the ListView control provides editing support, it requires a bit more work from the page developer to get it going. The reason is because the ListView is defined by templates whereas the GridView and DetailsView are defined by fields. Many fields types, such as the BoundField, can generate their own editing interface, but with templates the page developer is on the hook for specifying the editing interface. Creating an editable ListView control entails defining the editing interface via the EditItemTemplate and adding the Edit, Update, and Cancel buttons in the appropriate spots.

This article walks through creating an editable ListView control, with the finished results available for download at the end of the article. Read on to learn more!

(It is assumed that the reader is familiar with how to edit data using a data source control. If this is not the case, please first read Accessing and Updating Data in ASP.NET: Updating Basics.)
Read More >


Implementing Incremental Navigation with ASP.NET
06/03/09

Traditionally, website navigation has been focused on minimizing the number of clicks required to open a given page. However, this goal has nothing to do with the real purpose of navigation, which is to make finding information easy, consistent, and transparent to the user. Also, as websites get bigger, traditional navigation controls such as drop-down menus or tree views become impractical. Faster Internet connections and larger screen sizes now allow developers to experiment with new styles of navigation.

This article shows how to implement incremental navigation, which is a style of navigation where users find information by clicking through a series of lightweight pages, with each click resulting in a small, but highly visible change to the navigation user interface. It differs from traditional drop-down menu navigation in that incremental navigation limits the amount of new choices available to just the next level in the sitemap hierarchy.

I've created a customizable framework for implementing this sort of navigation scheme named Theseus, which you can download from the end of this article. Underneath the covers, Theseus uses ASP.NET's SiteMap class and the configured sitemap provider to implement the incremental navigation. This article starts with an overview of incremental navigation and then goes on to examine how to use Theseus to implement such a navigation scheme in your website. Read on to learn more!
Read More >


Using ASP.NET 3.5's ListView and DataPager Controls: Deleting Data
05/27/09

The previous installments in this article series have demonstrated how to display, group, sort, and page through data using the ListView control. In addition to displaying data, the ListView control also provides support for inserting, updating, and deleting data. If the ListView uses a data source control (such as a SqlDataSource or ObjectDataSource) and that data source control is configured to support insert, updating, or deleting, then implementing such functionality in the ListView does not require writing a single line of code. Rather, adding inserting and updating support entails creating templates that define the inserting and updating user interfaces and Button controls that trigger the actual update or insert. Implementing deleting support requires simply adding a properly configured Delete button to the ItemTemplate.

This installment and the next explore how to perform inserts, updates, and deletes using the ListView control. This installment focuses on deleting and shows how to perform simple, standard deletes as well as more advanced deleting scenarios. The demos explored here (as well as the demos from previous installments) are available for download at the end of the article. Read on to learn more!

(It is assumed that the reader is familiar with how to delete data using a data source control. If this is not the case, please first read Accessing and Updating Data in ASP.NET: Deleting Data.)
Read More >


Examining ASP.NET 2.0's Membership, Roles, and Profile - Part 14
05/20/09

The ASP.NET Toolbox includes two Web controls for managing users' passwords: the ChangePassword control and the PasswordRecovery control. The ChangePassword control allows a user signed into the site to change their password by entering their existing password and their new, desired password. The PasswordRecovery control is used to reset or recover a user's password in the event that it has been forgotten. The PasswordRecovery control is used by anonymous users who need to be reminded of their password. Assuming that the Membership system is configured to require that users have a security question and answer (the default behavior), the user is presented with their security question and must correctly enter their security answer in order to have their password reset or recovered.

While there are two controls for managing passwords, there are no Web controls in the Toolbox for managing a user's security question and answer. In other words, there's no built-in control that allows a signed in user to change her security question and answer. The good news is that while no control offers this functionality it's not difficult to implement this feature ourselves. The MembershipUser class has a ChangePasswordQuestionAndAnswer method that modifies the security question and answer information using the configured Membership provider.

This article shows how to build a page that permits a signed in user to change their security question and answer, and a demo application is available for download at the end of the article that showcases this functionality in action. 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