<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">ShowUsYour&amp;lt;Blog&amp;gt;</title><subtitle type="html">Irregular expressions regularly</subtitle><id>http://weblogs.asp.net/dneimke/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/dneimke/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2005-03-29T11:09:00Z</updated><entry><title>Test post</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/07/07/418281.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/07/07/418281.aspx</id><published>2005-07-07T05:42:00Z</published><updated>2005-07-07T05:42:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.projectdistributor.net/Projects/Project.aspx?projectId=131"&gt;http://www.projectdistributor.net/Projects/Project.aspx?projectId=131&lt;/a&gt;&lt;br /&gt;&lt;a href="http://markitup.com/Posts/Post.aspx?postId=58"&gt;http://markitup.com/Posts/Post.aspx?postId=58&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://notgartner.com/posts/1858.aspx"&gt;http://notgartner.com/posts/1858.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;updated...&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=418281" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author></entry><entry><title>RegexLib V2 - now with added ASP.NET V2 :)</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/06/10/411068.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/06/10/411068.aspx</id><published>2005-06-09T20:56:00Z</published><updated>2005-06-09T20:56:00Z</updated><content type="html">&lt;p&gt;The other day I posted a blog entry about the migration of RegexLib to ASP.NET V2 - the article can be found here:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://markitup.com/Blog/archive/2005/06/07/50.aspx"&gt;http://markitup.com/Blog/archive/2005/06/07/50.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In the coming week I'm planning to post a source code viewer so that you can see how that site has been put together and I'm also planning to release a couple of articles (not sure where yet) - the first of which will be an article describing how I migrated the existing users into the new Membership feature.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=411068" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Regex" scheme="http://weblogs.asp.net/dneimke/archive/tags/Regex/default.aspx" /><category term="Web Forms" scheme="http://weblogs.asp.net/dneimke/archive/tags/Web+Forms/default.aspx" /><category term="Whidbey" scheme="http://weblogs.asp.net/dneimke/archive/tags/Whidbey/default.aspx" /></entry><entry><title>Wow...</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/05/19/407626.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/05/19/407626.aspx</id><published>2005-05-19T12:51:00Z</published><updated>2005-05-19T12:51:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=b53a89fc-3ce6-47ee-b68f-8fcf2ab30a23"&gt;http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=b53a89fc-3ce6-47ee-b68f-8fcf2ab30a23&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=407626" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author></entry><entry><title>My blog is moving - http://markitup.com/Blog/</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/09/397792.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/09/397792.aspx</id><published>2005-04-09T08:13:00Z</published><updated>2005-04-09T08:13:00Z</updated><content type="html">&lt;p&gt;As of&amp;nbsp;today, I'm moving my blogging across to my own domain.&amp;nbsp; If 
you would like to remain subscribed to my blog then please update your 
aggregator to point to:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://markitup.com/Blog/rss.aspx"&gt;http://markitup.com/Blog/rss.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=397792" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author></entry><entry><title>Upcoming IBF Speaking Engagements</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/06/397340.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/06/397340.aspx</id><published>2005-04-06T10:47:00Z</published><updated>2005-04-06T10:47:00Z</updated><content type="html">&lt;p&gt;Over the next couple of months I'll be travelling around Australia and New Zealand to&amp;nbsp;present on the topic of IBF. Here is the pitch for my talk:&lt;/p&gt; &lt;hr /&gt; &lt;p&gt;&lt;em&gt;Following on from his Canberra User Group presentation in March, Darren Neimke will be visiting User Groups in Australia and New Zealand during April and May to present on the topic of Information Bridge Framework (IBF). &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;IBF is a framework for exposing line of business data through Office applications by using .NET and SmartTag technology to take advantage of contextual information.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Version 1.5 of IBF is a new release that simplifies the task of developing, testing and deploying rich solutions that target the Information Bridge. Darren covers each of these topics in his 1 hour presentation. The session is focussed on code and implementation and covers the following areas: planning for an IBF implementation, installing IBF, and building managed smart tags, creating custom UI to appear in the Office Task Pane and working with the IBF metadata.&lt;/em&gt;&lt;/p&gt; &lt;hr /&gt; &lt;p&gt;... and here is a listing of likely locations and dates:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Wednesday April 13 - Perth 8:30am - 10am - .NET Community of Practice &lt;li&gt;Wednesday April 13 - Adelaide 6:30-9:30 pm User Group &lt;li&gt;Wednesday April 20 - Sydney 6:00-9:30pm User Group (N Ryde) &lt;li&gt;Tuesday April 26 - Melbourne .NET User Group &lt;li&gt;Thursday May 5 - Sydney 6:30-9:30 pm Deep .NET User Group (City) &lt;li&gt;Wednesday May 11 - Wollongong 6:30-9:30 pm User Group &lt;li&gt;Tuesday May 17 - Brisbane 6:30-9:30 pm User Group &lt;li&gt;Thursday May 19 - Gold Coast - 6:30-9:30 pm User Group &lt;li&gt;Tuesday May 24 - Hobart - 6:30-9:30 pm User Group &lt;li&gt;Tuesday June 7 - Auckland - 6:30-9:30 pm User Group &lt;li&gt;Wednesday June 8 - Christchurch - 11:30 am - 2:30 pm User Group &lt;li&gt;Wednesday June 8 - Wellington 6:30-9:30 pm User Group &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;p&gt;&lt;a href="http://notgartner.com/posts/1858.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=397340" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Community" scheme="http://weblogs.asp.net/dneimke/archive/tags/Community/default.aspx" /></entry><entry><title>Introducing Bracky</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/06/397267.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/06/397267.aspx</id><published>2005-04-05T19:46:00Z</published><updated>2005-04-05T19:46:00Z</updated><content type="html">&lt;p&gt;I've been talking a lot about UI agents lately and how I'm currently 
prototyping some UI agent stuff for web applications.&amp;nbsp; Today I'd like to 
introduce Bracky:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Bracky" src="http://www.projectdistributor.net/NonApplicationImages/Brakky.Msn.gif" border="0"&gt;&lt;/p&gt;
&lt;p&gt;Bracky is currently reading up on regular expressions so that he can offer 
help over on RegExLib when I'm not around.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a title="" href="http://notgartner.com/" &gt;Mitch&lt;/a&gt; for the inspiration and Thomas for the 
image.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=397267" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Knowledge and Collaboration" scheme="http://weblogs.asp.net/dneimke/archive/tags/Knowledge+and+Collaboration/default.aspx" /></entry><entry><title>ASP 2 Quickstarts </title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/05/397121.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/05/397121.aspx</id><published>2005-04-04T23:48:00Z</published><updated>2005-04-04T23:48:00Z</updated><content type="html">&lt;p&gt;Very Nice!&lt;/p&gt; &lt;p&gt;&lt;a href="http://beta.asp.net/quickstart/aspnet/Default.aspx"&gt;http://beta.asp.net/quickstart/aspnet/Default.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=397121" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Web Forms" scheme="http://weblogs.asp.net/dneimke/archive/tags/Web+Forms/default.aspx" /><category term="Whidbey" scheme="http://weblogs.asp.net/dneimke/archive/tags/Whidbey/default.aspx" /></entry><entry><title>Information Bridge Resources and FAQ</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/04/396964.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/04/396964.aspx</id><published>2005-04-03T23:34:00Z</published><updated>2005-04-03T23:34:00Z</updated><content type="html">
&lt;p&gt;Over the next couple of months I'm planning to get out to each of the User 
Groups in Australia and New Zealand to discuss the Information Bridge Framework 
(IBF). I'm going to use this post to link to some resources and to provide an 
overview of what IBF is.&lt;/p&gt;
&lt;p&gt;If you have any favourite IBF resources, can you please append them to this 
entry as a comment.&lt;/p&gt;
&lt;h4&gt;What is IBF&lt;/h4&gt;
&lt;p&gt;Take a look at the following image IBF at work in Outlook. The image shows 
Outlook displaying an e-mail with a smart tag and some custom UI in the Task 
Pane:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="IBF in action in Outlook" src="http://msdn.microsoft.com/library/en-us/odc_ibf2003_ta/html/odc_ibfintro01.gif" border="0"&gt;&lt;/p&gt;
&lt;p&gt;IBF is simply a framework within Office 2003 for working with the Task Pane 
and using smart-tags to perform context sensitive actions. An IBF solution is 
written using .NET V1.1. &lt;/p&gt;
&lt;p&gt;A typical IBF solution will use SmartTags to recognize text in an Office 
document and then supply the user with operations that are linked to that text - 
for example, recognizing a CustomerId might provide options to "view customer 
account" or "view recent purchases by customer". Invoking these smart tag 
options would display some UI in the Office2003 Task Pane.&lt;/p&gt;
&lt;p&gt;The UI pieces are written using simple WinForms UserControls, so development 
is as easy as creating any normal piece of UI in WinForms.&lt;/p&gt;
&lt;p&gt;Finally, IBF contains 3 pieces: &lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;a development component which plugs-in to VS2003 and allows developers to 
  develop solutions that target IBF 
  &lt;li&gt;a server component which contains all of the metadata about the solution 
  &lt;li&gt;a client component which gets installed on each client and connects to the 
  server component to get its instructions&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;IBF Resources&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Note: I'll be adding to this list over the coming days with links to 
