<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title> Unhandled Exception : .NET</title><link>http://weblogs.asp.net/davidfowler/archive/tags/.NET/default.aspx</link><description>Tags: .NET</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Client side devevelopment in ASP.NET</title><link>http://weblogs.asp.net/davidfowler/archive/2009/01/29/client-side-devevelopment-in-asp-net.aspx</link><pubDate>Thu, 29 Jan 2009 10:09:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6868170</guid><dc:creator>davidfowl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/davidfowler/rsscomments.aspx?PostID=6868170</wfw:commentRss><comments>http://weblogs.asp.net/davidfowler/archive/2009/01/29/client-side-devevelopment-in-asp-net.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;We ASP.NET developers know how much of a pain it is writing javascript in any app we have today because of naming container madness! You've probably done something like this:&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: Consolas; BACKGROUND: black; COLOR: white; FONT-SIZE: 10pt; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px"&gt;&lt;PRE style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: yellow"&gt;function&lt;/SPAN&gt; DoSomeThingCool() {&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;var&lt;/SPAN&gt; textBox = document.getElementById(&lt;SPAN style="COLOR: #a31515"&gt;'ct100_contentplaceholder1_TextBox1'&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;or something not so hardcoded&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-FAMILY: Consolas; BACKGROUND: black; COLOR: white; FONT-SIZE: 10pt; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px"&gt;&lt;PRE style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: yellow"&gt;function&lt;/SPAN&gt; DoSomeThingCool() {&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;var&lt;/SPAN&gt; textBox = document.getElementById(&lt;SPAN style="COLOR: #a31515"&gt;'&amp;lt;%= TextBox1.ClientID %&amp;gt;'&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://blog.osbornm.com/" mce_href="http://blog.osbornm.com"&gt;Matthew Osborn&lt;/A&gt;, QA on the ASP.NET team&amp;nbsp;has a great &lt;A href="http://blog.osbornm.com/archive/2009/01/06/asp.net-4.0-clientid-overview-again.aspx" mce_href="http://blog.osbornm.com/archive/2009/01/06/asp.net-4.0-clientid-overview-again.aspx"&gt;post&lt;/A&gt; on a new ASP.NET 4.0 feature that gives developers more control over how ClientIDs are generated.&lt;!--EndFragment--&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6868170" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/davidfowler/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/davidfowler/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/davidfowler/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Data Controls 101</title><link>http://weblogs.asp.net/davidfowler/archive/2008/10/14/data-controls-101.aspx</link><pubDate>Tue, 14 Oct 2008 09:46:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6680363</guid><dc:creator>davidfowl</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/davidfowler/rsscomments.aspx?PostID=6680363</wfw:commentRss><comments>http://weblogs.asp.net/davidfowler/archive/2008/10/14/data-controls-101.aspx#comments</comments><description>&lt;P&gt;I’ve worked with asp.net a bit at school before I came to Microsoft. Being the “data dev” as you would imagine, I get lots of bugs that have to do with the data (datasource/databound) controls. I also scan the internal and external forums and try to help customers find solutions to their problems. This blog post is the first of a series on common scenarios using data controls, that I call &lt;B&gt;Data Controls 101.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;When new developers come to asp.net from other web technologies/backgrounds the tendency is to continue doing things as they did before, when in fact they should learn the paradigms we expect in asp.net webforms (mvc is kind of different).&lt;/P&gt;
&lt;P&gt;These posts will be scenario driven with tidbits of information here and there. Let’s start with a simplest case:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;I want to show a list of categories from my database.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Before you pick a control and rush to go write code, you should ask other questions that will help narrow the choices down. Do I want to delete, update, insert, select? Do I want to define my control template manually or use column auto generation? After you decide what set of functionality you want there is still probably a bunch&lt;B&gt; &lt;/B&gt;combinations of controls you want choose to accomplish your goal. &lt;/P&gt;
&lt;TABLE class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 90%; BORDER-BOTTOM: #ccc 1px solid" cellPadding=4 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;&lt;B&gt;Controls&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;&lt;B&gt;Select&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P style="FONT-WEIGHT: 700"&gt;Delete&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P style="FONT-WEIGHT: 700"&gt;Inline Edit&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P style="FONT-WEIGHT: 700"&gt;Insert&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P style="FONT-WEIGHT: 700"&gt;Paging&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P style="FONT-WEIGHT: 700"&gt;Sorting&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;&lt;B&gt;Column Autogeneration&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;GridView&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;ListView&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x (DataPager)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;Repeater&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;DetailsView&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;FormView&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;DataList&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;x&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; VERTICAL-ALIGN: middle; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center"&gt;
&lt;P&gt;-&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;The above table is a summary of what those controls on the left support out of the box without much added effort (some other controls can do the same thing with a little more work). &lt;/P&gt;
&lt;P&gt;Ok so we’ve decided to we want a tabular layout, paging, sorting and selection with inline editing. Looking at the table I’d pick the GridView or ListView.&lt;/P&gt;
&lt;P&gt;Next goal is to choose the datasource control. The same kinds of questions apply when picking the datasource control, but it is more specific to how you want to access your data. In my case I’ll use LinqDataSource.&lt;/P&gt;
&lt;P&gt;Finally the code:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #ddd 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 10pt; BACKGROUND: black; PADDING-BOTTOM: 2px; BORDER-LEFT: #ddd 1px solid; COLOR: white; PADDING-TOP: 2px; BORDER-BOTTOM: #ddd 1px solid; FONT-FAMILY: Consolas"&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;lt;&lt;SPAN style="COLOR: yellow"&gt;asp&lt;/SPAN&gt;:&lt;SPAN style="COLOR: yellow"&gt;LinqDataSource&lt;/SPAN&gt; &lt;SPAN style="COLOR: yellow"&gt;ID&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"categoriesSource"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;EnableUpdate&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"true"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;runat&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"server"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;ContextTypeName&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"FowlerSample.NorthwindDataContext"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;TableName&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"Categories"&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;lt;/&lt;SPAN style="COLOR: yellow"&gt;asp&lt;/SPAN&gt;:&lt;SPAN style="COLOR: yellow"&gt;LinqDataSource&lt;/SPAN&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;lt;&lt;SPAN style="COLOR: yellow"&gt;asp&lt;/SPAN&gt;:&lt;SPAN style="COLOR: yellow"&gt;GridView&lt;/SPAN&gt; &lt;SPAN style="COLOR: yellow"&gt;ID&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"categories"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;runat&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"server"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;AllowPaging&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"True"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;AllowSorting&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"True"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;DataKeyNames&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"CategoryID"&lt;/SPAN&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: yellow"&gt;DataSourceID&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"categoriesSource"&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="COLOR: yellow"&gt;Columns&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;SPAN style="COLOR: yellow"&gt;asp&lt;/SPAN&gt;:&lt;SPAN style="COLOR: yellow"&gt;CommandField&lt;/SPAN&gt; &lt;SPAN style="COLOR: yellow"&gt;ShowSelectButton&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"True"&lt;/SPAN&gt; &lt;SPAN style="COLOR: yellow"&gt;ShowEditButton&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #ff8000"&gt;"true"&lt;/SPAN&gt; /&amp;gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;SPAN style="COLOR: yellow"&gt;Columns&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;lt;/&lt;SPAN style="COLOR: yellow"&gt;asp&lt;/SPAN&gt;:&lt;SPAN style="COLOR: yellow"&gt;GridView&lt;/SPAN&gt;&amp;gt;&lt;/P&gt;&lt;/DIV&gt;&lt;!--EndFragment--&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;That’s all you have to write and suddenly things just work. Next time I'll go over some of how the “magic” works.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6680363" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/davidfowler/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/davidfowler/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/davidfowler/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://weblogs.asp.net/davidfowler/archive/tags/.NET/default.aspx">.NET</category></item></channel></rss>