<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnetslackers.com/Community/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Programmatically Speaking ...</title><subtitle type="html" /><id>http://dotnetslackers.com/Community/blogs/xun/atom.aspx</id><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/default.aspx" /><link rel="self" type="application/atom+xml" href="http://dotnetslackers.com/Community/blogs/xun/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.30415.43">Community Server</generator><updated>2008-10-13T21:17:00Z</updated><entry><title>String.format problem with MS AJAX javascript</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/02/13/string-format-problem-with-ms-ajax-javascript.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/02/13/string-format-problem-with-ms-ajax-javascript.aspx</id><published>2009-02-13T17:27:00Z</published><updated>2009-02-13T17:27:00Z</updated><content type="html">&lt;p&gt;One of the string method in&amp;nbsp;MS Ajax library is String.format. It works well in a statement like this:&lt;/p&gt;
&lt;p&gt;alert(String.format(&amp;quot;Format me now, first&amp;nbsp;is {0}, second is {1}, third&amp;nbsp;is {2}&amp;quot;, &amp;quot;first&amp;quot;, &amp;quot;second&amp;quot;, &amp;quot;third&amp;quot;));&lt;/p&gt;
&lt;p&gt;However, if you want to put the last three parameters in an array as such:&lt;/p&gt;
&lt;p&gt;var values = new array();&lt;/p&gt;
&lt;p&gt;values[0] = &amp;quot;first&amp;quot;;&lt;/p&gt;
&lt;p&gt;values[1] = &amp;quot;second&amp;quot;;&lt;/p&gt;
&lt;p&gt;values[2] = &amp;quot;third&amp;quot;;&lt;/p&gt;
&lt;p&gt;Then you run the statement again:&lt;/p&gt;
&lt;p&gt;alert(String.format(&amp;quot;Format me now, first&amp;nbsp;is {0}, second is {1}, third&amp;nbsp;is {2}&amp;quot;, values));&lt;/p&gt;
&lt;p&gt;You will found the alerted string is &amp;quot;Format me now, first&amp;nbsp;is first, second, third, second is , third&amp;nbsp;is &amp;quot;&lt;/p&gt;
&lt;p&gt;Totally not what it should be. &lt;/p&gt;
&lt;p&gt;So instead, we&amp;nbsp;have to&amp;nbsp;go back the old-timer javascript and do a replacement&amp;nbsp;as such&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;if (values.length &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url = &amp;quot;&lt;/strong&gt;Format me now, first&amp;nbsp;is {0}, second is {1}, third&amp;nbsp;is {2}&amp;quot;,&amp;nbsp;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; values.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var exp = new RegExp(&amp;#39;\\{&amp;#39; + (i) + &amp;#39;\\}&amp;#39;, &amp;#39;gm&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = url.replace(exp, values&lt;img src="http://dotnetslackers.com/Community/emoticons/emotion-55.gif" alt="Idea" /&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Guess we all make mistakes. &lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;var values = new array();&lt;/p&gt;
&lt;p&gt;values[0] = &amp;quot;first&amp;quot;;&lt;/p&gt;
&lt;p&gt;values[1] = &amp;quot;second&amp;quot;;&lt;/p&gt;
&lt;p&gt;values[2] = &amp;quot;third&amp;quot;;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30664" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Just Published on DNS: JQuery and ASP</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/02/09/just-published-on-dns-jquery-and-asp.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/02/09/just-published-on-dns-jquery-and-asp.aspx</id><published>2009-02-09T17:09:00Z</published><updated>2009-02-09T17:09:00Z</updated><content type="html">&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#810081;"&gt;&lt;strong&gt;Just Published on DNS&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id="ctl00_ArticleInfo1_articletitle"&gt;&lt;a href="http://dotnetslackers.com/articles/ajax/Using-jQuery-with-ASP-NET.aspx" class="null"&gt;Using jQuery with ASP .NET&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;p&gt;In September 2008 Scott Guthrie, the head of the ASP.NET team, announced in &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx"&gt;&lt;span style="color:#00adef;"&gt;a blog post&lt;/span&gt;&lt;/a&gt; that Visual Studio would be shipping with the jQuery library. He writes:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;ldquo;jQuery is a lightweight open source JavaScript library (only 15kb in size) that in a relatively short span of time has become one of the most popular libraries on the web. A big part of the appeal of jQuery is that it allows you to elegantly (and efficiently) find and manipulate HTML elements with minimum lines of code &amp;hellip; There is a huge ecosystem and community built up around JQuery. The jQuery library also works well on the same page with ASP.NET AJAX and the ASP.NET AJAX Control Toolkit.&amp;rdquo;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;With that, JQuery is officially embraced by ASP.NET. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnetslackers.com%2farticles%2fajax%2fUsing-jQuery-with-ASP-NET.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdotnetslackers.com%2farticles%2fajax%2fUsing-jQuery-with-ASP-NET.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30616" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Silverlight HomePage is a good Laugh!</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/27/silverlight-homepage-is-a-good-laugh.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/27/silverlight-homepage-is-a-good-laugh.aspx</id><published>2009-01-27T16:47:00Z</published><updated>2009-01-27T16:47:00Z</updated><content type="html">&lt;p&gt;I have long found the flagsite of Silverlight disappointing, especially on the video-streaming side. Early this year, I blogged about my quite unhappy experience watching Bill Gate&amp;#39;s performance on SilverLight, in this post:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/01/11/a-disastrous-experience-with-silverlight.aspx"&gt;http://dotnetslackers.com/Community/blogs/xun/archive/2008/01/11/a-disastrous-experience-with-silverlight.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Of course my voice was buried in the chorus of praises for Silverlight. I thought I was wrong and bitchy.&lt;/p&gt;
&lt;p&gt;Now, the very big candid voice of Rick Strahl blogged about his experience viewing Obama&amp;#39;s inauguration. It made a splash. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.west-wind.com/Weblog/posts/602131.aspx"&gt;http://www.west-wind.com/Weblog/posts/602131.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;On another note, what is the deal with the Microsoft&amp;#39;s attempt of reinventing / rebranding itself by&amp;nbsp;having Seinfield complain on air: he has so many cars, he gets caught in his own traffic; and Bill Gates did a little butt-wriggling dance ...&lt;/p&gt;
&lt;p&gt;I heard it was a one million deal. What happened to it now? &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30544" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>ASP .net treeview control 2.0</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/21/asp-net-treeview-control-2-0.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/21/asp-net-treeview-control-2-0.aspx</id><published>2009-01-21T18:19:00Z</published><updated>2009-01-21T18:19:00Z</updated><content type="html">&lt;p&gt;I&amp;nbsp;am a lazy&amp;nbsp;googler, or, Google makes me lazy. &lt;/p&gt;
&lt;p&gt;For example, recently I wanted to implement a treeview. Habitually I started to goole, which landed me right in an article in Code project. Unfortunately Google sure can rank popularity, however, it cannot pick the real gold. So the article leads me through a long archaic progress of downloading a suite of asp .net 1.0 web controls, including treeview, tab, multipage.&lt;/p&gt;
&lt;p&gt;While&amp;nbsp;trudging along,&amp;nbsp;my brain&amp;nbsp;finally managed to&amp;nbsp;remind me of the asp .net 2.0 treeview I have used more than a few times: &amp;nbsp;stop, stop.&lt;/p&gt;
&lt;p&gt;Indeed while google does not know anything about the newest development in asp .net, I should know better. The asp .net 2.0 treeview control answers all of my needs, and the little quick start tutorial on treeview (http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/navigation/treeview.aspx)&amp;nbsp; states it better:&lt;/p&gt;
&lt;p&gt;&amp;quot;It supports a variety of programming models, from statically-defined trees, to dynamically constructed trees, to databound trees. The TreeView&amp;#39;s rendering is fully customizable, allowing for a wide-range of look-and-feels for the control. The TreeView supports both postback-style events and simple hyperlink navigation, as well as a unique event handling model that allows data to be retrieved directly from a client without requiring a server postback. It also supports rendering on a variety of browsers, and can take advantage of up-level capabilities, such as client-script on later desktop browser versions.&amp;quot;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30509" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Twitter News, Yahoo News, Tweet news</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/17/twitter-news-yahoo-news-tweet-news.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/17/twitter-news-yahoo-news-tweet-news.aspx</id><published>2009-01-17T14:29:00Z</published><updated>2009-01-17T14:29:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/twitter-bird.jpg"&gt;&lt;img border="0" width="182" src="http://dotnetslackers.com/Community/blogs/xun/twitter-bird.jpg" height="173" style="float:left;margin:5px;border:black 1px solid;" alt="" /&gt;&lt;/a&gt;Wall-street&amp;nbsp;is&amp;nbsp;crashing,&amp;nbsp;main-street is suffering, however, the&amp;nbsp;web-street is&amp;nbsp;forever booming.&lt;/p&gt;
&lt;p&gt;There&amp;nbsp;are cool exciting applications sprung up everyday. For example, Twitter-Yahoo news mash-up.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Very old-fashioned people read newspapers, less old fashioned read google aggregated news, liberals / gossip seekers read huffington posts, the real news geeks, they turn to twitter for the newest, most breaking news&amp;nbsp;of the newest news. &lt;/p&gt;
&lt;p&gt;However, with timing, sometimes twitter news would be lacking in substance and depth. For example, the lastest Mumbai attack, users were frustrated to get the complete coverage and details, more details. &lt;/p&gt;
&lt;p&gt;So the newest web tech breakthrough, Yahoo-Twitter mash-up. &lt;/p&gt;
&lt;p&gt;&amp;quot;TweetNews mashup, combining the real-time search Yahoo&amp;rsquo;s BOSS tools with the freshness of Twitter. As an added bonus each story listed in TweetNews&amp;rsquo; results also shows the relevant tweets, which themselves often have additional links. A quick search this morning for &amp;quot;flight 1549&amp;quot; yielded seven unique links from just the top result.&amp;quot;&lt;/p&gt;
&lt;p&gt;And the real web tech triumph, the developer Singh was able to create it with less than one hundred lines of code.&lt;/p&gt;
&lt;p&gt;Wow, I wish I could be that good.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2009%2f01%2f17%2ftwitter-news-yahoo-news-tweet-news.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2009%2f01%2f17%2ftwitter-news-yahoo-news-tweet-news.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30485" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Dynamic ADC controls, master-child nested ADC controls</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/14/dynamic-adc-controls-master-child-nested-adc-controls.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/14/dynamic-adc-controls-master-child-nested-adc-controls.aspx</id><published>2009-01-14T12:50:00Z</published><updated>2009-01-14T12:50:00Z</updated><content type="html">&lt;p&gt;The AJAX Data Controls (ADC) created by &lt;a href="http://www.dotnetslackers.com"&gt;www.dotnetslackers.com&lt;/a&gt; are a set of server controls using ASP .net AJAX and JavaScript library, it closely mirrors the functionalities of the pure server side ASP .net data controls such as gridview, datalist and repeater.&lt;/p&gt;
&lt;p&gt;To create a&amp;nbsp;ASP .net&amp;nbsp;server control&amp;nbsp;dynamically, we need to do so on the server side, in the code behind of page_init method. For example, to create a dynamic textbox control:&lt;/p&gt;
&lt;p&gt;override protected void OnInit(EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create dynamic controls here.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use &amp;quot;using System.Web.UI.WebControls;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1 = new TextBox();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1.ID = &amp;quot;TextBox1&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1.Style[&amp;quot;Position&amp;quot;] = &amp;quot;Absolute&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1.Style[&amp;quot;Top&amp;quot;] = &amp;quot;25px&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1.Style[&amp;quot;Left&amp;quot;] = &amp;quot;100px&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Form1.Controls.Add(TextBox1);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox2 = new TextBox();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox2.ID = &amp;quot;TextBox2&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox2.Style[&amp;quot;Position&amp;quot;] = &amp;quot;Absolute&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox2.Style[&amp;quot;Top&amp;quot;] = &amp;quot;60px&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox2.Style[&amp;quot;Left&amp;quot;] = &amp;quot;100px&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Form1.Controls.Add(TextBox2);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.TextBox1.TextChanged += new System.EventHandler(this.TextBox_TextChanged);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.TextBox2.TextChanged += new System.EventHandler(this.TextBox_TextChanged);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // CODEGEN: This call is required by the ASP.NET Web Form Designer.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.OnInit(e);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Recently I discovered that It is possible to create dynamic ADC controls too, however on the client side, using the following syntax:&lt;/p&gt;
&lt;ol class="dp-c"&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;$create(controlName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color:#008000;"&gt;//&amp;nbsp;class &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color:#008000;"&gt;//&amp;nbsp;properties &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color:#008000;"&gt;//&amp;nbsp;events &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color:#008000;"&gt;//&amp;nbsp;references &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;&lt;span style="color:#008000;"&gt;//&amp;nbsp;associated&amp;nbsp;element&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example, to create a repeater dynamically,&lt;/p&gt;
&lt;p&gt;&lt;em&gt;$create(AjaxDataControls.Repeater, {&amp;#39;itemTemplate&amp;#39;: &amp;#39;&amp;lt;li&amp;gt;&amp;lt;span id=\&amp;quot;spnProductName\&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&amp;#39;}, {&amp;#39;itemDataBound&amp;#39;: onChildItemDataBound}, null, ulProducts);&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In life, relationship is everything, parallel, hierarchical. Sometimes in data representation, we need to dynamically reflect data hierarchy too. &lt;/p&gt;
&lt;p&gt;With asp .net, we can define the nested relationship among datatables in a dataset, then in a web form, we can set the relationship between a gridview and datalist as parent-child. &lt;/p&gt;
&lt;p&gt;With ADC controls, is it possible to implement nested structures between two controls?&lt;/p&gt;
&lt;p&gt;It turns out, Yes (this is my one of my&amp;nbsp;recent discoveries). It turns out, it is pretty easy too. &lt;/p&gt;
&lt;p&gt;The secret lies in the capacity of creating dynamic controls in the RowDataBoundEvent event of each parent row/item. The following is a dummy sample of nested gridview. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Site.master&amp;quot; Title=&amp;quot;GridView Basic&amp;quot; %&amp;gt;&lt;br /&gt;&amp;lt;asp:Content ID=&amp;quot;Content1&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;Server&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h3&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Supplier Information&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AjaxData:GridView ID=&amp;quot;GridView1&amp;quot; runat=&amp;quot;server&amp;quot; CssClass=&amp;quot;DataWebControlStyle&amp;quot; CellSpacing=&amp;quot;0&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CellPadding=&amp;quot;3&amp;quot; RowDataBoundEvent=&amp;quot;RowDataBound&amp;quot; DataKeyName=&amp;quot;ID&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AlternatingRowStyle CssClass=&amp;quot;AlternatingRowStyle&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RowStyle CssClass=&amp;quot;RowStyle&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HeaderStyle CssClass=&amp;quot;HeaderStyle&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Columns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AjaxData:GridViewBoundColumn DataField=&amp;quot;Company&amp;quot; HeaderText=&amp;quot;Company&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/AjaxData:GridViewBoundColumn&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AjaxData:GridViewTemplateColumn&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemTemplate&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a id=&amp;quot;lnk&amp;quot; &amp;gt;show this&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table id=&amp;quot;ulProducts&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/AjaxData:GridViewTemplateColumn&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Columns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EmptyDataTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; There is no records available.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EmptyDataTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EmptyDataRowStyle HorizontalAlign=&amp;quot;Center&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/AjaxData:GridView&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var rIndex;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function RowDataBound(sender, e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var row = e.get_row(); //.get_rowIndex()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (row.get_isDataRowType()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rIndex = row.get_rowIndex();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ulProducts = row.findControl(&amp;#39;ulProducts&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ulProducts) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var childRepeaterID = ulProducts.id;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(childRepeaterID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var childRepeater = $find(childRepeaterID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (childRepeater) {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //There is a previous instance so we need to remove it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sys.Application.removeComponent(childRepeater);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; childRepeater = $create(AjaxDataControls.GridView,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { }, { },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null, ulProducts);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var data = new Array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[0] = { Id: 1, Name: &amp;quot;Sonu Kapoor&amp;quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[1] = { Id: 2, Name: &amp;quot;Xun Ding&amp;quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[2] = { Id: 3, Name: &amp;quot;Gabriel&amp;quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[3] = { Id: 3, Name: &amp;quot;Onur&amp;quot; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; childRepeater.set_dataSource(data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; childRepeater.dataBind();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var id = GridView1.get_dataKeys()[rIndex];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = { tablename: ulProducts };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var callback = Function.createCallback(showNested, context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; alert(rIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var lnk = row.findControl(&amp;#39;lnk&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (lnk) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(&amp;quot;agag&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $addHandler(lnk, &amp;quot;click&amp;quot;, callback);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onChildItemDataBound(sender, e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function showNested(evt, context) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var table = context.tablename;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (table.style.display == &amp;quot;none&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function pageLoad(sender, e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pager1.set_recordCount(100);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataService.GetAllSupplier(onLoadSuccess);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onLoadSuccess(result) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.set_dataSource(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.dataBind();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffccff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30465" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>ItemCommandEvent of ADC Repeater Control</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/13/itemcommandevent-of-adc-repeater-control.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/13/itemcommandevent-of-adc-repeater-control.aspx</id><published>2009-01-13T12:38:00Z</published><updated>2009-01-13T12:38:00Z</updated><content type="html">&lt;p&gt;The suite of AJAX Data Controls have three major&amp;nbsp;controls: Gridview, DataList, Repeater,&amp;nbsp;in&amp;nbsp;a progression of more flexibilities yet a bit less of in-built functionalities. In the code downloaded from &lt;a href="http://www.dotnetslackers.com"&gt;www.dotnetslackers.com&lt;/a&gt;,&amp;nbsp;&amp;nbsp;there are many samples&amp;nbsp;given&amp;nbsp;for Gridview,&amp;nbsp;though not nearly as many for the Repeater. &lt;/p&gt;
&lt;p&gt;Makes sense, for Repeater gives you the wildest space to define&amp;nbsp;your own data template,&amp;nbsp;which means, you have to do your own plumbing. &lt;/p&gt;
&lt;p&gt;For example, how does the commandEvent of ADC repeater work?&lt;/p&gt;
&lt;p&gt;It took me a while to work out an dummy sample.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Site.master&amp;quot; Title=&amp;quot;Repeater Render Bullet&amp;quot; %&amp;gt;&lt;br /&gt;&amp;lt;asp:Content ID=&amp;quot;Content1&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; Runat=&amp;quot;Server&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h4&amp;gt;Categories&amp;lt;/h4&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AjaxData:Repeater ID=&amp;quot;Repeater1&amp;quot; runat=&amp;quot;server&amp;quot; ItemDataBoundEvent=&amp;quot;onItemDataBound&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RenderAs=&amp;quot;Ul&amp;quot; ItemCommandEvent=&amp;quot;onItemCommad&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;li&amp;gt;&amp;lt;input button=&amp;quot;View&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;spnName&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&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;/AjaxData:Repeater&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function pageLoad(sender, e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataService.GetAllCategory(onLoadSuccess);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onLoadSuccess(result)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var repeater = Repeater1;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; repeater.set_dataSource(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; repeater.dataBind();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onItemCommand(sender, e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var item = e.get_item();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (item.get_isDataItemType()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(e.commandName ==&amp;quot;View&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(&amp;#39;You clicked me&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onItemDataBound(sender, e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var item = e.get_item();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (item.get_isDataItemType())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var category = item.get_dataItem();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var spnName = item.findControl(&amp;#39;spnName&amp;#39;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setText(spnName, category.Name);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function setText(element, text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (typeof element.textContent != &amp;#39;undefined&amp;#39;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; element.textContent = text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (typeof element.innerText != &amp;#39;undefined&amp;#39;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; element.innerText = text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30446" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Of course .NET is deep</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/01/of-course-net-is-deep.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2009/01/01/of-course-net-is-deep.aspx</id><published>2008-12-31T21:25:00Z</published><updated>2008-12-31T21:25:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/DotNetPhpCartoon01_3.png"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/DotNetPhpCartoon01_3.png" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Of course, this is not my original. &lt;/p&gt;
&lt;p&gt;I stole it from &lt;a href="http://codeclimber.net.nz/archive/2008/08/23/.net-vs-php-in-the-enterprise-comics-strip.aspx"&gt;http://codeclimber.net.nz/archive/2008/08/23/.net-vs-php-in-the-enterprise-comics-strip.aspx&lt;/a&gt;. Cannot help it.&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30366" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>New Year's Resolution</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/12/31/new-year-s-resolution.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/12/31/new-year-s-resolution.aspx</id><published>2008-12-31T17:40:00Z</published><updated>2008-12-31T17:40:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/ist2_3898245-changes-freeway-exit-sign.jpg"&gt;&lt;img border="0" src="http://dotnetslackers.com/Community/blogs/xun/ist2_3898245-changes-freeway-exit-sign.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;For the past two months, I gave myself a long break. Two reasons, a plate full of trivial and not-so-trivial projects and tasks, then, lazy in nature, I let every free minute go out of my hands.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Now the year of 2008 is gone, almost. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Time to take a deep breath and make a list of new year&amp;#39;s wishes and resolutions. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;All of them vague.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Reading&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;First of all, I need to step up my reading. Not just randomly articles, code samples turned up by Google, or even those kicked on the Dotnetkicks. But also the list of blogs, such as Rick Strahl&amp;#39;s blog, and Esconia, and Coding Horror and The secret Life of a spaghetti coder. Also books. As much I want to go paperless, books still provide me anchor and structure. In the year of 2008, the best programming book I read is &amp;quot;ASP. NET 2.0 website programming Problem - Design - Solution&amp;quot;. This year, I wish I could read more.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Writing&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Blog&amp;nbsp;and articles. JQuery, MVC, Silverlight, .NET 3.5 (Is 4.0 on the horizon?) Coding experiences, ah-ha moments, problems encountered and solved. Writing to me is a perfect way of learning. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Coding&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;This goes without saying. However it would be best if I could jump out of my comfort zone and take a look the new, the powerful and the hot. I am always dread downloading/installing new software and playing with it. Still&amp;nbsp;half-baked (or little-baked) in MVC, Silverlight,&amp;nbsp;JQuery, still new to the .net 3.5, WCFs. I&amp;nbsp;am pretty clueless about Ruby, LINQ.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Even with my&amp;nbsp;coding,&amp;nbsp;I am&amp;nbsp;bad at testing and&amp;nbsp;commenting and commenting well.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Well, hope in the new year, I do better&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=30363" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Visual Studio 2010 and ASP .NET 4.0</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/27/visual-studio-2010-and-asp-net-4-0.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/27/visual-studio-2010-and-asp-net-4-0.aspx</id><published>2008-10-27T16:16:00Z</published><updated>2008-10-27T16:16:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;When you are a new kid, you cannot wait to grow up. However, when you are older then older, every passing year makes you feel the loss and the tick of the clock. &lt;/p&gt;
&lt;p&gt;That is how I also feel about the forward-and-fast moving versions of software and programming models, frameworks and technologies.&lt;/p&gt;
&lt;p&gt;Here it comes: Visual Studio 2010. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2848"&gt;http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2848&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here it comes again: asp .net 4.0. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14924"&gt;http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14924&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=29658" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>Other people's work</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/24/other-people-s-work.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/24/other-people-s-work.aspx</id><published>2008-10-24T18:50:00Z</published><updated>2008-10-24T18:50:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;Shame to say, there are so many cool functionalities I have never&amp;nbsp;coded nor used in my websites, such as programmatically generate screenshots, generate animated gif using a sequence of screenshot, create captcha, in-progress animated image. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Fortunately, there are many pieces of working code up for&amp;nbsp;taking on the web.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;ASP .NET&amp;nbsp;Captcha server control :&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx"&gt;http://www.codeproject.com/KB/custom-controls/CaptchaControl.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Very popular (meaning it has been widely tested)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Screenshot of Webpage with ASP.NET&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.codegod.de/WebAppCodeGod/Screenshot-of-Webpage-with-ASP-NET-AID398.aspx"&gt;http://www.codegod.de/WebAppCodeGod/Screenshot-of-Webpage-with-ASP-NET-AID398.aspx&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Make use of &lt;em&gt;IECapt.exe&lt;/em&gt; to capture screenshot of a web page given by an URL&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Create an animated GIF using .Net (C#)&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;This seems to be a hard one. Most animated GIFs are created by using offline imaging software, however, I sometimes I really want to streamline this process, especially when I want to demo a running web page. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.codeproject.com/KB/GDI-plus/NGif.aspx"&gt;http://www.codeproject.com/KB/GDI-plus/NGif.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;This one seems to work, though it has only given&amp;nbsp;only minimal explanations. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Animated &amp;quot;Wait&amp;quot; image and long-running progress&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;There are so many progress-bar type of applications, however, this one is breathtakingly simple and ingenious.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.eggheadcafe.com/tutorials/aspnet/87272b03-adec-45e1-b157-b21da3714dfd/aspnet-animated-gifs-and.aspx"&gt;http://www.eggheadcafe.com/tutorials/aspnet/87272b03-adec-45e1-b157-b21da3714dfd/aspnet-animated-gifs-and.aspx&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=29635" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>AJAX: JavaScript, or ASP .net AJAX or JQuery</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/21/ajax-javascript-or-asp-net-ajax-or-jquery.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/21/ajax-javascript-or-asp-net-ajax-or-jquery.aspx</id><published>2008-10-21T19:10:00Z</published><updated>2008-10-21T19:10:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;There are hundreds of AJAX frameworks and libraries. And the number is still growing (Face it, because the web, with the demand of rich data and fast, smooth user experience, is AJAXified overnight).&lt;/p&gt;
&lt;div&gt;&amp;nbsp;However, I only know three: JavaScript AJAX, JQuery, and ASP.net AJAX.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;JavaScript AJAX uses the very raw XMLHttpRequest. It&amp;#39;s quite wordy, and needs to be always careful with different browser traps. That is, you always have to detect if XMLHttpRequest is supported, as such:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var request;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (window.XMLHttpRequest())&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request = new XMLHttpRequest();&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(window.ActiveXObject)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request = new ActiveXObject(&amp;quot;Msxml2.XMLHTTP&amp;quot;)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; else&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // throw an error here&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;ASP .net ajax&amp;nbsp;is the Microsoft /asp .net team&amp;#39;s approach to AJAX. It uses a ScriptManager and carries with it the quite bulk ASP .net ajax library. In the beginning, UpdatePanel, a partial postback web page refreshing model, plays a big role in ASP .net ajax, however, because of the heavy toll it exerts on bandwidth and performance, most people have abandoned its usage. ASP .net AJAX makes calling web service easy, and you get to use many of nice features in asp .net, such as membership, profile system. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;JQuery has a number of functions that made AJAX easy. And as it is the case with JQuery, it is lightweighted and succinct. The list of functions are:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;$.load (url, parameters, callback) : to load&amp;nbsp;server response data&amp;nbsp;to an element&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;$.get (url, parameters, callback): GET request with parameters&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;$.post (url, parameters, callback): POST request with paramenters&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;$.getJSON(url, parameters, callback): send a get request, response is interpreted as a JSON string&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;$.ajax (options) : send AJAX request with a number of options, including url, type, dataType, timeout, global, contentType, etc.&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=29572" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author></entry><entry><title>JQuery, the very very basics - Lesson 6</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/21/jquery-the-very-very-basics-lesson-6.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/21/jquery-the-very-very-basics-lesson-6.aspx</id><published>2008-10-20T21:12:00Z</published><updated>2008-10-20T21:12:00Z</updated><content type="html">&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-5.aspx"&gt;JQuery, the very very basics - Lesson 5 &lt;/a&gt;(Special Effects)&lt;a href="http://dotnetslackers.com/Community/blogs/xun/Disorders4.gif"&gt;&lt;img border="0" width="175" src="http://dotnetslackers.com/Community/blogs/xun/Disorders4.gif" height="270" style="border:1px solid black;margin-left:5px;margin-right:5px;float:right;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-4.aspx"&gt;JQuery, the very very basics - Lesson 4&lt;/a&gt;&amp;nbsp;(Event handling)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-3.aspx"&gt;JQuery, the very very basics - Lesson 3&lt;/a&gt; (Elements manipulation)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-2.aspx"&gt;JQuery, the very very basics - Lesson 2&lt;/a&gt; (Elements styling)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-1.aspx"&gt;JQuery, the very very basics - Lesson 1&lt;/a&gt;&amp;nbsp;(The magic $ and selectors)&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;On with my JQuery learning series.&amp;nbsp; &lt;/div&gt;
&lt;p&gt;For every programming language, there is invariably string manipulation and array fiddling. No exception with JQuery. Being unobtrusive in principal and&amp;nbsp;complimentary in&amp;nbsp;nature, it does not try to replace&amp;nbsp;the existing bulk of JavaScript functions with its own, rather, it simply adds some of the most sorely missed functions. &amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;Trimming a string: $.trim(value)&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;In dealing with strings, JavaScript already has quite a comprehensive set of functions, such as &lt;span style="background-color:#ff9966;"&gt;split, substr, charAt&lt;/span&gt; (see references at &lt;a target="_blank" href="http://www.w3schools.com/jsref/jsref_obj_string.asp"&gt;http://www.w3schools.com/jsref/jsref_obj_string.asp&lt;/a&gt;), however, for&amp;nbsp;some&amp;nbsp;mysterious reasons, it does not have a trim function&amp;nbsp;for ridding of leading and trailing white space. Smart and generous people have contributed to the web various versions of their trim functions. Such as:&lt;/div&gt;
&lt;blockquote style="margin-right:0px;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; trimmed = str.replace(/^\s+|\s+$/g, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;) ; &lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;It works perfectly. However, how about simply call trim()&amp;nbsp;function provided by JQuery? The syntax is $.trim(value)&amp;nbsp;&lt;/div&gt;
&lt;blockquote style="margin-right:0px;"&gt;
&lt;div&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; trimmed &lt;/span&gt;= $.trim(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot; this really needs to be trimmed &amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Clean and plain English, right?&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;Array functions: &lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;$.each (container, &lt;em&gt;callback&lt;/em&gt;)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;In JQery,&amp;nbsp;in addition&amp;nbsp;to the conventional JavaScript array&amp;nbsp;(array of strings,&amp;nbsp;numerics, elements), there is also specifically&amp;nbsp;object array in the form of key-value pairs. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;The former array is coded as:&lt;span style="font-size:x-small;color:#0000ff;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote style="margin-right:0px;"&gt;
&lt;div&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; arr = [ &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;four&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;five&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; ];&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;The later (each pair seperated by a colon &lt;strong&gt;:&lt;/strong&gt;)&lt;strong&gt; &lt;/strong&gt;:&lt;/div&gt;
&lt;blockquote style="margin-right:0px;"&gt;&lt;span style="font-size:x-small;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; obj = { item1: &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;one&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, item2: &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;two&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt; ,item3: &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;three&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;, item4: &lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;quot;four&amp;quot;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;};&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;It has always been easy to loop through an JavaScript array. However, it can be easier&amp;nbsp;with&amp;nbsp;the JQuery&amp;nbsp;$.each function. The syntax is
&lt;div&gt;&lt;span style="background-color:#ff9966;"&gt;$.each (container, &lt;em&gt;callback&lt;/em&gt;).&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt; &lt;/span&gt;The callback function&amp;nbsp;receives&amp;nbsp;two arguments with the passing of each element:&amp;nbsp;with&amp;nbsp;&lt;span style="background-color:#ff9966;"&gt;[]&lt;/span&gt; type (traditional JavaScript) array, index and value; with &lt;span style="background-color:#ff9966;"&gt;{}&lt;/span&gt; type (array of objects with properties), key and value.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;So&amp;nbsp;we can access JQuery array elements as such (forgive me for using so many alerts):&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code1.gif"&gt;&lt;img border="0" width="574" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code1.gif" height="192" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;$.grep (array, callback, &lt;em&gt;invert&lt;/em&gt;)&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;JQuery offers a&amp;nbsp;&lt;span style="background-color:#ff9966;"&gt;$.grep()&lt;/span&gt; function to return an array of elements that matches a&amp;nbsp;certain condition.&amp;nbsp;The callback function is passed two parameters: the current value and its index. For example,&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code2.gif"&gt;&lt;img border="0" width="664" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code2.gif" height="156" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;$.map (array, callback)&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;One convenient function to transform all of the elements in an array in one shot. Change a string array into a numeric array? Yes; Change the numeric array back to a string array? Yes; Add a 10 to every number in an array? Yes.&amp;nbsp;Just call the &lt;span style="background-color:#ff9966;"&gt;$.map&lt;/span&gt; function.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;For example:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code3.gif"&gt;&lt;img border="0" width="378" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code3.gif" height="82" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Other extremely useful JQuery array functions&lt;/strong&gt; are:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;span style="background-color:#ff9966;"&gt;$.inArray(value, array),&lt;/span&gt;&lt;/strong&gt; returns the position of the first occurance of the element by a specified value. As in: &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code4.gif"&gt;&lt;img border="0" width="518" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code4.gif" height="38" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="background-color:#ff9966;"&gt;&lt;strong&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code4.gif"&gt;&lt;/a&gt;$.unique(array)&lt;/strong&gt;&lt;/span&gt;, returns a deduplicated array. As in: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code5.gif"&gt;&lt;img border="0" width="499" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code5.gif" height="36" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code4.gif"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style="background-color:#ff9966;"&gt;&lt;strong&gt;$.makeArray(object)&lt;/strong&gt;&lt;/span&gt;, create an array out of a selected elements. As in:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code7.gif"&gt;&lt;img border="0" width="376" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code7.gif" height="36" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="background-color:#ff9966;"&gt;&lt;strong&gt;$.extend(targe&lt;/strong&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code5.gif"&gt;&lt;/a&gt;&lt;strong&gt;t, source1, source2, ... sourceN)&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;,&lt;/strong&gt; extends the&amp;nbsp;target object with the&amp;nbsp;properties of the sources. For example:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="font-size:x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery6_code6.gif"&gt;&lt;img border="0" width="457" src="http://dotnetslackers.com/Community/blogs/xun/jquery6_code6.gif" height="120" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2008%2f10%2f21%2fjquery-the-very-very-basics-lesson-6.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2008%2f10%2f21%2fjquery-the-very-very-basics-lesson-6.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=29552" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author><category term="JQuery" scheme="http://dotnetslackers.com/Community/blogs/xun/archive/tags/JQuery/default.aspx" /></entry><entry><title>Good links: ASP .NET and JQuery</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/15/good-links-asp-net-and-jquery.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/15/good-links-asp-net-and-jquery.aspx</id><published>2008-10-15T16:49:00Z</published><updated>2008-10-15T16:49:00Z</updated><content type="html">&lt;p&gt;Found a great bunch of links about&amp;nbsp;using JQuery&amp;nbsp;with asp .net&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/"&gt;&lt;span style="color:#0066cc;"&gt;Using jQuery to directly call ASP.NET AJAX page methods&lt;/span&gt;&lt;/a&gt; &lt;a target="_blank" href="http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/"&gt;&lt;span style="text-decoration:none;text-underline:none;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://encosia.com/"&gt;encosia.com&lt;/a&gt; &amp;mdash;&lt;/span&gt; An example of how to use jQuery to call an &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; AJAX page method, without using a ScriptManager. &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/"&gt;&lt;span style="color:#0066cc;"&gt;Using jQuery to consume ASP.NET JSON Web Services&lt;/span&gt;&lt;/a&gt; &lt;a target="_blank" href="http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/"&gt;&lt;span style="text-decoration:none;text-underline:none;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://encosia.com/"&gt;encosia.com&lt;/a&gt; &amp;mdash;&lt;/span&gt; An overview of consuming &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; web services that are JSON serialized by the &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; AJAX extensions, including a specific example of using jQuery to do so.&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://www.dexign.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx"&gt;&lt;span style="color:#0066cc;"&gt;Using jQuery To Call ASP.NET Page Methods and Web Services&lt;/span&gt;&lt;/a&gt; &lt;a target="_blank" href="http://www.dexign.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx"&gt;&lt;span style="text-decoration:none;text-underline:none;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://dexign.net/"&gt;dexign.net&lt;/a&gt; &amp;mdash;&lt;/span&gt; Seems like more and more &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; devs are using jQuery. There are similar things on DNK but none that actually do provide code that uses jQuery to callback.&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://ferry.ferryandtheria.com/?p=3"&gt;&lt;span style="color:#0066cc;"&gt;Integrating jQuery with ASP.NET&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;An alternative AJAX solution to use jQuery instead of &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; AJAX&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://codeclimber.net.nz/archive/2008/05/14/How-to-manage-ASP.NET-validation-from-Javascript-with-jQuery.aspx"&gt;&lt;span style="color:#0066cc;"&gt;How to manage ASP.NET validation from Javascript with jQuery&lt;/span&gt;&lt;/a&gt; &lt;a target="_blank" href="http://codeclimber.net.nz/archive/2008/05/14/How-to-manage-ASP.NET-validation-from-Javascript-with-jQuery.aspx"&gt;&lt;span style="text-decoration:none;text-underline:none;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://codeclimber.net.nz/"&gt;codeclimber.net.nz&lt;/a&gt; &amp;mdash;&lt;/span&gt; This article outlines how to enable and disable &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; client side validation from Javascript using jQuery&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://www.chrisvandesteeg.nl/2007/12/19/ajax-and-json-for-aspnet-mvc-with-jquery/"&gt;&lt;span style="color:#0066cc;"&gt;Ajax and json for ASP.NET MVC with jQuery&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://chrisvandesteeg.nl/"&gt;chrisvandesteeg.nl&lt;/a&gt; &amp;mdash;&lt;/span&gt; an example project that uses the jQuery library to create an ajax enabled &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; MVC website. Generally what this project does: * Load views through ajax (with back-button support) * Do ajax-style form-posts and retrieve only the messages, errors and updated content * Do json form-posts and retrieve the errors an &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/"&gt;&lt;span style="color:#0066cc;"&gt;3 mistakes to avoid when using jQuery with ASP.NET AJAX&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://encosia.com/"&gt;encosia.com&lt;/a&gt; &amp;mdash;&lt;/span&gt; Three common problems that I&amp;#39;ve seen when using jQuery with &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; AJAX, their underlying causes, and simple solutions to them.&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://weblogs.asp.net/bradvincent/archive/2008/04/28/better-jquery-intellisense-in-vs2008.aspx"&gt;&lt;span style="color:#0066cc;"&gt;(Better) JQuery IntelliSense in VS2008&lt;/span&gt;&lt;/a&gt; &lt;a target="_blank" href="http://weblogs.asp.net/bradvincent/archive/2008/04/28/better-jquery-intellisense-in-vs2008.aspx"&gt;&lt;span style="text-decoration:none;text-underline:none;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://weblogs.asp.net/"&gt;weblogs.asp.net&lt;/a&gt; &amp;mdash;&lt;/span&gt; If you are like me and you&amp;#39;ve read the many articles about how to get other javascript libraries to work in VS2008, you&amp;#39;ll know that all you really need to do is install the visual studio HOTFIX. &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;a target="_blank" href="http://www.west-wind.com/weblog/posts/300754.aspx"&gt;&lt;span style="color:#0066cc;"&gt;Client Side Templating with jQuery&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="color:#808080;"&gt;&lt;a target="_blank" href="http://west-wind.com/"&gt;west-wind.com&lt;/a&gt; &amp;mdash;&lt;/span&gt; When building AJAX applications there&amp;#39;s often the requirement to choose between client and server side rendering. Server side &lt;a target="_blank" href="http://asp.net/"&gt;ASP.NET&lt;/a&gt; controls provide rich templating, but updating those controls on the client can be difficult. Or is it? Here&amp;#39;s one approach using jQuery and HTML templates in markup script to dynamically create complex layout on the client without writing reams of script code. &lt;/p&gt;
&lt;p style="margin:0in 0in 0pt;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2008%2f10%2f15%2fgood-links-asp-net-and-jquery.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2008%2f10%2f15%2fgood-links-asp-net-and-jquery.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=29503" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author><category term="asp .net ajax" scheme="http://dotnetslackers.com/Community/blogs/xun/archive/tags/asp+.net+ajax/default.aspx" /><category term="JQuery" scheme="http://dotnetslackers.com/Community/blogs/xun/archive/tags/JQuery/default.aspx" /></entry><entry><title>JQuery, the very very basics - Lesson 5</title><link rel="alternate" type="text/html" href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/13/jquery-the-very-very-basics-lesson-5.aspx" /><id>http://dotnetslackers.com/Community/blogs/xun/archive/2008/10/13/jquery-the-very-very-basics-lesson-5.aspx</id><published>2008-10-13T17:17:00Z</published><updated>2008-10-13T17:17:00Z</updated><content type="html">&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/aman352l.gif"&gt;&lt;/a&gt;&lt;a&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;On with our journey of learning JQuery. Thanks to all of you who has stayed and&amp;nbsp;cheered&amp;nbsp;me and made me&amp;nbsp;go on,&amp;nbsp;against&amp;nbsp;my own lazy nature. So far, we have slowly walked through the bunch of commands by which we select, dress up, manipulate chains of elements and make them action bound.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-4.aspx"&gt;JQuery, the very very basics - Lesson 4&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/aman352l.gif"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-3.aspx"&gt;JQuery, the very very basics - Lesson 3&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-2.aspx"&gt;JQuery, the very very basics - Lesson 2&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/archive/2008/09/26/jquery-the-very-very-basics-lesson-1.aspx"&gt;JQuery, the very very basics - Lesson 1&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;Now, let&amp;#39;s look at the tiny set of commands for special-effects: show / hide with a speed, slide up / slide down, fade in and out. After all, we are human, insatiable for animations and wow factors. (However, please do not overplay your hand. :))&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/aman352l.gif"&gt;&lt;img border="0" width="372" src="http://dotnetslackers.com/Community/blogs/xun/aman352l.gif" height="332" style="border:1px solid black;vertical-align:middle;margin:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Show / Hide, Slower and slower, then faster and faster&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Show / Hide a layer is&amp;nbsp;such a&amp;nbsp;common-place practice, yet before JQuery, I always have to&amp;nbsp;be a little verbose (and most surely I have to do a quick search and grab some code, as in this case the vicitim of my theft&amp;nbsp;is: &lt;a target="_blank" href="http://www.geocities.com/technofundo/tech/js/showhide.html"&gt;http://www.geocities.com/technofundo/tech/js/showhide.html&lt;/a&gt;&amp;nbsp;):&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery5_code1.gif"&gt;&lt;img border="0" width="638" src="http://dotnetslackers.com/Community/blogs/xun/jquery5_code1.gif" height="341" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;Now, with JQuery, we can just say, (yes, you guessed it),&amp;nbsp;&lt;span style="background-color:#ff9966;"&gt;show()&lt;/span&gt; to show,&lt;span style="background-color:#ff9966;"&gt; hide()&lt;/span&gt; to hide, an element or a matched set of elements:&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style="font-size:x-small;"&gt;$(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;).show();&lt;span style="font-size:x-small;"&gt;
&lt;div&gt;
&lt;p&gt;&lt;span style="font-size:x-small;"&gt;$(&lt;/span&gt;&lt;span style="font-size:x-small;color:#a31515;"&gt;&amp;#39;div&amp;#39;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:x-small;"&gt;).hide();&lt;span style="font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;Of course,&amp;nbsp;we&amp;nbsp;can also tap the good&amp;nbsp;sense of &lt;span style="background-color:#ff9966;"&gt;toggle()&lt;/span&gt; command, which can detect then reverse the state of a given element.&amp;nbsp;Is it&amp;nbsp;shown now? Yes -&amp;gt;&amp;nbsp;then hide it; No -&amp;gt;&amp;nbsp;show it.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Easy.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery5_code2.gif"&gt;&lt;img border="0" width="283" src="http://dotnetslackers.com/Community/blogs/xun/jquery5_code2.gif" height="74" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;One cool thing about this&amp;nbsp;show/hide/toggle business&amp;nbsp;is that&amp;nbsp;we can now add a speed element to really&amp;nbsp;animate the magic of appearance, disappearance and reappearance. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Speed in other languages is a rare thing, however, it is a norm in JQuery. From now on, we will&amp;nbsp;speed things up and down&amp;nbsp;often and&amp;nbsp;very much&amp;nbsp;at ease, for example, slide, fade, animate, etc.&amp;nbsp;There are three predefined speeds: slow, normal and fast.&amp;nbsp;Of course&amp;nbsp;you&amp;nbsp;can always come up with a speed in measure of milliseconds&amp;nbsp;that suits you. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;The following one line of code&amp;nbsp;slowly&amp;nbsp;alternates&amp;nbsp;a layer&amp;#39;s showing and hiding. &amp;nbsp;&lt;/div&gt;
&lt;p&gt;$(&amp;#39;div#toggle&amp;#39;).toggle(&lt;span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;#39;slow&amp;#39;&lt;/span&gt;&amp;quot;&amp;gt;);&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Slide up and down, fade in and out&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;Sliding up and down a layer used to be a challenge. Not anymore. Now we can just use these&amp;nbsp;tell-it-all commands: &lt;span style="background-color:#ff9966;"&gt;slideUp(speed, &lt;em&gt;callback&lt;/em&gt;)&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;,&lt;/span&gt; &lt;span style="background-color:#ff9966;"&gt;slideDown(speed, &lt;em&gt;callback&lt;/em&gt;)&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;.&lt;/span&gt; Of course, do not forget toggle. With sliding, the toggle command is &lt;span style="background-color:#ff9966;"&gt;slideToggle(speed, &lt;em&gt;callback&lt;/em&gt;)&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;.&lt;/span&gt;&amp;nbsp;
&lt;p&gt;So is the case with fading in and out. The commands for&amp;nbsp;fading&amp;nbsp;are: &lt;span style="background-color:#ff9966;"&gt;fadeIn(speed, &lt;em&gt;callback&lt;/em&gt;)&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;,&lt;/span&gt; &lt;span style="background-color:#ff9966;"&gt;fadeOut(speed, &lt;em&gt;callback&lt;/em&gt;)&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;An example:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnetslackers.com/Community/blogs/xun/jquery5_code3.gif"&gt;&lt;img border="0" width="560" src="http://dotnetslackers.com/Community/blogs/xun/jquery5_code3.gif" height="188" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All right, see you next week (I wish I could give you a Sarah Palin wink :).&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2008%2f10%2f13%2fjquery-the-very-very-basics-lesson-5.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdotnetslackers.com%2fCommunity%2fblogs%2fxun%2farchive%2f2008%2f10%2f13%2fjquery-the-very-very-basics-lesson-5.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=29484" width="1" height="1"&gt;</content><author><name>xxxd</name><uri>http://dotnetslackers.com/Community/members/xxxd.aspx</uri></author><category term="JQuery" scheme="http://dotnetslackers.com/Community/blogs/xun/archive/tags/JQuery/default.aspx" /></entry></feed>