IBF-related blogs, articles and multimedia&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/office/understanding/ibframework/default.aspx"&gt;IBF 
  Home Page&lt;/a&gt; 
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/office/understanding/ibframework/gettingstarted/default.aspx?pull=/library/en-us/odc_ibf2003_ta/html/ODC_ibfintro.asp"&gt;Overview 
  of IBF&lt;/a&gt; 
  &lt;li&gt;&lt;a href="http://www.codeproject.com/useritems/IBFWalkthroughPart1.asp"&gt;IBF 
  Walkthrough (excellent, developer-centric tutorial)&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396964" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Knowledge and Collaboration" scheme="http://weblogs.asp.net/dneimke/archive/tags/Knowledge+and+Collaboration/default.aspx" /></entry><entry><title>VATICANUS: The Word &amp; its Meaning = Vatican</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/02/396780.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/02/396780.aspx</id><published>2005-04-02T09:00:00Z</published><updated>2005-04-02T09:00:00Z</updated><content type="html">&lt;p&gt;DISCLAIMER: I read this&amp;nbsp;&lt;a href="http://www.solomonstemple.com/modules.php?name=News&amp;amp;file=article&amp;amp;sid=1510"&gt;here&lt;/a&gt; 
today so, unless told otherwise... I'm just going to believe that it's true:&lt;/p&gt;
&lt;hr&gt;

&lt;p&gt;&lt;strong&gt;VATICANUS: &lt;/strong&gt;The Word &amp;amp; its Meaning from which is derived 
the word Vatican as in Vatican City the Imperial Seat of the Roman Caesars. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;VATICAN&lt;/b&gt; is derived from two Latin words Vatic-anus. 
&lt;p&gt;&lt;b&gt;VATIC-ANUS &lt;/b&gt;
&lt;p&gt;&lt;b&gt;VATIC-&lt;/b&gt; "Characteristic of a prophet; oracular" From Latin: vts, seer 
&lt;b&gt;-ANUS&lt;/b&gt; "The opening at the lower end of the alimentary canal through which 
solid waste is eliminated from the body" From Latin: nus, ring, anus 
&lt;p&gt;&lt;b&gt;VATIC- ANUS = VATICANUS = VATICAN &lt;/b&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396780" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author></entry><entry><title>What CommandName's to use in a FormView</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/02/396722.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/02/396722.aspx</id><published>2005-04-01T20:31:00Z</published><updated>2005-04-01T20:31:00Z</updated><content type="html">&lt;p&gt;taken from&amp;nbsp;&lt;a href="http://fredrik.nsquared2.com/viewpost.aspx?PostID=102"&gt;Fredrik's 
blog&lt;/a&gt;:&lt;/p&gt;
&lt;hr&gt;

&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;Paging:&lt;?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office"?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Next&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Prev&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;First&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Last&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;The FormView 
has support for paging so we don’t really need to add button controls for those 
commands. We only need to use those if we want to create our own custom 
paging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;For changing 
modes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;New&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Cancel&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Edit&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;The 
&lt;strong&gt;New&lt;/strong&gt; command will change the mode of the FormView to the Insert 
mode. The &lt;strong&gt;Cancel&lt;/strong&gt; will turn back the mode to its default mode. 
The &lt;strong&gt;Edit&lt;/strong&gt; will turn the mode into Edit 
mode.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;For 
actions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Insert&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Delete&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Update&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&lt;font face="Verdana" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="EN-GB" style="mso-ansi-language: EN-GB"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;When we press a 
button with the &lt;strong&gt;Insert&lt;/strong&gt; command specified the FormView will 
execute the associated DataSource control’s InsertCommand. If the CommandName of 
the button is set to &lt;strong&gt;Delete&lt;/strong&gt; or &lt;strong&gt;Update&lt;/strong&gt; the 
DataSource’s DeleteCommand or UpdateCommand will be executed. By default the 
SelectCommand of the DataSource control will be 
executed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396722" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Web Forms" scheme="http://weblogs.asp.net/dneimke/archive/tags/Web+Forms/default.aspx" /><category term="Whidbey" scheme="http://weblogs.asp.net/dneimke/archive/tags/Whidbey/default.aspx" /></entry><entry><title>Is RegExLib full of "it"?</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/01/396595.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/01/396595.aspx</id><published>2005-04-01T06:46:00Z</published><updated>2005-04-01T06:46:00Z</updated><content type="html">&lt;p&gt;Today I read a &lt;a href="http://blogs.regexadvice.com/jschoolcraft/archive/2005/03/31/3227.aspx"&gt;comment&lt;/a&gt; 
on Jeffrey Schoolcraft's regex blog from Randal L. Schwartz which I felt that I 
needed to respond to.&amp;nbsp; As I started writing the comment I realized that 
this is probably news that needs to be publicly visible, so I'm posting it to my 
blog and cross referencing&amp;nbsp; the original comment.&amp;nbsp; First, here is 
Randal's comment:&lt;/p&gt;
&lt;hr&gt;
&lt;em&gt;Yup. I continue to downvote and negative-comment nearly every entry at 
"regex lib". &lt;/em&gt;
&lt;p&gt;&lt;em&gt;Do not validate email addresses with a regex (unless it's the full regex, 
as you point out). &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Do not parse HTML with a regex. HTML is surprisingly complex. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Do not validate a date with a regex. All these regex I see that try to 
compute the number of days of february based on the year number just have me 
going "WTF!". &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;These are NOT regex tasks. These are dedicated tool tasks. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;And yet, "regexlib" is full of them. And full of "it", if you know what I 
mean. &lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
Randal...
&lt;p&gt;I hear your pain.&amp;nbsp; As the lead developer of RegExLib I also see the 
problems that you are mentioning and, presently we haven't really provided a 
good enough toolset for the newbies to really help themselves properly.&amp;nbsp; 
Should the&amp;nbsp;newbies be randomly using regex's that they find on the site... 
dunno?&amp;nbsp; That's for another argument.&lt;/p&gt;
&lt;p&gt;We implemented the rating and comment system in the middle of last year to 
try and give some indication about the value of individual patterns - so I'm 
extremely grateful that dilligent members of the community such as yourself are 
helping out by casting your votes.&amp;nbsp; We also implement an Rss feed for the 
comments so that comments such as yours are given public visibility - &lt;a href="http://www.regexlib.com/RssComments.aspx"&gt;http://www.regexlib.com/RssComments.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It's a hard battle to win as RegExLib continues to grow and, as of today 
contains nearly 1000 expressions.&amp;nbsp; There's good news though.&amp;nbsp; Over the 
past couple of months there's been a lot of effort put into helping solve these 
problems and, to that effect, users of the site will see a vastly improved set 
of tools to help deal with some of the problems that you've mentioned.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;To give you a quick example, one of the new features will provide users with 
a shortcut way of finding useful &lt;strong&gt;AND ACCURATE&lt;/strong&gt; expressions by 
offering a box which says: "Enter N examples of what you want to match and N 
that you shouldn't and we'll provide you with a list of patterns which that 
match your requirements".&amp;nbsp; This will help to remove the hit and miss 
element of a NOOB scanning through 1000 patterns to find the veritable needle in 
the haystack.&lt;/p&gt;
&lt;p&gt;The tools that allow users to manage their expressions is also getting an 
improvement so hopefully pattern authors might be more responsive in adjusting 
their patterns based on feedback received.&lt;/p&gt;
&lt;p&gt;I hope that, once you see the new features for yourself you will agree with 
me that RegExLib is a much more valuable resource than it is 
today.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396595" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Regex" scheme="http://weblogs.asp.net/dneimke/archive/tags/Regex/default.aspx" /></entry><entry><title>Smart UI agents and inductive UI</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/04/01/396566.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/04/01/396566.aspx</id><published>2005-04-01T03:04:00Z</published><updated>2005-04-01T03:04:00Z</updated><content type="html">&lt;p&gt;Continuing on from my blog entries last week about automated UI agents, I've started building a small prototype which will hopefully lead to an actual implementation.&amp;nbsp; In my prototype I have several agents accessing shared context through which they have some access to shared resources - such as logging tool and reporting agents.&amp;nbsp; As I mentioned, the output from my prototype will be an implementation, but I'm also preparing to cover it with a whitepaper on some of the lower level details.&lt;/p&gt; &lt;p&gt;Today I'd like to write about a small mental excercise that I've developed which should help to get into thinking mode about agents:&lt;/p&gt; &lt;p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Update:&lt;/font&gt;&lt;/strong&gt;&lt;em&gt; when you do this excercise, try to mentally envisage the objective as an actual objective&amp;nbsp;of a user on your own site - such as a visitor searching for an article or a site admin adding a new item or a techsupport staff member replying to an action item:&lt;/em&gt;&lt;/p&gt; &lt;p&gt; &lt;hr id="null" /&gt; &lt;strong&gt;&lt;u&gt;&lt;font size="4"&gt;Mapping out an Objective&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;1) Starting Scope: Browsing&lt;/p&gt; &lt;p&gt;2) What is your current Objective within that scope?&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - To learn about something that the author wrote.&lt;/p&gt; &lt;p&gt;3) What operations can you perform within that scope?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Submit feedback&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - User defined search&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Pre-canned Search&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - View the authors favourite authors&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - View other entries within the current category &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - View similar entries&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Learn about the author&lt;/p&gt; &lt;p&gt;4) Which of the items in 2 and 3 are related?&lt;/p&gt; &lt;p&gt;5) Do you have a history within this scope?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Has read blog entries?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Has submitted feedback?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Has used search?&lt;/p&gt; &lt;p&gt;So, in this excercise, you can see that not only can we determine the "objective" of a user (given a current scope), but we are also in a position to ascertain how capable they are of reaching that objective on their own.&amp;nbsp; If the user has no history within this scope then it is likely that they may require assistance from us to "lead" them to tools which can help to achieve their underlying objective.&amp;nbsp; It is also likely that, within a given Scope, there can be more than just one single objective. &lt;hr id="null" /&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;In this entry I have discussed: Scope, Operations, Objectives and Agents.&amp;nbsp; I've also given an example of creating a high level mapping for an objective.&amp;nbsp; If you are read this and you did the mental excercise, please take the time to develop a similar mapping for a different objective and forward it to me as either a comment or as an e-mail.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396566" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Knowledge and Collaboration" scheme="http://weblogs.asp.net/dneimke/archive/tags/Knowledge+and+Collaboration/default.aspx" /></entry><entry><title>We live, as we dream alone</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/03/31/396376.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/03/31/396376.aspx</id><published>2005-03-31T03:07:00Z</published><updated>2005-03-31T03:07:00Z</updated><content type="html">&lt;p&gt;Every now and then you will see blog entries which read along the lines of:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp; "I think that product Y is the suckiest thing on the planet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; because every time I press the foo button everything &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chokes and I have to restart my PC"&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Reading that causes an adjustment to&amp;nbsp;my in-built&amp;nbsp;impartiality-o-scope.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Don't get me wrong, some things that fail to meet expectations really do suck, for example:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Imagine that, when the next automatic computer update &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; comes down the line it breaks something really stupid - &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ie: it forces you to restart Windows every time you press &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; the Start button .&amp;nbsp; That just flat out sucks!&amp;nbsp; They should've &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tested that, somebody needs to get chewed-out for that.&lt;/em&gt; &lt;/p&gt; &lt;p&gt;On the other hand, what if product Y or the foo button are relatively new.&amp;nbsp; Does it NOT suck that pressing the new foo button causes you to restart your PC... hrmm, no, it still sucks but... rather than going down on the whole of product Y because the foo button is fundamentally broken, why not use this space of time as an opportunity to tell me something of the sense of wonderment that you felt as you were about to press that shiny new foo button for the first time.&amp;nbsp; Tell me what plans you had for it.&amp;nbsp; Tell me how you were about to use it.&amp;nbsp; Was it creative?&amp;nbsp; Was it new?&amp;nbsp; &lt;/p&gt; &lt;p&gt;I'm much more likely to get engaged with your blog writing if you can help me to live the software dream.&lt;/p&gt; &lt;p&gt; &lt;hr id="null" /&gt; &lt;br /&gt;"We live, as we dream alone" &lt;br /&gt;- Joseph Conrad (English novelist, 1857-1924)&lt;/p&gt; &lt;p&gt;"When I hear somebody sigh, "Life is hard," &lt;br /&gt;I am always tempted to ask, "Compared to what?""&lt;br /&gt;- Sydney J. Harris&lt;br /&gt;&amp;nbsp;&lt;br /&gt;"Between the conception and the creation &lt;br /&gt;between the emotion and the response &lt;br /&gt;Falls the shadow"&lt;br /&gt;- Joseph Conrad (English novelist, 1857-1924)&lt;/p&gt; &lt;p&gt;"It occurred to me that my speech or my silence, indeed any action of mine, would be a mere futility"&lt;br /&gt;- Joseph Conrad (English novelist, 1857-1924)&lt;/p&gt; &lt;p&gt;"I dream for a living" &lt;br /&gt;- Steven Spielberg&lt;/p&gt; &lt;p&gt;Quotes found on &lt;a href="http://en.thinkexist.com/"&gt;http://en.thinkexist.com/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396376" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Rants" scheme="http://weblogs.asp.net/dneimke/archive/tags/Rants/default.aspx" /></entry><entry><title>Using generics to build generic data logic layers</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/03/29/396120.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/03/29/396120.aspx</id><published>2005-03-29T08:12:00Z</published><updated>2005-03-29T08:12:00Z</updated><content type="html">&lt;p&gt;Consider exposing raw Generic collections from your data logic layers, such 
as:&lt;/p&gt;&lt;pre&gt;   &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; PersonManager {
        ...
        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; List&amp;lt;Person&amp;gt; ListPeople(...) { ... } ;
   }&lt;/pre&gt;
&lt;p&gt;When I started messing around with building applications in 2.0 I quickly 
wrapped Generic collections like so:&lt;/p&gt;&lt;pre&gt;  &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; PersonCollection : List&amp;lt;Person&amp;gt; {
     ... 
  }&lt;/pre&gt;
&lt;p&gt;This was normally done so that I could hang a Sort method off of them:&lt;/p&gt;&lt;pre&gt;  &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; PersonCollection : List&amp;lt;Person&amp;gt;, IBidirectionalSort {
     ... 
     &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Sort( &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; sortExpression, &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; isAscending ) { ... }
  } 

&lt;/pre&gt;
&lt;p&gt;The downside of this approach is that you end up writing fiddly code around 
calls to generic helper methods.&lt;/p&gt;
&lt;p&gt;As an example, let's say that I write a nice generic helper method to page my 
collections:&lt;/p&gt;&lt;pre&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Page(&lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; List&amp;lt;T&amp;gt; data, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; maximumRows, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; startRowIndex) 
        where T : IDataObject, &lt;span style="COLOR: blue"&gt;new&lt;/span&gt;() {

        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (data.Count &amp;gt; &lt;span style="COLOR: maroon"&gt;0&lt;/span&gt;) {
            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (maximumRows &amp;gt; &lt;span style="COLOR: maroon"&gt;0&lt;/span&gt; &amp;amp;&amp;amp; startRowIndex &amp;gt;= &lt;span style="COLOR: maroon"&gt;0&lt;/span&gt;) {
                List&amp;lt;T&amp;gt; tmpColl = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;

                &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; remainingRowCount = data.Count - startRowIndex;
                &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; count = (remainingRowCount &amp;gt;= maximumRows) ? maximumRows : remainingRowCount;

                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (count &amp;gt; &lt;span style="COLOR: maroon"&gt;0&lt;/span&gt;) {
                    tmpColl = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; List&amp;lt;T&amp;gt;();
                    tmpColl.AddRange(data.GetRange(startRowIndex, count));
                }
                data = tmpColl;
            }
        }
    }
&lt;/pre&gt;
&lt;p&gt;If I’ve wrapped my collection – as per the PersonCollection example – then 
using the generic Page method will require temporary object creation when I’m 
calling it, something like:&lt;/p&gt;&lt;pre&gt;   &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; PersonCollection ListPeople(...) { 
       ...
       PersonCollection people = &lt;strong&gt;FillList&lt;/strong&gt;( reader ) ;
       List&amp;lt;Person&amp;gt; tmp = &lt;strong&gt;Page&lt;/strong&gt;( people, &lt;span style="COLOR: maroon"&gt;20&lt;/span&gt;, &lt;span style="COLOR: maroon"&gt;0&lt;/span&gt; ) ;
       PersonCollection peopleToReturn = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; PersonCollection() ;
       peopleToReturn.AddRange( tmp ) ;
       &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; peopleToReturn ;
   }&lt;/pre&gt;
&lt;p&gt;So, you can see that by the time we have many generic methods, working with 
temporary objects becomes cumbersome.&amp;nbsp; Exposing List&amp;lt;Person&amp;gt; from 
this method would lead you to build your surrounding methods – such as FillList 
and Page – to work with your code better but will also lead to leaner code:&lt;/p&gt;&lt;pre&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; List&amp;lt;Person&amp;gt; ListPeople(...) { 
       ...
       List&amp;lt;Person&amp;gt; people = &lt;strong&gt;FillList&lt;/strong&gt;&amp;lt;Person&amp;gt;( reader ) ;
       &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;strong&gt;Page&lt;/strong&gt;&amp;lt;Person&amp;gt;( people, &lt;span style="COLOR: maroon"&gt;20&lt;/span&gt;, &lt;span style="COLOR: maroon"&gt;0&lt;/span&gt; ) ;
    }&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396120" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/dneimke/archive/tags/C_2300_/default.aspx" /><category term="Whidbey" scheme="http://weblogs.asp.net/dneimke/archive/tags/Whidbey/default.aspx" /></entry><entry><title>Using the SiteMapDataSource to display lists of links</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/dneimke/archive/2005/03/29/396103.aspx" /><id>http://weblogs.asp.net/dneimke/archive/2005/03/29/396103.aspx</id><published>2005-03-29T00:09:00Z</published><updated>2005-03-29T00:09:00Z</updated><content type="html">&lt;p&gt;Danny Chen just blogged about the SiteMap and showed some interesting ways to make use of custom attributes:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;A href="http://weblogs.asp.net/dannychen/archive/2005/03/28/396099.aspx"&gt;http://weblogs.asp.net/dannychen/archive/2005/03/28/396099.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;There's another one that I'd like to add to this list.&amp;nbsp; Commonly people are using UL elements to create navigational links because they require less Html to be emitted in the page and are easily styled into nice looking links.&amp;nbsp; This is the approach that modern applications such as CommunityServer and &lt;a title="ProjectDistributor" href="http://ProjectDistributor.net" &gt;ProjectDistributor&lt;/a&gt; use for their lists of links.&amp;nbsp; So how would you do that with a SiteMap?&amp;nbsp; The answer is actually pretty simple because you can bind a SiteMapDataSource directly to a Repeater.&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Repeater DataSourceId="myDataSource" ...&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href='&amp;lt;%# Eval("Url") %&amp;gt;'&amp;gt;&amp;lt;%# Eval("Title") %&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:Repeater&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;asp:SiteMapDataSource id="myDataSource" runat="server" ShowStartingNode="false" /&amp;gt;&lt;/p&gt; &lt;p&gt;That will give you a nice list of clickable links.&lt;/p&gt; &lt;p&gt;On my site I actually only required a subset of the items in the SiteMap to be rendered on a specific menu.&amp;nbsp; For example, I had a left navigation menu which only displays a subset of the total items.&amp;nbsp; In this case I can use the technique that Danny showed off by adding a custom attribute to my SiteMapNode's like so:&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;siteMap xmlns="&lt;a href="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"&gt;http://schemas.microsoft.com/AspNet/SiteMap-File-1.0&lt;/a&gt;" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;siteMapNode url="Home.aspx" title="Home"&amp;nbsp; DisplayOnLeft="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;siteMapNode url="Work.aspx" title="Work" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;siteMapNode url="School.aspx" title="School" DisplayOnLeft="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/siteMapNode&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/siteMap&amp;gt;&lt;/p&gt; &lt;p&gt;So, you can see that 2 of the nodes contain a DisplayOnLeft attribute which is set to true.&amp;nbsp; Now, to conditionally display those items in my sidebar navigation list I can hook the Repeater's ItemDataBound event and write logic like so...&lt;/p&gt; &lt;p&gt;&amp;nbsp; SiteMapNode node = e.Item.DataItem as SiteMapNode ;&lt;br /&gt;&amp;nbsp; string display = node["DisplayOnLeft"];&lt;br /&gt;&amp;nbsp; if( string.IsEmptyOrNull( display ) || display != "true" ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Item.Visible = false ;&lt;br /&gt;&amp;nbsp; }&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=396103" width="1" height="1"&gt;</content><author><name>digory</name><uri>http://weblogs.asp.net/members/digory.aspx</uri></author><category term="Web Forms" scheme="http://weblogs.asp.net/dneimke/archive/tags/Web+Forms/default.aspx" /><category term="Bookmarks" scheme="http://weblogs.asp.net/dneimke/archive/tags/Bookmarks/default.aspx" /><category term="Whidbey" scheme="http://weblogs.asp.net/dneimke/archive/tags/Whidbey/default.aspx" /></entry></feed>