<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-854021761054153070</id><updated>2012-01-02T08:05:35.882-08:00</updated><category term='ite'/><title type='text'>Kurniawan's AjAx .NET</title><subtitle type='html'>This Blog is not about AJAX or .Net&lt;br&gt;
Confused ? &lt;br&gt;
Check it out yourself... &lt;br&gt;
&lt;br&gt;
It's about everything that I know and I want to write   &lt;br&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>96</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3557992789491025935</id><published>2010-08-19T00:27:00.000-07:00</published><updated>2010-08-19T00:29:46.509-07:00</updated><title type='text'>There was an error processing the request</title><content type='html'>If you get that above error.. and you have no idea what's wrong with it just put change "CustomError='Off'"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3557992789491025935?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3557992789491025935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3557992789491025935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3557992789491025935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3557992789491025935'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/08/there-was-error-processing-request.html' title='There was an error processing the request'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6544937560011597924</id><published>2010-08-16T19:51:00.000-07:00</published><updated>2010-08-16T19:54:17.202-07:00</updated><title type='text'>WebForm_... is not Defined error</title><content type='html'>If you get this error "WebForm_ is not defined error..."&lt;br /&gt;and previously you never get this problem...&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;you may install a plugin which compress the .axd file...&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;solution:&lt;br /&gt;you need to exclude them on the compression module...&lt;br /&gt;please check your .axd name.. and exclude them on your HTTP compression module&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;it needs this 2 file not to be compressed&lt;br /&gt;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6544937560011597924?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6544937560011597924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6544937560011597924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6544937560011597924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6544937560011597924'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/08/webform-is-not-defined-error.html' title='WebForm_... is not Defined error'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8084254198850731620</id><published>2010-08-01T05:13:00.000-07:00</published><updated>2010-08-01T05:16:57.168-07:00</updated><title type='text'>Protect yourself from XSS attack with new ASP 4.0 nuggets</title><content type='html'>&lt;span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;In ASP.NET 4.0, you can replace your usually habit to use &lt;span style="font-weight: bold;"&gt;&lt;%=%&gt;&lt;/span&gt; with this new nuggets &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;%: %&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This will automatically protect your applications against cross-site  script injection (XSS) and HTML injection attacks and avoid duplicate encoding.&lt;br /&gt;&lt;br /&gt;So you don't need to worry if you forget to encode your string in the aspx files. or protect it using AntiXSS.&lt;br /&gt;&lt;br /&gt;It's very usefull in combination of MVC framework 2.0&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8084254198850731620?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8084254198850731620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8084254198850731620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8084254198850731620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8084254198850731620'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/08/protect-yourself-from-xss-attack-with.html' title='Protect yourself from XSS attack with new ASP 4.0 nuggets'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4893281993806818962</id><published>2010-07-22T19:16:00.000-07:00</published><updated>2010-07-22T19:19:40.199-07:00</updated><title type='text'>IsCallBack VS IsPostback</title><content type='html'>I just looking in couple framework. and just curious what they use to bind the UI is using&lt;br /&gt;! IsCallback instead of ! IsPostback&lt;br /&gt;&lt;br /&gt;Why ?&lt;br /&gt;&lt;br /&gt;Just making summary out of this&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms178141.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms178141.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IsCallBack will be set to true if you doing a partial postback.&lt;br /&gt;&lt;br /&gt;if you checking using IsCallBack and there is no ajax call , it will not affect anything. Just similar like you don't use the checking which is doesn't improve your performance.&lt;br /&gt;&lt;br /&gt;But there should be a reason behind it, or probably they have a mistype because of Autocomplete provided by VS =p&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4893281993806818962?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4893281993806818962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4893281993806818962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4893281993806818962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4893281993806818962'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/07/iscallback-vs-ispostback.html' title='IsCallBack VS IsPostback'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7640862138802724088</id><published>2010-07-14T23:31:00.000-07:00</published><updated>2010-07-14T23:33:07.061-07:00</updated><title type='text'>Protect your apps from ClickJacking</title><content type='html'>Here an interesting video which I recently lookat.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=gxyLbpldmuU"&gt;http://www.youtube.com/watch?v=gxyLbpldmuU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To protect your apps&lt;br /&gt;&lt;br /&gt;put this code&lt;br /&gt;&lt;br /&gt;if (top != self)&lt;br /&gt;{&lt;br /&gt;   self.location.href = "http://yoursite.com";&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7640862138802724088?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7640862138802724088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7640862138802724088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7640862138802724088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7640862138802724088'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/07/protect-your-apps-from-clickjacking.html' title='Protect your apps from ClickJacking'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8183338581947302766</id><published>2010-07-12T17:24:00.000-07:00</published><updated>2010-07-13T17:47:11.216-07:00</updated><title type='text'>CSRF Attack Prevention on .NET</title><content type='html'>&lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;In Addition to Rob's AntiXSS, we also need to secure  CSRF Attack in Defence Jobs.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;Here is what I found :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;* Check this video to understand how the CSRF works  &amp;amp; How you check your site if it is secure.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;a title="http://www.securitytube.net/Discovering-CSRF-with-OWASP%27s-CSRFTester-Tool-video.aspx" href="http://www.securitytube.net/Discovering-CSRF-with-OWASP%27s-CSRFTester-Tool-video.aspx"&gt;http://www.securitytube.net/Discovering-CSRF-with-OWASP%27s-CSRFTester-Tool-video.aspx&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;* Prevention&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;    - ViewStateUserKey in  (ASP.NET)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;            If you use viewstate in ASP.NET. it is  recommended that you include &lt;strong&gt;ViewStateUserKey &lt;/strong&gt;and  &lt;strong&gt;Encript &lt;/strong&gt;them&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;               *(Include this on your base  page)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;                    protected override OnInit(EventArgs  e) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;                    {&lt;br /&gt;                              base.OnInit(e);&lt;br /&gt;                             if  (User.Identity.IsAuthenticated)&lt;br /&gt;                                 ViewStateUserKey = Session.SessionID; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;                    }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;                * Encript your viewstate in web.config  (ViewStateEncriptionMode="Always")&lt;br /&gt;                   &lt;a title="http://msdn.microsoft.com/en-us/library/aa479501.aspx" href="http://msdn.microsoft.com/en-us/library/aa479501.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa479501.aspx&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;          &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;Note:  &lt;br /&gt;            However  ViewStateUserKey this is not fully protect you from CSRF. This just to add an  addition security layer to your application.&lt;br /&gt;            &lt;a title="http://keepitlocked.net/archive/2008/05/29/viewstateuserkey-doesn-t-prevent-cross-site-request-forgery.aspx" href="http://keepitlocked.net/archive/2008/05/29/viewstateuserkey-doesn-t-prevent-cross-site-request-forgery.aspx"&gt;http://keepitlocked.net/archive/2008/05/29/viewstateuserkey-doesn-t-prevent-cross-site-request-forgery.aspx&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;* Recommended  Prevention&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;    Because ViewStateUserKey is not completely protect  you from the CSRF Attack, You need to protect your application using  &lt;strong&gt;per-request nonce to hidden form / URL&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;    There are framework which can automatically done  this.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;     * .NET CSRF GUARD &lt;/strong&gt;&lt;a title="http://www.owasp.org/index.php/.Net_CSRF_Guard" href="http://www.owasp.org/index.php/.Net_CSRF_Guard"&gt;http://www.owasp.org/index.php/.Net_CSRF_Guard&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;        &lt;strong&gt;- &lt;/strong&gt;This .NET version  unfortunately only supply protection using URL method. (Nonce token is added on  URL). This version doesn't support the hidden field method.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;    * ANTICSRF for ASP.NET (RECOMMENDED)  &lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;a title="http://idunno.org/archive/2008/12/14/announcing-anticsrf-for-asp.net.aspx" href="http://idunno.org/archive/2008/12/14/announcing-anticsrf-for-asp.net.aspx"&gt;http://idunno.org/archive/2008/12/14/announcing-anticsrf-for-asp.net.aspx&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;        This framework &lt;strong&gt;(.NET  HTTPModule)&lt;/strong&gt; will added the per-request nonce to hidden field &amp;amp;  cookies and validate it when post method or  postback triggered.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;========================================================&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Installation of ANTICSRF&lt;/strong&gt; &lt;/span&gt;&lt;a title="http://anticsrf.codeplex.com/" href="http://anticsrf.codeplex.com/"&gt;&lt;span title="http://anticsrf.codeplex.com/"  style="font-size:85%;"&gt;http://anticsrf.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;    &lt;span style="font-family:Times New Roman;"&gt;- Add  AntiCSRF.dll to Bin Folder&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;    &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;strong&gt;- Register AntiCSRF HttpModule on web  config     &lt;/strong&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;pre&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;system.web&gt;&lt;br /&gt; ....&lt;br /&gt; &lt;httpmodules&gt;&lt;br /&gt;   &lt;strong&gt;&lt;add name="AntiCSRF" type="Idunno.AntiCsrf.AntiCsrfModule, Idunno.AntiCsrf"&gt;&lt;br /&gt;&lt;/strong&gt;  &lt;/httpmodules&gt;&lt;br /&gt; ....&lt;br /&gt;&lt;/system.web&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;strong&gt;       &lt;/strong&gt;&lt;span class="798335023-13072010"&gt;&lt;strong&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;strong&gt;&lt;span style="font-family:Times New Roman;"&gt;- Configure Settings&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;pre&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;configuration&gt;&lt;br /&gt;   ....&lt;br /&gt;   &lt;configsections&gt;&lt;br /&gt;       ....&lt;br /&gt;       &lt;section name="csrfSettings" type="Idunno.AntiCsrf.Configuration.CsrfSettings, Idunno.AntiCsrf"&gt;  &lt;br /&gt;       ....&lt;br /&gt;   &lt;/configsections&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;pre&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-family:Times New Roman;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;pre&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-family:Times New Roman;"&gt;    &lt;csrfsettings cookiename="__CSRFCOOKIE" formfieldname="__CSRFTOKEN" detectionresult="Redirect" errorpage="/AntiCSRFDetected.aspx"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-family:Verdana;"&gt;   &lt;/span&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt; &lt;/span&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;- If you don't want to proptect your page,&lt;br /&gt;        you can add class attribute &lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;strong&gt;[Idunno.AntiCsrf.SuppressCsrfCheck]&lt;br /&gt;        &lt;/strong&gt;or page interface &lt;strong&gt;&lt;%@ Implements Interface="Idunno.AntiCsrf.ISuppressCsrfCheck" %&gt; &lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;==================================================================&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;h2 dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;How it works (ANTICSRF)&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;    &lt;strong&gt;*&lt;/strong&gt; &lt;strong&gt;HTTP MODULE &lt;/strong&gt;on &lt;strong&gt;PreSendRequestHeaders&lt;/strong&gt; and &lt;strong&gt;PreRequestHandlerExecute&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;        &lt;/span&gt;context.PreSendRequestHeaders += PreSendRequestHeaders;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;        &lt;/span&gt;context.PreRequestHandlerExecute += PreRequestHandlerExecute;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;  &lt;span style="font-family:Verdana;font-size:85%;"&gt; &lt;strong&gt;*&lt;/strong&gt; &lt;strong&gt;Adding pre-request nonce token&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;        -&lt;span style="font-family:Verdana;font-size:85%;"&gt; Add nonce on hidden field &lt;span style="font-family:Courier New;font-size:100%;"&gt;&lt;strong&gt;__CSRFTOKEN&lt;/strong&gt;&lt;/span&gt; and cokkie &lt;span style="font-family:Courier New;font-size:100%;"&gt;&lt;strong&gt;__CSRFCOOKIE&lt;/strong&gt;&lt;/span&gt; (configurable on settings)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;     * Validate nonce token on hidden field with cokkie&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;        &lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;- &lt;/strong&gt;It will validate the token when &lt;strong&gt;(POST Request or Postback)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;strong&gt;        &lt;span style="font-family:Verdana;font-size:85%;"&gt;- Get Request will NOT be validated unless it is Postback&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;        - &lt;span style="font-family:Verdana;font-size:85%;"&gt;It will NOT validate any &lt;span style="font-family:Times New Roman;font-size:130%;"&gt;&lt;strong&gt;SuppressCsrfCheck &lt;/strong&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;class attribute or any class which inherits &lt;strong&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;Idunno.AntiCsrf.ISuppressCsrfCheck&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;&lt;strong&gt;     &lt;span style="font-family:Verdana;font-size:85%;"&gt;* If Attack detected&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;&lt;strong&gt;        &lt;span style="font-family:Verdana;font-size:85%;"&gt;-When&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;&lt;strong&gt;            &lt;/strong&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;- &lt;/strong&gt;hidden field or cookkie token are null/empty&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;       &lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="font-family:Verdana;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:Verdana;"&gt;&lt;strong&gt;- &lt;/strong&gt;hidden field and cookkie token is not match&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;    &lt;span style="font-family:Verdana;font-size:85%;"&gt; -&lt;strong&gt;ACTION &lt;/strong&gt;(based on configuration setting &lt;span style="font-family:Courier New;font-size:100%;"&gt;&lt;strong&gt;detectionResult)&lt;br /&gt;      &lt;span style="font-family:Verdana;font-size:85%;"&gt;- &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Throw an exception&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;       &lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="font-family:Verdana;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:Verdana;"&gt;&lt;strong&gt;- &lt;/strong&gt;Or redirect to other page based on configuration setting (&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:100%;"&gt;&lt;strong&gt;errorPage&lt;/strong&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt;&lt;pre&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;==================================================================&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt; &lt;h2 dir="ltr" align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;Limitations of ANTICSRF&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt; &lt;div dir="ltr" align="left"&gt;&lt;span class="798335023-13072010"&gt; &lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;li&gt;&lt;span class="798335023-13072010"&gt; &lt;/span&gt;Non-ASP.NET forms are not protected  with this module.&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr" align="left"&gt; &lt;ul&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;li&gt;You, the developer, must ensure your &lt;strong&gt;GET requests are idempotent  &lt;/strong&gt;(i.e. the side-effects of multiple identical requests are the same as  for a single request). GET requests are not protected with this module. See &lt;a class="externalLink" title="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.2" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.2"&gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.2&lt;span class="externalLinkIcon" title="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.2"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;span class="798335023-13072010"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;---------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;"&gt;        * This Framework  will not protect the GET Request (Except if it is postback).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;              For  example&lt;br /&gt;              - when you use AJAX call using GET Request, It will  not validate the token.&lt;br /&gt;              &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;              - But if you want to use AJAX  call using the POST Request,&lt;br /&gt;              You must Suppress the AntiCSRF  validation by what I mention above on the &lt;strong&gt;Intallation. &lt;/strong&gt;by  adding the attribute or page attribute. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;                  Because If you don't  suppress the AntiCSRF validation, it will detect as AntiCSRF Attack, because  they can't find the token located on your hidden field.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;              Please have a read on  &lt;strong&gt;How It Works explanation above.&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="798335023-13072010"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;---------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="798335023-13072010"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8183338581947302766?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8183338581947302766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8183338581947302766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8183338581947302766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8183338581947302766'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/07/csrf-attack.html' title='CSRF Attack Prevention on .NET'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8153031793038549078</id><published>2010-07-12T16:31:00.000-07:00</published><updated>2010-07-12T16:38:31.549-07:00</updated><title type='text'>XSS Prevention attack</title><content type='html'>Most web developer must know about RequestValidation configuration in .NET&lt;br /&gt;which we can disable the XSS attack.&lt;br /&gt;&lt;br /&gt;But If we want to disable 'RequestValidation' it so we can have flexibility to handle it, We can use Server.HtmlEncode(). to display it.&lt;br /&gt;&lt;br /&gt;However this still not enough. This will expose to XSS attack.&lt;br /&gt;My college (Rob) find a utility which nice to replace Server.HTMLEncode().&lt;br /&gt;&lt;br /&gt;Download AntiXSSLibrary.dll&lt;br /&gt;and replace Server.HTMLEncode() with AntiXss.UrlEncode();&lt;br /&gt; &lt;br /&gt;http://msdn.microsoft.com/en-us/library/aa973813.aspx&lt;br /&gt;http://blogs.msdn.com/b/cisg/archive/2008/08/26/what-is-microsoft-antixss.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8153031793038549078?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8153031793038549078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8153031793038549078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8153031793038549078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8153031793038549078'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/07/xss-prevention-attack.html' title='XSS Prevention attack'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-989529340408053803</id><published>2010-06-22T18:03:00.000-07:00</published><updated>2010-06-22T18:05:03.436-07:00</updated><title type='text'>Remember clientaccesspolicy</title><content type='html'>Remember to have clientaccesspolicy.xml&lt;br /&gt;&lt;br /&gt;to enable your WCF to be consumed by silverlight&lt;br /&gt;&lt;br /&gt;http://videos.visitmix.com/MIX09/T42F&lt;br /&gt;http://community.dynamics.com/blogs/cesardalatorre/comments/9579.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-989529340408053803?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/989529340408053803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=989529340408053803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/989529340408053803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/989529340408053803'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/06/remember-clientaccesspolicy.html' title='Remember clientaccesspolicy'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4807590933036542811</id><published>2010-06-09T22:03:00.000-07:00</published><updated>2010-06-09T22:05:12.698-07:00</updated><title type='text'>Calling SP using NHibernate with IDBCommand</title><content type='html'>If there is transaction open.&lt;br /&gt;you need to supply the transaction by enlist it in NHibernate&lt;br /&gt;&lt;br /&gt;iSession.Transaction.Enlist(sqlComm);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4807590933036542811?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4807590933036542811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4807590933036542811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4807590933036542811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4807590933036542811'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/06/calling-sp-using-nhibernate-with.html' title='Calling SP using NHibernate with IDBCommand'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8766239700050759469</id><published>2010-06-09T17:31:00.000-07:00</published><updated>2010-06-09T17:36:29.817-07:00</updated><title type='text'>inject javascript in bookmark</title><content type='html'>Get stuff from GBone..&lt;br /&gt;&lt;br /&gt;it's pretty amazing that we can inject javascript to debug on browser&lt;br /&gt;&lt;br /&gt;put this bookmark..&lt;br /&gt;javascript:&lt;br /&gt;var b=document.body;&lt;br /&gt;if(b)&lt;br /&gt;{&lt;br /&gt;   void(z=document.createElement('script'));&lt;br /&gt;   void(z.src='http://www.company.com/somescript.js');&lt;br /&gt;   void(b.appendChild(z));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;this will run that script on your browser&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8766239700050759469?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8766239700050759469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8766239700050759469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8766239700050759469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8766239700050759469'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/06/inject-javascript-in-bookmark.html' title='inject javascript in bookmark'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2101224727967620389</id><published>2010-06-09T16:57:00.000-07:00</published><updated>2010-06-09T16:59:29.141-07:00</updated><title type='text'>Jquery.Data</title><content type='html'>Learning new stuff today..from Rob...&lt;br /&gt;&lt;br /&gt;It's better to use Jquery.Data instead of custom attribute in element.&lt;br /&gt;because it will break some browser for custom attribute which not standard.&lt;br /&gt;&lt;br /&gt;Thanks Rob..&lt;br /&gt;&lt;br /&gt;Here is the example&lt;br /&gt;&lt;br /&gt;    jQuery.data(div, "test", { first: 16, last: "pizza!" });&lt;br /&gt;    $("span:first").text(jQuery.data(div, "test").first);&lt;br /&gt;    $("span:last").text(jQuery.data(div, "test").last);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2101224727967620389?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2101224727967620389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2101224727967620389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2101224727967620389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2101224727967620389'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/06/jquerydata.html' title='Jquery.Data'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7201867191402503263</id><published>2010-06-03T23:26:00.000-07:00</published><updated>2010-06-03T23:28:18.659-07:00</updated><title type='text'>System.Web.Extension conflicting with the GAC</title><content type='html'>Be careful when you upgrade the site into 3.5&lt;br /&gt;if you get this error about ambigous with GAC version.&lt;br /&gt;then you need to take this out from your bin folder.&lt;br /&gt;&lt;br /&gt;because It may be your version in bin folder is different. 1.1&lt;br /&gt;but in GAC version is 3.5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7201867191402503263?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7201867191402503263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7201867191402503263' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7201867191402503263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7201867191402503263'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/06/systemwebextension-conflicting-with-gac.html' title='System.Web.Extension conflicting with the GAC'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3667350434417980428</id><published>2010-06-02T19:17:00.001-07:00</published><updated>2010-06-02T19:29:47.910-07:00</updated><title type='text'>Without Postback with disable your browser Javascript</title><content type='html'>Postback is very heavy code to load (viewstate,etc).&lt;br /&gt;such as you want to get rid of this from your form &lt;asp:form runat="server"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So the solution is you can use AJAX.. to handle all this postback to make your page still dynamic or more responsive that before.&lt;br /&gt;&lt;br /&gt;But how about if the client browser disable their javascript..&lt;br /&gt;Your page will be static.&lt;br /&gt;&lt;br /&gt;so you need to consider this as well.&lt;br /&gt;&lt;br /&gt;So the big picture of this solution is to put ajax as common.&lt;br /&gt;but on the event onclick or href.. you can't just call that function to call an ajax.&lt;br /&gt;&lt;br /&gt;for example &lt;br /&gt;href="javascript:CallPostbackFunction();"&lt;br /&gt;&lt;br /&gt;you need to change this to&lt;br /&gt;href="/page/ajax/somePage.aspx" class="AjaxCall"&lt;br /&gt;&lt;br /&gt;then.. in you can check .. if the browser is enabled the javascript..&lt;br /&gt;then you can call your ajax function.&lt;br /&gt;&lt;br /&gt;If the javascript is disabled from your browser then you still can load to the proper page. instead of just do nothing.&lt;br /&gt;&lt;br /&gt;//check if browser enabled their javascript&lt;br /&gt;jQuery(document).ready(function() {&lt;br /&gt;    //perform init and replace to an proper javascript&lt;br /&gt;     var ajaxCalls = $('#ajaxCall');&lt;br /&gt;     ajaxCalls.unbind('click', this.addClick);&lt;br /&gt;     ajaxCalls.bind('click', this.addClick);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here a good reference for Object Oriented Programming in Javascript&lt;br /&gt;http://devedge-temp.mozilla.org/viewsource/2001/oop-javascript/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3667350434417980428?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3667350434417980428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3667350434417980428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3667350434417980428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3667350434417980428'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/06/without-postback-with-disable-your.html' title='Without Postback with disable your browser Javascript'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5845540468694482780</id><published>2010-03-28T22:00:00.000-07:00</published><updated>2010-03-28T22:03:09.241-07:00</updated><title type='text'>response.d in .net 3.5 JSON</title><content type='html'>Migrate Json .Net 2.0 to .Net 3.5&lt;br /&gt;&lt;br /&gt;Here need to be note...&lt;br /&gt;================&lt;br /&gt;response.d&lt;br /&gt;&lt;br /&gt;While I wish this unexpected change had been more clearly announced, it’s a good one. Here’s how Dave Reed explained it to me:&lt;br /&gt;&lt;br /&gt;    {"d": 1 }&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;    Is not a valid JavaScript statement, where as this:&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;    [1]&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;    Is.&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;    So the wrapping of the "d" parameter prevents direct execution of the string as script. No Object or Array constructor worries.&lt;br /&gt;&lt;br /&gt;[] is JavaScript’s array literal notation, allowing you to instantiate an array without explicitly calling a constructor. To expand on Dave’s explanation, simply consider this code:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=====================&lt;br /&gt;make sure you change web.config to use ScriptService of v 3.5 in HttpHandlers&lt;br /&gt;&lt;br /&gt;add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5845540468694482780?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5845540468694482780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5845540468694482780' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5845540468694482780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5845540468694482780'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2010/03/responsed-in-net-35-json.html' title='response.d in .net 3.5 JSON'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3494061782184017705</id><published>2009-08-03T20:39:00.000-07:00</published><updated>2009-09-08T20:28:40.898-07:00</updated><title type='text'>Jquery AJAX impacted on document.write</title><content type='html'>just find a solution, when you use jquery ajax, and there is document.write after that, it will clear all your content..&lt;br /&gt;&lt;br /&gt;all u need to do is create a span, where you want to write that content. then.. overwrite document.write function to write into that span instead doing document.write..&lt;br /&gt;&lt;br /&gt;here is the sample&lt;br /&gt;&lt;br /&gt;span id="test" /span&lt;br /&gt;script   document.write = function(text){ jQuery('#test').append(text) }&lt;br /&gt;/script&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=D&lt;br /&gt;Here is the reference&lt;br /&gt;http://javascript.about.com/library/blwrite.htm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;Huh.. but this still have a problem.. in IE.. if you overwrite into different holder.&lt;br /&gt;&lt;br /&gt;so the best solution at this moment is using iframe...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3494061782184017705?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3494061782184017705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3494061782184017705' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3494061782184017705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3494061782184017705'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2009/08/jquery-ajax-impacted-on-documentwrite.html' title='Jquery AJAX impacted on document.write'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-112643607962334547</id><published>2009-05-10T22:33:00.001-07:00</published><updated>2009-05-10T22:34:27.004-07:00</updated><title type='text'>Change culture without changing deployment Server</title><content type='html'>Add globalization tag inside System.web tag in Web.Config&lt;br /&gt;&lt;br /&gt;globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-AU"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-112643607962334547?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/112643607962334547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=112643607962334547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/112643607962334547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/112643607962334547'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2009/05/change-culture-without-changing.html' title='Change culture without changing deployment Server'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-489161249996753784</id><published>2009-04-01T20:34:00.000-07:00</published><updated>2009-04-01T20:36:01.655-07:00</updated><title type='text'>1st NHibernate.LINQ Limitation</title><content type='html'>Just found Nhibernate Linq limitation.&lt;br /&gt;&lt;br /&gt;It can't translate toLower() on string but luckily, it has compare in case sensitive.&lt;br /&gt;&lt;br /&gt;it throws weird error if you use this.&lt;br /&gt;  q = q.Where(c =&gt; c.firstName.Contains(flter) || c.lastName.Contains(flter) || c.email.Contains(flter));&lt;br /&gt;          &lt;br /&gt;says &lt;br /&gt;----&lt;br /&gt;Index was out of range. Must be non-negative and less than the size of the collection.&lt;br /&gt;Parameter name: index&lt;br /&gt;----&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-489161249996753784?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/489161249996753784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=489161249996753784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/489161249996753784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/489161249996753784'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2009/04/1st-nhibernatelinq-limitation.html' title='1st NHibernate.LINQ Limitation'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2377224688614561420</id><published>2009-03-02T23:04:00.000-08:00</published><updated>2009-03-03T14:27:50.588-08:00</updated><title type='text'>Restricting Text box (Multiline) using Javascript</title><content type='html'>//Restrict Length&lt;br /&gt;function restrictLength(e,ctl,maxLength)&lt;br /&gt;{&lt;br /&gt;    var evt = e ? e : window.event;&lt;br /&gt;    &lt;br /&gt;    //check the length for copy paste&lt;br /&gt;    if (ctl.value.length &gt;= maxLength)&lt;br /&gt;    {&lt;br /&gt;        //only character&lt;br /&gt;        if (e.keyCode == 0)&lt;br /&gt;        {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }                &lt;br /&gt;    return true;  &lt;br /&gt;}&lt;br /&gt;-- don't for get to called using (RETURN)&lt;br /&gt;javascript:return restrictLength(event,this,10);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2377224688614561420?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2377224688614561420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2377224688614561420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2377224688614561420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2377224688614561420'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2009/03/restricting-text-box-multiline-using.html' title='Restricting Text box (Multiline) using Javascript'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5807127224409946549</id><published>2009-03-02T23:02:00.000-08:00</published><updated>2009-03-02T23:04:21.957-08:00</updated><title type='text'>Sending Email from HTML</title><content type='html'>I decide to use File rather then web request coz some server are restricted to loopback.&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;        /// Get Email Body from file &lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        /// &lt;returns&gt;&lt;/returns&gt;&lt;br /&gt;        public static string GetEmailBodyFromFile(string filePath)&lt;br /&gt;        {&lt;br /&gt;            string emailMasterBody = "";&lt;br /&gt;            &lt;br /&gt;            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");&lt;br /&gt;            using (System.IO.StreamReader objReader = new StreamReader(filePath, encode))&lt;br /&gt;            {&lt;br /&gt;                emailMasterBody = objReader.ReadToEnd();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return emailMasterBody;&lt;br /&gt;        }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5807127224409946549?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5807127224409946549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5807127224409946549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5807127224409946549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5807127224409946549'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2009/03/sending-email-from-html.html' title='Sending Email from HTML'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2111989784804374100</id><published>2008-12-02T21:53:00.000-08:00</published><updated>2008-12-02T21:54:51.001-08:00</updated><title type='text'>PL-SQL Looping</title><content type='html'>DECLARE  CursorTemplate CURSOR&lt;br /&gt;FAST_FORWARD FOR       &lt;br /&gt;      SELECT Val1, Val2, Val3 FROM Table1&lt;br /&gt;&lt;br /&gt;OPEN CursorTemplate&lt;br /&gt;&lt;br /&gt;FETCH NEXT FROM CursorTemplate&lt;br /&gt;INTO      @Var1, @Var2, @Var3&lt;br /&gt;&lt;br /&gt;WHILE (@@FETCH_STATUS = 0)&lt;br /&gt;BEGIN&lt;br /&gt;      --do something here w/ your data&lt;br /&gt;&lt;br /&gt;      FETCH NEXT FROM CursorTemplate&lt;br /&gt;      INTO      @Var1, @Var2, @Var3&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;CLOSE CursorTemplate&lt;br /&gt;DEALLOCATE CursorTemplate&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2111989784804374100?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2111989784804374100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2111989784804374100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2111989784804374100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2111989784804374100'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/12/looping-in-pl-sql.html' title='PL-SQL Looping'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7814260619069609713</id><published>2008-11-26T21:20:00.000-08:00</published><updated>2008-11-26T21:21:40.813-08:00</updated><title type='text'>Fix Calendar Extender on IE 6</title><content type='html'>add this style&lt;br /&gt;.ajax__calendar_container { z-index : 1004 ; }&lt;br /&gt;&lt;br /&gt;add this javascript&lt;br /&gt;function dateEditor_OnShown(dateControl, emptyEventArgs)&lt;br /&gt;{&lt;br /&gt;           var shimWidth = dateControl._width;&lt;br /&gt;           var shimHeight = dateControl._height;&lt;br /&gt;           &lt;br /&gt;           // Open current popup&lt;br /&gt;           // Create the popup element&lt;br /&gt;           var dateEditorShim;&lt;br /&gt;           dateEditorShim = document.getElementById("dateEditorShim");&lt;br /&gt;           dateEditorShim.style.width = dateControl._popupDiv.offsetWidth;&lt;br /&gt;           dateEditorShim.style.height = dateControl._popupDiv.offsetHeight;&lt;br /&gt;           dateEditorShim.style.top = dateControl._popupDiv.style.top;                                                                        &lt;br /&gt;           dateEditorShim.style.left = dateControl._popupDiv.style.left;&lt;br /&gt;           dateControl._popupDiv.style.zIndex = 999;&lt;br /&gt;           dateEditorShim.style.zIndex = 998;&lt;br /&gt;           dateEditorShim.style.display = "block";&lt;br /&gt;           &lt;br /&gt;}&lt;br /&gt;   &lt;br /&gt;       // Function: dateEditor_OnShown&lt;br /&gt;       // Summary:  Handles the OnShown event of the dateEditor control. &lt;br /&gt;       // Inputs:   dateControl    -&gt; The date control object&lt;br /&gt;       //           emptyEventArgs -&gt; Empty event arguments raised by the date control&lt;br /&gt;       // Remarks:  Make sure to insert a shim of an empty iframe underneath the calendar popup container&lt;br /&gt;       function dateEditor_OnHiding(dateControl, emptyEventArgs)&lt;br /&gt;       {&lt;br /&gt;           var shimWidth = 0;&lt;br /&gt;           var shimHeight = 0;&lt;br /&gt;           &lt;br /&gt;           // Open current popup&lt;br /&gt;           // Create the popup element&lt;br /&gt;           var dateEditorShim;&lt;br /&gt;           dateEditorShim = document.getElementById("dateEditorShim");&lt;br /&gt;           dateEditorShim.style.width = 0;&lt;br /&gt;           dateEditorShim.style.height = 0;&lt;br /&gt;           dateEditorShim.style.top = 0;&lt;br /&gt;           dateEditorShim.style.left = 0;&lt;br /&gt;           dateEditorShim.style.display = "none";&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//add this in code &lt;br /&gt;calDOB.OnClientShown = "dateEditor_OnShown";&lt;br /&gt;calDOB.OnClientHiding = "dateEditor_OnHiding";&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7814260619069609713?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7814260619069609713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7814260619069609713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7814260619069609713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7814260619069609713'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/11/fix-calendar-extender-on-ie-6.html' title='Fix Calendar Extender on IE 6'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3572037691942453128</id><published>2008-11-25T18:48:00.000-08:00</published><updated>2008-11-25T18:51:57.688-08:00</updated><title type='text'>Error in Calendar Extender because the master page has asp tag &lt;%%&gt;</title><content type='html'>Today, I just annoyed with this error.&lt;br /&gt;Every form which using Calendar extension works fine before. &lt;br /&gt;and somehow after I change the master page, it start to show an error said :&lt;br /&gt;&lt;br /&gt;=================&lt;br /&gt;System.Web.HttpException: The Controls collection cannot be modified because the control contains code blocks (i.e. ). &lt;br /&gt;=================&lt;br /&gt;&lt;br /&gt;Luckily, with Tom's Help, I found the problem.&lt;br /&gt;It was on the master page on the header java script which use &lt;%= ... %&gt; to get the content from server....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3572037691942453128?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3572037691942453128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3572037691942453128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3572037691942453128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3572037691942453128'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/11/error-in-calendar-extender-because.html' title='Error in Calendar Extender because the master page has asp tag &lt;%%&gt;'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3816301949601699506</id><published>2008-11-20T19:39:00.001-08:00</published><updated>2008-11-20T19:39:33.060-08:00</updated><title type='text'>Pomegranate Phone</title><content type='html'>http://www.pomegranatephone.com/default.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3816301949601699506?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3816301949601699506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3816301949601699506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3816301949601699506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3816301949601699506'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/11/pomegranate-phone.html' title='Pomegranate Phone'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6215134326537815006</id><published>2008-11-19T19:58:00.000-08:00</published><updated>2008-11-19T20:00:56.608-08:00</updated><title type='text'>Url Rewriting VS Postback</title><content type='html'>To Resolve a problem in postback for url rewriting,&lt;br /&gt;you can use control adaptor and rewrite the form.&lt;br /&gt;&lt;br /&gt;public class FormRewriter : System.Web.UI.Adapters.ControlAdapter&lt;br /&gt;&lt;br /&gt;more information : visit : http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6215134326537815006?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6215134326537815006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6215134326537815006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6215134326537815006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6215134326537815006'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/11/url-rewriting-vs-postback.html' title='Url Rewriting VS Postback'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3615538411350582206</id><published>2008-10-23T16:22:00.000-07:00</published><updated>2008-10-23T16:26:40.096-07:00</updated><title type='text'>EnableSortingAndPagingCallback Issue With LinqDataSource</title><content type='html'>Today, I found an issue with EnableSortingAndPagingCallback and LinqDataSource&lt;br /&gt;&lt;br /&gt;I enable the EnableSortingAndPagingCallback on my GridView and using LinqDataSource.&lt;br /&gt;Somehow after I tested, I always get error on deleting the row after move to the next page.&lt;br /&gt;&lt;br /&gt;====&lt;br /&gt;The solutions which work well is Use Update panel instead of EnableSortingAndPagingCallback.&lt;br /&gt;&lt;br /&gt;I think it's better to use Update Panel rather then enableSortingAndPagingCallback, it some reason, it's faster and also include editing and deleting as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3615538411350582206?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3615538411350582206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3615538411350582206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3615538411350582206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3615538411350582206'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/10/enablesortingandpagingcallback-issue.html' title='EnableSortingAndPagingCallback Issue With LinqDataSource'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6272643127927408348</id><published>2008-10-13T00:30:00.000-07:00</published><updated>2008-10-13T00:32:38.590-07:00</updated><title type='text'>SWF Library to convert image</title><content type='html'>I just find library to convert SWF to image. it's called SWFToImage.dll from bytescout.&lt;br /&gt;but it is activeX. which we don't want to use.&lt;br /&gt;&lt;br /&gt;and I find others called swfdotnet-1.0 but unfortunately, it only support swf version 7.&lt;br /&gt;&lt;br /&gt;Any other library for this ?&lt;br /&gt;&lt;br /&gt;Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6272643127927408348?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6272643127927408348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6272643127927408348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6272643127927408348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6272643127927408348'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/10/swf-library-to-convert-image.html' title='SWF Library to convert image'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-9141505727697608560</id><published>2008-10-13T00:26:00.001-07:00</published><updated>2008-10-13T00:30:00.715-07:00</updated><title type='text'>LINQ will arround the DateTime.MaxValue</title><content type='html'>Today, I just fixed the bugs which is interesting.&lt;br /&gt;&lt;br /&gt;if we use linq to filter data with this DateTime.MaxValue.TimeOfDay.ToString();-&lt;br /&gt;which will be appear show the time 23:59:59.9999999 &lt;br /&gt;&lt;br /&gt;Linq will add up to the next day. &lt;br /&gt;&lt;br /&gt;so the solution never use the MaxValue.TimeOfDay.. just use simple string 23:59:59 and it's enough.&lt;br /&gt;&lt;br /&gt;(o,o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-9141505727697608560?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/9141505727697608560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=9141505727697608560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/9141505727697608560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/9141505727697608560'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/10/linq-will-arround-datetimemaxvalue.html' title='LINQ will arround the DateTime.MaxValue'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7609530495759515580</id><published>2008-08-14T00:10:00.000-07:00</published><updated>2008-08-14T18:50:24.598-07:00</updated><title type='text'>Firefox 3 - Caching ISSUE</title><content type='html'>in Firefox 3 there is a weird bug which it somehow cache the page for no reason.&lt;br /&gt;It just does not request to the server anymore... -(only if you update your updatepanel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have try many thing to avoid this.&lt;br /&gt;1. Put meta tag which FF3 will ignore this -(&lt;br /&gt;     meta equiv="expires" content="Mon, 01 Jan 1990 00:00:00 GMT"&lt;br /&gt;     meta equiv="Cache-control" content="no-cache"&lt;br /&gt;     meta equiv="Cache-control" content="no-store"&lt;br /&gt;     meta equiv="Cache-control" content="must-revalidate"&lt;br /&gt;     meta equiv="pragma" content="no-cache"&lt;br /&gt;&lt;br /&gt;2.Add Response Header -   FF3 read this and by using Firebug, I notice that this info has been added to header&lt;br /&gt;  but it only worked in the first time, but after a while, it starts caching again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     Response.Cache.SetAllowResponseInBrowserHistory(false);&lt;br /&gt;     Response.Cache.SetCacheability(HttpCacheability.NoCache);&lt;br /&gt;     Response.Cache.SetNoStore();&lt;br /&gt;     Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches) ;&lt;br /&gt;     Response.Expires = 0;&lt;br /&gt;&lt;br /&gt;=======&lt;br /&gt;Desperately I find doggy solution to handle this.&lt;br /&gt;1. I notice that if the query string is change, FF3 will not cache. so it still go back to the server.&lt;br /&gt;just add ur querystring with DateTime.Now.TimeSpan.Tick at the back, and FF3 will not cache anymore.&lt;br /&gt;&lt;br /&gt;2. go to about:config and disable &lt;span style="font-weight: bold;"&gt;browser.cache.disk.enable &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;browser.cache.memory.enable. &lt;/span&gt;But this is very doggy solution, you can't force all of user to disable there settings which is not default from FF3. - &lt;span style="font-weight: bold;"&gt;(So just ignore this solution)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;======&lt;br /&gt;More reference about this bug.&lt;br /&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=441751"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=441751&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=327790#c8"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=327790#c8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.dotnet.framework.aspnet.caching&amp;amp;tid=6d5121f2-d78c-4e26-9d58-bbce507842b6&amp;amp;cat=en_US_f2b00e34-9211-4139-87be-4b28e2f0ef79&amp;amp;lang=en&amp;amp;cr=US&amp;amp;sloc=&amp;amp;p=1"&gt;http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.dotnet.framework.aspnet.caching&amp;amp;tid=6d5121f2-d78c-4e26-9d58-bbce507842b6&amp;amp;cat=en_US_f2b00e34-9211-4139-87be-4b28e2f0ef79&amp;amp;lang=en&amp;amp;cr=US&amp;amp;sloc=&amp;amp;p=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.alittlemadness.com/2008/07/30/ajax-vs-caching-vs-firefox-3/"&gt;http://www.alittlemadness.com/2008/07/30/ajax-vs-caching-vs-firefox-3/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.killersites.com/mvnforum/mvnforum/viewthread?thread=11626"&gt;http://www.killersites.com/mvnforum/mvnforum/viewthread?thread=11626&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;=====&lt;br /&gt;Any other suggestion are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7609530495759515580?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7609530495759515580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7609530495759515580' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7609530495759515580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7609530495759515580'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/08/firefox-3-caching-issue.html' title='Firefox 3 - Caching ISSUE'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-414319630555043812</id><published>2008-07-29T07:17:00.001-07:00</published><updated>2008-07-29T07:17:46.857-07:00</updated><title type='text'>Force Page Client Validation First....</title><content type='html'>&lt;p&gt;Today, I need to force check if the Page is valid in the client to perform another javascript function called.&lt;/p&gt; &lt;p&gt;Luckily, If you use Script Manager, WebResources.axd has been provided a function.&lt;/p&gt; &lt;p&gt;This function called &lt;strong&gt;Page_ClientValidate &lt;/strong&gt;which will return the boolean result which indicate if the page client is valid / not. This function also will so the error message from page client validator and summary validator. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;validationResult = Page_ClientValidate("groupName");&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;However if you use validation which is happen on the server, you still to mark your button &lt;strong&gt;CausesValidation="true"&lt;/strong&gt; (Default) and code behind to check if Page is valid.&lt;br&gt;&lt;br&gt;Here is example server validator using Custom validator&lt;br&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:CustomValidator&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="custVal"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Display&lt;/span&gt;&lt;span class="kwrd"&gt;="dynamic"&lt;/span&gt; &lt;span class="attr"&gt;OnServerValidate&lt;/span&gt;&lt;span class="kwrd"&gt;="custVal_ServerValidate"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;*&lt;br&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:CustomValidator&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span class="rem"&gt;//code behind validation&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; sitevalName_ServerValidate(&lt;span class="kwrd"&gt;object&lt;/span&gt; source, ServerValidateEventArgs args)&lt;br /&gt;{&lt;br /&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (not valid)&lt;br /&gt;          args.IsValid = &lt;span class="kwrd"&gt;false&lt;/span&gt;; &lt;br /&gt;}&lt;br&gt;&lt;span class="rem"&gt;//and don't forget in your button click code behind&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//you need to check if page is valid,&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//otherwise it will keep going.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (!Page.IsValid) Return;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-414319630555043812?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/414319630555043812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=414319630555043812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/414319630555043812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/414319630555043812'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/force-page-client-validation-first.html' title='Force Page Client Validation First....'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7983315849520332203</id><published>2008-07-25T00:42:00.000-07:00</published><updated>2008-07-29T06:43:12.842-07:00</updated><title type='text'>SWF with inside Modal Popup</title><content type='html'>I just solve a problem with SWF inside Modal Popup.&lt;br&gt;&lt;br&gt;The weird thing happen between SWF and Ajax. It sometimes work and not work.&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold"&gt;To make show swf in IE , I need to use SWF Object to render.&lt;br&gt;var fo = new SWFObject('temp.swf', 'viewer', '100%', '100%', '7', '#ffffff');&lt;br&gt;&lt;br&gt;&lt;/span&gt;but there is still problem in Firefox which sometimes load up sometimes not.&lt;br&gt;&lt;br&gt;Finally I need to put it on other &lt;span style="font-weight: bold"&gt;IFrame &lt;/span&gt;instead of div.&lt;br&gt; &lt;p&gt;&amp;lt;iframe style="border:none; width: 100%; height: 100%;" src="/temp.aspx?ID=&amp;lt;%= Content.ID%&amp;gt;" &amp;gt;&lt;br&gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;&lt;br&gt;however It still cause a problem because I put the SWF Register Object using RegisterClient On backend... which Firefox does not accepted but IE accepted.&lt;br&gt;&lt;br&gt;so Finally I need to put SWF object in front of Client aspx.&lt;br&gt; &lt;div id="RequestID" style="display: none"&gt;&lt;%= Request["ID"] %&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt; &lt;script type="text/javascript"&gt;&lt;br /&gt;        // &lt;![CDATA[&lt;br /&gt;       &lt;br /&gt;        var divReqID = document.getElementById("RequestID");&lt;br /&gt;        var reqID = 0;&lt;br /&gt;        if (divReqID)&lt;br /&gt;        {&lt;br /&gt;            reqID = divReqID.innerHTML;&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;        var fo = new SWFObject('/flash/test.swf', 'viewer', '100%', '100%', '7', '#ffffff');&lt;br /&gt;        fo.addVariable('preloaderColor', '0x333333');&lt;br /&gt;        fo.addVariable('xmlDataPath', '/pages/data.aspx?id=' + reqID);&lt;br /&gt;        fo.addParam("scale", "noscale");&lt;br /&gt;        fo.addParam("salign", "tl");&lt;br /&gt;        fo.addParam("quality", "low");&lt;br /&gt;        fo.addParam("wmode", "transparent");           &lt;br /&gt;        fo.write("flashcontent");&lt;br /&gt;       &lt;br /&gt;        // ]]&gt;&lt;br /&gt;    &lt;/script&gt; &lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold"&gt;&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7983315849520332203?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7983315849520332203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7983315849520332203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7983315849520332203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7983315849520332203'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/swf-with-inside-modal-popup.html' title='SWF with inside Modal Popup'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4755484096400830066</id><published>2008-07-18T00:13:00.001-07:00</published><updated>2008-07-18T00:13:42.164-07:00</updated><title type='text'>FingerMote</title><content type='html'>&lt;p&gt;Just find how your finger can do in WiiMote.    &lt;br /&gt;&lt;a title="http://www.cs.cmu.edu/~johnny/projects/wii/" href="http://www.cs.cmu.edu/~johnny/projects/wii/"&gt;http://www.cs.cmu.edu/~johnny/projects/wii/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4755484096400830066?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4755484096400830066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4755484096400830066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4755484096400830066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4755484096400830066'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/fingermote.html' title='FingerMote'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5757547668956244567</id><published>2008-07-15T22:03:00.001-07:00</published><updated>2008-07-15T22:03:25.718-07:00</updated><title type='text'>JQuery - Mouseleave VS Mouseout</title><content type='html'>&lt;p&gt;Today, I just realize that Mouseout will trigger if we go to the child of that container. Luckily JQuery has MouseLeave event which solve this problem.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Mouseover&lt;/b&gt; fires when the pointer moves into or out from child element, while &lt;b&gt;mouseenter&lt;/b&gt; does't.&lt;/p&gt;  &lt;p&gt;It is not standard DOM event so you need to use Bind method from JQUERY.   &lt;br /&gt;&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;   $(&lt;span style="color: #006080"&gt;&amp;quot;div.overout&amp;quot;&lt;/span&gt;).mouseover(&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(){&lt;br /&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;p:first&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;).text(&lt;span style="color: #006080"&gt;&amp;quot;mouse over&amp;quot;&lt;/span&gt;);&lt;br /&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;p:last&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;).text(++i);&lt;br /&gt;   }).mouseout(&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(){&lt;br /&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;p:first&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;).text(&lt;span style="color: #006080"&gt;&amp;quot;mouse out&amp;quot;&lt;/span&gt;);&lt;br /&gt;   });&lt;br /&gt;   });&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;$(&lt;span style="color: #006080"&gt;&amp;quot;div.enterleave&amp;quot;&lt;/span&gt;).bind(&lt;span style="color: #006080"&gt;&amp;quot;mouseenter&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(){&lt;br /&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;p:first&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;).text(&lt;span style="color: #006080"&gt;&amp;quot;mouse enter&amp;quot;&lt;/span&gt;);&lt;br /&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;p:last&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;).text(++n);&lt;br /&gt;   }).bind(&lt;span style="color: #006080"&gt;&amp;quot;mouseleave&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(){&lt;br /&gt;     $(&lt;span style="color: #006080"&gt;&amp;quot;p:first&amp;quot;&lt;/span&gt;,&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;).text(&lt;span style="color: #006080"&gt;&amp;quot;mouse leave&amp;quot;&lt;/span&gt;);&lt;br /&gt;   });&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5757547668956244567?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5757547668956244567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5757547668956244567' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5757547668956244567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5757547668956244567'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/jquery-mouseleave-vs-mouseout.html' title='JQuery - Mouseleave VS Mouseout'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7084020065963513107</id><published>2008-07-15T00:45:00.001-07:00</published><updated>2008-07-15T00:45:08.853-07:00</updated><title type='text'>RepeatColumns in ListView</title><content type='html'>&lt;p&gt;The last major feature of the ListView is the ability to group data into subsets, much like the DataList control provides. The DataList is a tabular control that renders a single row of data in each cell of the rendered table. You control how many rows of the underlying dataset are grouped into a single table row by setting the RepeatColumns property.&lt;/p&gt;  &lt;p&gt;Since the ListView is not constrained to render as a table, it needs a more generic way of specifying groups of items to be rendered together, which is what GroupTemplate does. Pic below shows the relationship among the LayoutTemplate, GroupTemplate, and ItemTemplate elements within a ListView. The GroupTemplate lets you specify the surrounding HTML for every n elements in the underlying dataset, where n is specified by the GroupItemCount property of the ListView.&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://i.msdn.microsoft.com/cc337898.fig09.gif" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When you use a GroupTemplate within a ListView, you won't specify a control with an ID of itemPlaceholder within your LayoutTemplate&amp;#8212;that control now needs to be in your GroupTemplate. Instead, you will specify a control with an ID of groupPlaceholder in the LayoutTemplate (you can change the control ID by setting the GroupPlaceholderID property of the ListView) to describe where the contents of the GroupTemplate should be injected for each n items encountered in the underlying dataset.&lt;/p&gt;  &lt;p&gt;Here is example how to use GroupTemplate in ListView   &lt;br /&gt;&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:ListView&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;OnPagePropertiesChanging&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1_PagePropertiesChanging&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;GroupItemCount&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DataKeyNames&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CourtID&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:PlaceHolder&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;groupPlaceholder&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;GroupTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;itemPlaceholder&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;GroupTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           test&lt;span style="background-color: #ffff00"&gt;&amp;lt;%# Eval(&lt;span style="color: #006080"&gt;&amp;quot;CourtID&amp;quot;&lt;/span&gt;) %&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;/asp:ListView&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img alt="" src="http://i.msdn.microsoft.com/cc337898.fig11.gif" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is very similar to what you could do with a DataList, but because you are working with a ListView, you can just as easily add both pagination and sorting as you did earlier with your grid rendering, a task that would be rather daunting with the DataList. The code download for this article contains an example that implements both pagination and sorting for your reference.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7084020065963513107?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7084020065963513107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7084020065963513107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7084020065963513107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7084020065963513107'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/repeatcolumns-in-listview.html' title='RepeatColumns in ListView'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7749037311597641829</id><published>2008-07-15T00:20:00.001-07:00</published><updated>2008-07-15T00:20:23.618-07:00</updated><title type='text'>Data paging List View in .Net 3.5</title><content type='html'>&lt;p&gt;ListView is one of the new data controls that was shipped with the latest release of ASP.NET, which is 3.5. It displays the values from a data source by utilizing user-defined templates. This gives the developer more flexibility about the design of the data displayed on the user interface. In order for the ListView control to display its content, templates should be created for different parts of the control. The LayoutTemplate and ItemTemplate are mandatory. All other templates are optional.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Here is a sample to use Data paging without Data Source &lt;strong&gt;(Data Bind)&lt;/strong&gt;&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:ListView&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;br /&gt;                            &lt;span style="color: #ff0000"&gt;onpagepropertieschanging&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1_PagePropertiesChanging&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                LIST VIEW &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;th&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Court ID&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;th&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;itemPlaceHolder&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                      test&lt;span style="background-color: #ffff00"&gt;&amp;lt;%&lt;/span&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; # Eval(&lt;span style="color: #006080"&gt;&amp;quot;CourtID&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;span style="background-color: #ffff00"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:ListView&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:DataPager&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;DataPager1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PagedControlID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PageSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Fields&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:NumericPagerField&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ButtonCount&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;4&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Fields&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:DataPager&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                       &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;//inside page load&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//nomd for the first time&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!IsPostBack)&lt;br /&gt;            {&lt;br /&gt;                ListView1.DataSource = CourtProvider.GetAllCourtsForDataBinding();&lt;br /&gt;                ListView1.DataBind();&lt;br /&gt;            }&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;//when ListView Page Property Changed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ListView1_PagePropertiesChanging(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, PagePropertiesChangingEventArgs e)&lt;br /&gt;{&lt;br /&gt;    DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    ListView1.DataSource = CourtProvider.GetAllCourtsForDataBinding();&lt;br /&gt;    ListView1.DataBind();&lt;br /&gt;    &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is simple way to display using &lt;strong&gt;Object Data Source&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:ListView&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DataSourceID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;pdsData&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                LIST VIEW &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;th&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Court ID&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;th&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;itemPlaceHolder&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                      test&lt;span style="background-color: #ffff00"&gt;&amp;lt;%&lt;/span&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; # Eval(&lt;span style="color: #006080"&gt;&amp;quot;CourtID&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;span style="background-color: #ffff00"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;                                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:ListView&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:DataPager&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;DataPager1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PagedControlID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListView1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PageSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Fields&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:NumericPagerField&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ButtonCount&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;4&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Fields&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:DataPager&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;cc:ParentDataSource&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;pdsData&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;SelectMethod&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;GetData&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;SelectCountMethod&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;GetDataRowCount&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                       &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; IEnumerable&amp;lt;CourtBindingHelper&amp;gt; GetData(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; sortExpression, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; maximumRows, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; startRowIndex)&lt;br /&gt;       {&lt;br /&gt;           &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br /&gt;           {&lt;br /&gt;&lt;br /&gt;               &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CourtsData.GetSortPagingData(sortExpression, maximumRows, startRowIndex);&lt;br /&gt;               &lt;br /&gt;           }&lt;br /&gt;           &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;           {&lt;br /&gt;               lblError.Text = ex.Message;&lt;br /&gt;               &lt;span style="color: #008000"&gt;//if error just return the agencies&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CourtsData;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; GetDataRowCount()&lt;br /&gt;       {&lt;br /&gt;           &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CourtsData != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; ? &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CourtsData.Count : 0);&lt;br /&gt;       }&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7749037311597641829?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7749037311597641829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7749037311597641829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7749037311597641829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7749037311597641829'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/data-paging-list-view-in-net-35.html' title='Data paging List View in .Net 3.5'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5731327527866791110</id><published>2008-07-11T00:31:00.001-07:00</published><updated>2008-07-11T00:31:32.617-07:00</updated><title type='text'>Apple VS Orange</title><content type='html'>&lt;p&gt;   &lt;br /&gt;&lt;img height="220" src="http://www.yoho.cn/photo/2109134.jpg" width="590" /&gt;    &lt;br /&gt;&lt;img height="564" alt="" src="http://www.yoho.cn/photo/2109137.jpg" width="387" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.yoho.cn/spaces/log/457532/" href="http://www.yoho.cn/spaces/log/457532/"&gt;http://www.yoho.cn/spaces/log/457532/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.tedtang.com/upload/iphone_back.jpg" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5731327527866791110?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5731327527866791110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5731327527866791110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5731327527866791110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5731327527866791110'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/apple-vs-orange.html' title='Apple VS Orange'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3072400717448310953</id><published>2008-07-09T22:44:00.001-07:00</published><updated>2008-07-09T23:06:33.874-07:00</updated><title type='text'>PEX</title><content type='html'>&lt;p&gt;Pex is Automated EXploration Testing. It is an intelligent assistant to the programmer and will help us to generate a prarameterized unit test.&lt;/p&gt;  &lt;p&gt;very cool...&lt;/p&gt;  &lt;p&gt;&lt;img src="http://research.microsoft.com/Pex/wiki/parameterzedtestsschema.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3072400717448310953?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3072400717448310953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3072400717448310953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3072400717448310953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3072400717448310953'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/pex.html' title='PEX'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4758128076729734515</id><published>2008-07-06T23:36:00.001-07:00</published><updated>2008-07-06T23:36:09.612-07:00</updated><title type='text'>Do u want to become popcorn ?</title><content type='html'>&lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3335c204-1a1d-49e7-ad33-ad512a490be4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/V94shlqPlSI&amp;amp;NR=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/V94shlqPlSI&amp;amp;NR=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4758128076729734515?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4758128076729734515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4758128076729734515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4758128076729734515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4758128076729734515'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/07/do-u-want-to-become-popcorn.html' title='Do u want to become popcorn ?'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4864687426437939576</id><published>2008-06-12T18:30:00.001-07:00</published><updated>2008-06-12T18:30:13.320-07:00</updated><title type='text'>Trie Algorithm for Autocomplete and Suggest word</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Currently I try using Trie for Suggest and Autocomplete algorithm.&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt; Suggest2(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; str)&lt;br /&gt;{&lt;br /&gt;    List&amp;lt;String&amp;gt; result = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;String&amp;gt;();&lt;br /&gt;    TrieNode curr = root;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;char&lt;/span&gt; c &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; str.Trim().ToLower().ToCharArray())&lt;br /&gt;    {&lt;br /&gt;        curr = curr.GetChild(c);&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (curr == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Suggest2(curr, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; StringBuilder(str), result);&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; result;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Suggest2(TrieNode curr,StringBuilder sbTemp, List&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt; result)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (curr == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (curr.IsEnd) result.Add(sbTemp.ToString());&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;char&lt;/span&gt; c &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; curr.Childs.Keys)&lt;br /&gt;    {&lt;br /&gt;        sbTemp.Append(c);&lt;br /&gt;        Suggest2(curr.Childs[c], sbTemp, result);&lt;br /&gt;        sbTemp.Length--;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Any Suggestion to improve this algorithm except changing String to StringBuilder ?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4864687426437939576?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4864687426437939576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4864687426437939576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4864687426437939576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4864687426437939576'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/06/trie-algorithm-for-autocomplete-and.html' title='Trie Algorithm for Autocomplete and Suggest word'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-3633738430684459019</id><published>2008-06-06T20:08:00.001-07:00</published><updated>2008-06-06T20:20:30.462-07:00</updated><title type='text'>IDisposable Pattern in .NET</title><content type='html'>&lt;p&gt;In some cases we also need to implement IDisposable pattern in our code.&lt;/p&gt; &lt;p&gt;For example, If you have unmanaged objects such as (File, Image, TCP Connection, etc) or you want to make sure that you have closed your connection / web service.&lt;br&gt;&lt;br&gt;Here is the code&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;#region &lt;/span&gt;IDisposable Pattern&lt;br /&gt;        &lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style="color: green"&gt;Desctructor in VB.NET - Finalize&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;It will be called by Garbage Collector&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;or you may force GC by calling GC.Collect()&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        &lt;/span&gt;~MyClass()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: green"&gt;//only dispose unmanaged obj, for managed obj, &lt;br /&gt;            //it probably already been clear by GC, &lt;br /&gt;            //so we cannot called it again.&lt;br /&gt;            &lt;/span&gt;Dispose(&lt;span style="color: blue"&gt;false&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style="color: green"&gt;Will be called when you use 'using' &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;keyword or implicitly called by you obj.Dispose()&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;public void &lt;/span&gt;Dispose()&lt;br /&gt;        {&lt;br /&gt;            Dispose(&lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;br /&gt;            &lt;span style="color: green"&gt;//tell GC not to run Desctrutor, &lt;br /&gt;            //because it has been called implicitly&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;GC&lt;/span&gt;.SuppressFinalize(&lt;span style="color: blue"&gt;this&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style="color: green"&gt;Dispose Unmanaged and manage&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="bDisposeManaged"&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style="color: green"&gt;true - dispose unmanaged and managed code as well&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;fase - dispose only and unmanaged&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/param&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue"&gt;protected virtual void &lt;/span&gt;Dispose(&lt;span style="color: blue"&gt;bool &lt;/span&gt;bDisposeManaged)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;try&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                &lt;span style="color: blue"&gt;if &lt;/span&gt;(bDisposeManaged)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: green"&gt;//TODO: dispose managed code &lt;br /&gt;                    //Such as(Service, connection, etc)&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;(_ServiceUser != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: blue"&gt;try&lt;br /&gt;                        &lt;/span&gt;{&lt;br /&gt;                            _ServiceUser.Dispose();&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style="color: blue"&gt;catch &lt;/span&gt;{ }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: green"&gt;//TODO: dispose unmanaged code &lt;br /&gt;                //such as (File, Bitmap / Image, TCP Connection, etc)&lt;br /&gt;            &lt;/span&gt;}&lt;br /&gt;            &lt;span style="color: blue"&gt;catch&lt;/span&gt;{}&lt;br /&gt;        }&lt;br /&gt;&lt;span style="color: blue"&gt;#endregion&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-3633738430684459019?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/3633738430684459019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=3633738430684459019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3633738430684459019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/3633738430684459019'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/06/idisposable-pattern-in-net.html' title='IDisposable Pattern in .NET'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7002245405263685937</id><published>2008-05-30T01:06:00.001-07:00</published><updated>2008-05-30T01:13:24.059-07:00</updated><title type='text'>New Beta Sites</title><content type='html'>&lt;p&gt;Check this out...    &lt;br /&gt;&lt;a href="http://www.evernote.com"&gt;&lt;strong&gt;www.evernote.com&lt;/strong&gt;&lt;/a&gt;     &lt;br /&gt;This web site has OCR Build in which can search on handwriting inside your image&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://lh4.ggpht.com/kkurni/SD-3EyehM5I/AAAAAAAAAL0/u4cudZhHP14/s1600-h/image%5B20%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="137" alt="image" src="http://lh4.ggpht.com/kkurni/SD-3FyehM6I/AAAAAAAAAL8/Irl5THu1VRc/image_thumb%5B11%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/kkurni/SD-3HSehM7I/AAAAAAAAAME/nK7Uml-1GxQ/s1600-h/image%5B26%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="140" alt="image" src="http://lh3.ggpht.com/kkurni/SD-3IiehM8I/AAAAAAAAAMM/gqHNRawhhd0/image_thumb%5B15%5D.png?imgmax=800" width="257" border="0" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;a title="http://www.tripit.com/" href="http://www.tripit.com/"&gt;&lt;strong&gt;http://www.tripit.com/&lt;/strong&gt;&lt;/a&gt; - If you like traveling&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7002245405263685937?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7002245405263685937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7002245405263685937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7002245405263685937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7002245405263685937'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/new-beta-sites.html' title='New Beta Sites'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/kkurni/SD-3FyehM6I/AAAAAAAAAL8/Irl5THu1VRc/s72-c/image_thumb%5B11%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7378366152879963577</id><published>2008-05-29T21:39:00.001-07:00</published><updated>2008-05-29T21:39:50.735-07:00</updated><title type='text'>Dynamic Data on ASP.NET 3.5 Extensions CTP</title><content type='html'>&lt;p&gt;I recently try Dynamic Data on ASP.NET 3.5 Extensions CTP.&lt;/p&gt;  &lt;p&gt;The most thing that impress me is an idea of &lt;strong&gt;Dynamic Control /Field.&lt;/strong&gt;&lt;/p&gt;  &lt;div&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;asp:DynamicControl&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DataField&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;EmailAddress&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So you can just simple define Dynamic Field in your Grid View and it will rendered into particular template (Include Edit Template) based on data type of your value. &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;You can define your template to have validation control or even can you 3rd party control such as telerik.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is How you can tell dynamic control to render based on particular template or even BLOB/Image Type as well.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;//this is a partial class to override the code which has been generated by DBML&lt;/span&gt;&lt;br /&gt;[MetadataType(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(MyClassMetadata))]&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyClass&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #008000"&gt;//TODO: You may put Validation when your data change or whatever...&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//Here is your metadata which you will define rendering using UIHint&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyClassMetadata&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #008000"&gt;//Date Type&lt;/span&gt;&lt;br /&gt;    [DisplayFormat(DataFormatString=&lt;span style="color: #006080"&gt;&amp;quot;{0:dd MMM yyyy}&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; StartDate {get; set;}&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #008000"&gt;//Integer Type&lt;/span&gt;&lt;br /&gt;    [Range(0,10, ErrorMessage=&lt;span style="color: #006080"&gt;&amp;quot;Please enter valid quantity between 1-10&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; Quantity {get; set;}&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;//Text type using 3rd Party WSYWIG control&lt;/span&gt;&lt;br /&gt;    [UIHint(&lt;span style="color: #006080"&gt;&amp;quot;TextEditorTelerik&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; Description {get; set;}&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;//Blob - image type&lt;/span&gt;&lt;br /&gt;    [UIHint(&lt;span style="color: #006080"&gt;&amp;quot;DbImage&amp;quot;&lt;/span&gt;)]&lt;br /&gt;    [ImageFormat(200,200)]&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; Picture {get; set;}   &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;UIHint &lt;/strong&gt;is where you define your template.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;You can create whatever for your template name and just put &lt;strong&gt;&amp;quot;_Edit&amp;quot; &lt;/strong&gt;for edit mode.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Just see the sample in under FieldTemplates of your Dynamic Data Project&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/dynamicdata/step12.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7378366152879963577?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7378366152879963577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7378366152879963577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7378366152879963577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7378366152879963577'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/dynamic-data-on-aspnet-35-extensions.html' title='Dynamic Data on ASP.NET 3.5 Extensions CTP'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-9114730152580576757</id><published>2008-05-29T21:05:00.001-07:00</published><updated>2008-05-29T21:06:13.237-07:00</updated><title type='text'>Singleton Confusion</title><content type='html'>&lt;p&gt;I heard some developers asked about this question &amp;quot;If you can create a static class, Why do we need to create a Singleton Class ?&amp;quot;&lt;/p&gt;  &lt;p&gt;I think the answer is straight forward.    &lt;br /&gt;    &lt;br /&gt;Singleton Pattern is a pattern that will make sure there is only 1 instance. on the other hand It will make sure that developers will not be able to another instance.&lt;/p&gt;  &lt;p&gt;Static Class will share your instance through your application. But this static class will not make sure that it will only be 1 instance of your class. Other developer which don't know where you put your static instance will able to create the new instance... and It will be any duplication and waste of resources.&lt;/p&gt;  &lt;p&gt;Here is very simple Singleton pattern.&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MySingleton&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #008000"&gt;//Your exclusive instance&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; MySingleton _Instance;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;//this will make sure no one can create an instance of this class.&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; SampleSingleton(){}&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #008000"&gt;//this static constructor will be the only who can create an instance of this class&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; MySingleton()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #008000"&gt;//TODO: you may preinit / validation code before create an instance&lt;/span&gt;&lt;br /&gt;        _Instance = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MySingleton();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; MySingleton Instance&lt;br /&gt;    {&lt;br /&gt;        get{ &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _Instance;}&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-9114730152580576757?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/9114730152580576757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=9114730152580576757' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/9114730152580576757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/9114730152580576757'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/singleton-confusion.html' title='Singleton Confusion'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5283126598410127202</id><published>2008-05-22T17:41:00.001-07:00</published><updated>2008-05-22T17:41:36.133-07:00</updated><title type='text'>Who want to use Photosynth next ?</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a9a392c9-7e6f-4209-92c2-ab0b61cde4ef" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0suot89qXY4&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0suot89qXY4&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5283126598410127202?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5283126598410127202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5283126598410127202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5283126598410127202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5283126598410127202'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/who-want-to-use-photosynth-next.html' title='Who want to use Photosynth next ?'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-512871995209747309</id><published>2008-05-14T18:57:00.001-07:00</published><updated>2008-07-20T02:14:58.915-07:00</updated><title type='text'>Increase AJAX Performance by using Composite Script</title><content type='html'>&lt;p&gt;As you can see in Web Developer tool, there is a lot of request happening  on the background.&lt;/p&gt;  &lt;p&gt;The first thing you need to do before combining Ajax scripts, You need to know what scripts are being used by your pages.  &lt;br /&gt;  &lt;br /&gt;Add this on your pages to detect what scripts are being used.&lt;/p&gt;  &lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;   &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;microsoft:ScriptReferenceProfiler&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="server"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;After that &lt;strong&gt;Copy &lt;/strong&gt;all the &lt;strong&gt;Script References&lt;/strong&gt; which is written by Script Reference Profiler.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And &lt;strong&gt;Paste &lt;/strong&gt;it into &lt;strong&gt;Script Manager Composite Scripts.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div   style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;br /&gt; &lt;pre   style="border-style: none; margin: 0em; padding: 0px; overflow: visible; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);font-family:consolas,'Courier New',courier,monospace;font-size:8pt;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;asp:ScriptManager&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="server"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;CompositeScript&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;&amp;lt;!-- Paste Here --&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;asp:ScriptReference&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="~/Scripts/MyCustomScripts.js"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;asp:ScriptReference&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="MicrosoftAjax.js"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;asp:ScriptReference&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="MicrosoftAjaxWebForms.js"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;       ....&lt;br /&gt;       ....       &lt;br /&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;&amp;lt;!--            --&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;CompositeScript&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;asp:ScriptManager&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And as a results you can decrease the &lt;strong&gt;number of request and traffic &lt;/strong&gt;for this scripts.&lt;br /&gt;&lt;br /&gt;PS: The &lt;span class="LanguageKeyword0"&gt;ScriptReferenceProfiler&lt;/span&gt; control is not part of the Beta installation, and you must install it separately.  Download this &lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&amp;amp;ReleaseId=13356"&gt;http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&amp;amp;ReleaseId=13356&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-512871995209747309?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/512871995209747309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=512871995209747309' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/512871995209747309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/512871995209747309'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/increase-ajax-performance-by-using.html' title='Increase AJAX Performance by using Composite Script'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5942629247608722130</id><published>2008-05-07T01:45:00.001-07:00</published><updated>2008-05-07T01:53:50.474-07:00</updated><title type='text'>Bug Fix For Unknown Runtime Error for Gridview inside Update panel</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/kkurni/SCFsCLxxlnI/AAAAAAAAAKo/kaAABPZKXqY/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="163" alt="image" src="http://lh6.ggpht.com/kkurni/SCFsC7xxloI/AAAAAAAAAKw/KCz7fK0wIDY/image_thumb.png?imgmax=800" width="225" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If we use CSS Friendly,   &lt;br /&gt;This happen if I put GridView Under Update Panel without table.     &lt;br /&gt;    &lt;br /&gt;But finally I found that in my master page there is this strange tag.    &lt;br /&gt;&amp;lt;a name=&amp;quot;body&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;After remove this, Everything works fine.   &lt;br /&gt;Here is the reference.    &lt;br /&gt;&lt;a title="http://damianpedwards.spaces.live.com/blog/cns!A079DE667E1958B3!562.entry" href="http://damianpedwards.spaces.live.com/blog/cns!A079DE667E1958B3!562.entry"&gt;http://damianpedwards.spaces.live.com/blog/cns!A079DE667E1958B3!562.entry&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The most explanation that I found so far is this   &lt;br /&gt;&lt;em&gt;=====From Lewis =====     &lt;br /&gt;&lt;/em&gt;&lt;a title="http://cyrilgupta.com/wp/?p=110" href="http://cyrilgupta.com/wp/?p=110"&gt;http://cyrilgupta.com/wp/?p=110&lt;/a&gt;&lt;em&gt;     &lt;br /&gt;I found that this error is caused by having a a html &amp;#8216;form&amp;#8217; element somewhere inside the postback html.      &lt;br /&gt;After taking out the form tags (and any asp.net controls generating them) from the updatePanel&amp;#8217;s contentTemplate, the error went away.      &lt;br /&gt;=====================&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;However , I still don't understand If I put your GridView outside update panel and keep EnableSortingAndPagingCallbacks=&amp;quot;True&amp;quot; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;When I click on Paging and Sorting, It throw error &lt;b&gt;Microsoft JScript runtime error: 'panelElement' is null or not an object.      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/kkurni/SCFuFrxxlpI/AAAAAAAAAK4/_39FyVxVQsA/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="138" alt="image" src="http://lh3.ggpht.com/kkurni/SCFuHLxxlqI/AAAAAAAAALA/l-0VCAypgpI/image_thumb%5B1%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I think this is cause by CSS Friendly, because If I take the CSS Friendly out for GridView, It works fine   &lt;br /&gt;Any comment ?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5942629247608722130?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5942629247608722130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5942629247608722130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5942629247608722130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5942629247608722130'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/bug-fix-for-unknown-runtime-error-for.html' title='Bug Fix For Unknown Runtime Error for Gridview inside Update panel'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/kkurni/SCFsC7xxloI/AAAAAAAAAKw/KCz7fK0wIDY/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1957891456521399703</id><published>2008-05-06T20:59:00.001-07:00</published><updated>2008-05-06T21:01:32.107-07:00</updated><title type='text'>LINQ to SQL Debugging</title><content type='html'>&lt;p&gt;There are several ways to debug your Linq to sql&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Sql Server Profiler        &lt;br /&gt;&lt;/strong&gt;&lt;u&gt;&lt;em&gt;But How about if you share your Sql Server with others such as staging DB ?          &lt;br /&gt;&lt;/em&gt;&lt;/u&gt;It will be nightmare. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;DataContext Command        &lt;br /&gt;&lt;/strong&gt;Console.WriteLine(ctx.GetCommand(prods).CommandText);       &lt;br /&gt;&lt;u&gt;&lt;em&gt;But How about if you don't want to write any debug code ? &lt;/em&gt;&lt;/u&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;LINQ to SQL Debug Visualizer        &lt;br /&gt;&lt;/strong&gt;I think this is the best way to debug your LINQ to SQL.       &lt;br /&gt;You can use .NET Debugging Mode       &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/linqtosql3/step4.jpg" /&gt;&lt;/p&gt;      &lt;p&gt;And &lt;strong&gt;Click small magnifying glass&lt;/strong&gt; in the expression above, It will launch the LINQ to SQL debug visualizer to inspect the raw SQL that the ORM will execute based on that LINQ query:&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/linqtosql3/step5.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Click &amp;quot;Execute&amp;quot; button&lt;/strong&gt;, you can even test out the SQL query and see the raw returned results that will be returned from the database:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/linqtosql3/step6.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Installing SQL debug Visualizer :&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download Linq to Sql Debug Visualizer &lt;a title="http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip" href="http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip"&gt;http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip&lt;/a&gt; - (From Scott Gu Blog)       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Copy from &lt;strong&gt;\SqlServerQueryVisualizer\bin\Debug\SqlServerQueryVisualizer.dll        &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://lh6.ggpht.com/kkurni/SCEo57xxljI/AAAAAAAAAKI/S7Imm93HNoI/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="268" alt="image" src="http://lh5.ggpht.com/kkurni/SCEo6rxxlkI/AAAAAAAAAKQ/F9lMhw8d3GI/image_thumb%5B1%5D.png?imgmax=800" width="352" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Copy to &lt;strong&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/kkurni/SCEo97xxllI/AAAAAAAAAKY/Itg98TD_YFE/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="272" alt="image" src="http://lh6.ggpht.com/kkurni/SCEpA7xxlmI/AAAAAAAAAKg/NjoCpYLV0Wg/image_thumb%5B3%5D.png?imgmax=800" width="358" border="0" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You may start debug your LINQ...    &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1957891456521399703?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1957891456521399703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1957891456521399703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1957891456521399703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1957891456521399703'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/05/linq-to-sql-debugging.html' title='LINQ to SQL Debugging'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/kkurni/SCEo6rxxlkI/AAAAAAAAAKQ/F9lMhw8d3GI/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5206469130820239092</id><published>2008-04-29T18:21:00.001-07:00</published><updated>2008-04-29T18:21:37.317-07:00</updated><title type='text'>Custom CSS for Calendar Extender (AJAX Control Toolkit)</title><content type='html'>&lt;p&gt;You may specify your custom CSS for your calendar in your application.&lt;/p&gt;  &lt;p&gt;Just put copy this style and change your custom style   &lt;br /&gt;    &lt;br /&gt;For general Calendar&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;.ajax__calendar_container {padding:4px;position:absolute;cursor:&lt;span style="color: #0000ff"&gt;default&lt;/span&gt;;width:170px;font-size:11px;text-align:center;font-family:tahoma,verdana,helvetica;}&lt;br /&gt;.ajax__calendar_body {height:139px;width:170px;position:relative;overflow:hidden;margin:auto;}&lt;br /&gt;.ajax__calendar_days, .ajax__calendar_months, .ajax__calendar_years {top:0px;left:0px;height:139px;width:170px;position:absolute;text-align:center;margin:auto;}&lt;br /&gt;.ajax__calendar_container TABLE {font-size:11px;}&lt;br /&gt;.ajax__calendar_header {height:20px;width:100%;}&lt;br /&gt;.ajax__calendar_prev {cursor:pointer;width:15px;height:15px;&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;:left;background-repeat:no-repeat;background-position:50% 50%;background-image:url(&amp;lt;%=WebResource(&lt;span style="color: #006080"&gt;&amp;quot;AjaxControlToolkit.Calendar.arrow-left.gif&amp;quot;&lt;/span&gt;)%&amp;gt;);}&lt;br /&gt;.ajax__calendar_next {cursor:pointer;width:15px;height:15px;&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;:right;background-repeat:no-repeat;background-position:50% 50%;background-image:url(&amp;lt;%=WebResource(&lt;span style="color: #006080"&gt;&amp;quot;AjaxControlToolkit.Calendar.arrow-right.gif&amp;quot;&lt;/span&gt;)%&amp;gt;);}&lt;br /&gt;.ajax__calendar_title {cursor:pointer;font-weight:bold;}&lt;br /&gt;.ajax__calendar_footer {height:15px;}&lt;br /&gt;.ajax__calendar_today {cursor:pointer;padding-top:3px;}&lt;br /&gt;.ajax__calendar_dayname {height:17px;width:17px;text-align:right;padding:0 2px;}&lt;br /&gt;.ajax__calendar_day {height:17px;width:18px;text-align:right;padding:0 2px;cursor:pointer;}&lt;br /&gt;.ajax__calendar_month {height:44px;width:40px;text-align:center;cursor:pointer;overflow:hidden;}&lt;br /&gt;.ajax__calendar_year {height:44px;width:40px;text-align:center;cursor:pointer;overflow:hidden;}&lt;br /&gt;&lt;br /&gt;.ajax__calendar .ajax__calendar_container {border:1px solid #646464;background-color:#ffffff;color:#000000;}&lt;br /&gt;.ajax__calendar .ajax__calendar_footer {border-top:1px solid #f5f5f5;}&lt;br /&gt;.ajax__calendar .ajax__calendar_dayname {border-bottom:1px solid #f5f5f5;}&lt;br /&gt;.ajax__calendar .ajax__calendar_day {border:1px solid #ffffff;}&lt;br /&gt;.ajax__calendar .ajax__calendar_month {border:1px solid #ffffff;}&lt;br /&gt;.ajax__calendar .ajax__calendar_year {border:1px solid #ffffff;}&lt;br /&gt;&lt;br /&gt;.ajax__calendar .ajax__calendar_active .ajax__calendar_day {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}&lt;br /&gt;.ajax__calendar .ajax__calendar_active .ajax__calendar_month {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}&lt;br /&gt;.ajax__calendar .ajax__calendar_active .ajax__calendar_year {background-color:#edf9ff;border-color:#0066cc;color:#0066cc;}&lt;br /&gt;&lt;br /&gt;.ajax__calendar .ajax__calendar_other .ajax__calendar_day {background-color:#ffffff;border-color:#ffffff;color:#646464;}&lt;br /&gt;.ajax__calendar .ajax__calendar_other .ajax__calendar_year {background-color:#ffffff;border-color:#ffffff;color:#646464;}&lt;br /&gt;&lt;br /&gt;.ajax__calendar .ajax__calendar_hover .ajax__calendar_day {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}&lt;br /&gt;.ajax__calendar .ajax__calendar_hover .ajax__calendar_month {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}&lt;br /&gt;.ajax__calendar .ajax__calendar_hover .ajax__calendar_year {background-color:#edf9ff;border-color:#daf2fc;color:#0066cc;}&lt;br /&gt;&lt;br /&gt;.ajax__calendar .ajax__calendar_hover .ajax__calendar_title {color:#0066cc;}&lt;br /&gt;.ajax__calendar .ajax__calendar_hover .ajax__calendar_today {color:#0066cc;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you specify your CSS Class in calendar Extender, you may use this.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &amp;lt;ajaxToolkit:CalendarExtender ID=&lt;span style="color: #006080"&gt;&amp;quot;customCalendarExtender&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #006080"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; TargetControlID=&lt;span style="color: #006080"&gt;&amp;quot;Date2&amp;quot;&lt;/span&gt;&lt;br /&gt;           CssClass=&lt;span style="color: #006080"&gt;&amp;quot;MyCalendar&amp;quot;&lt;/span&gt; Format=&lt;span style="color: #006080"&gt;&amp;quot;MMMM d, yyyy&amp;quot;&lt;/span&gt; SelectedDate=&lt;span style="color: #006080"&gt;&amp;quot;April 28, 1906&amp;quot;&lt;/span&gt; PopupPosition=&lt;span style="color: #006080"&gt;&amp;quot;Left&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;.MyCalendar .ajax__calendar_container {&lt;br /&gt;    border:1px solid #646464;&lt;br /&gt;    background-color: lemonchiffon;&lt;br /&gt;    color: red;&lt;br /&gt;}&lt;br /&gt;.MyCalendar .ajax__calendar_other .ajax__calendar_day,&lt;br /&gt;.MyCalendar .ajax__calendar_other .ajax__calendar_year {&lt;br /&gt;    color: black;&lt;br /&gt;}&lt;br /&gt;.MyCalendar .ajax__calendar_hover .ajax__calendar_day,&lt;br /&gt;.MyCalendar .ajax__calendar_hover .ajax__calendar_month,&lt;br /&gt;.MyCalendar .ajax__calendar_hover .ajax__calendar_year {&lt;br /&gt;    color: black;&lt;br /&gt;}&lt;br /&gt;.MyCalendar .ajax__calendar_active .ajax__calendar_day,&lt;br /&gt;.MyCalendar .ajax__calendar_active .ajax__calendar_month,&lt;br /&gt;.MyCalendar .ajax__calendar_active .ajax__calendar_year {&lt;br /&gt;    color: black;&lt;br /&gt;    font-weight:bold;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5206469130820239092?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5206469130820239092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5206469130820239092' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5206469130820239092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5206469130820239092'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/04/custom-css-for-calendar-extender-ajax.html' title='Custom CSS for Calendar Extender (AJAX Control Toolkit)'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5043474606735656578</id><published>2008-04-29T01:05:00.001-07:00</published><updated>2008-04-29T01:05:03.584-07:00</updated><title type='text'>Multiple IE</title><content type='html'>&lt;p&gt;Running Multiple IE in your desktop is very useful for web tester.   &lt;br /&gt;&lt;strong&gt;&lt;a href="http://tredosoft.com/files/multi-ie/multiple-ie-setup.exe"&gt;Download Multiple IE installer&lt;/a&gt;&lt;/strong&gt; (10.3MB)&lt;/p&gt;  &lt;p&gt;&lt;img alt="setup pic1" src="http://tredosoft.com/files/multi-ie/setup1.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="setup pic2" src="http://tredosoft.com/files/multi-ie/setup2.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5043474606735656578?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5043474606735656578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5043474606735656578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5043474606735656578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5043474606735656578'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/04/multiple-ie.html' title='Multiple IE'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6976599073582694269</id><published>2008-04-28T01:18:00.001-07:00</published><updated>2008-04-29T18:16:37.381-07:00</updated><title type='text'>MVP Pattern in ASP.Net</title><content type='html'>&lt;p&gt;&lt;strong&gt;why we need to use MVP ?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#8226; &lt;strong&gt;No Code Reuse&lt;/strong&gt; - Each view (page/control) must create an instance of a specific presenter in order to invoke the presenter's methods. That's four or five lines of code per page/control; quite a bit of work if you have hundreds of pages and controls in your site. Code can and should be centralized.     &lt;br /&gt;&amp;#8226; &lt;strong&gt;Presenter Creation&lt;/strong&gt; - Presenters operate on a specific type of interface. Generally speaking, there's a one-to-one relationship between presenters and interfaces. This problem relates to the &amp;quot;no code reuse&amp;quot; point, and leads to inconsistent public-facing functionality exposed by various presenters. Object creation should be standardized.     &lt;br /&gt;&amp;#8226; &lt;strong&gt;View Intelligence&lt;/strong&gt; &amp;#8211; Using the MVP pattern forces a view to know as much about its presenter (methods, properties etc&amp;#8230;) as the presenter knows about its view. The use of interfaces prevents a circular reference, but there should still be further decoupling of the view. One area I may disagree with Bill is that views should also not know what data layer type (or DAO interface type) to pass to a presenter. I'm of the opinion that the view's shouldn't have a reference to any data layer (i.e. anything upstream of the presenters).     &lt;br /&gt;&amp;#8226; &lt;strong&gt;State Management&lt;/strong&gt; &amp;#8211; This one is a biggie. Many of the people posting on MVP are quick to point out that (very simple) MPV examples remove the ability for ASP.NET to use session and caching. How do you access context-specific information if presenters can't have a reference to anything downstream (i.e. System.Web or System.Windows.Forms)? The presentation layer should provide a way to maintain application state.&lt;/p&gt;  &lt;p&gt;======================&lt;/p&gt;  &lt;p&gt;Here is a basic Contact Us Web Form that we'll build with the &lt;strike&gt;M&lt;/strike&gt;VP Pattern.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottcate/WindowsLiveWriter/VeryQuickMVPPatterntoUsewithASP.NET_B3B6/image%7B0%7D%5B1%5D.png"&gt;&lt;img height="100" src="http://weblogs.asp.net/blogs/scottcate/WindowsLiveWriter/VeryQuickMVPPatterntoUsewithASP.NET_B3B6/image%7B0%7D.png" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first step of MVP is to create a contract. We're going to use a .Net Interface for that. Create a file called IContactUs.cs and use this code. This is our VIEW in the MVP.&lt;/p&gt;  &lt;pre&gt;public interface IReaderContactUs&lt;br /&gt;{&lt;br /&gt;    string Name { get; }&lt;br /&gt;    string Email { get; }&lt;br /&gt;    string PhoneNumber { get; }&lt;br /&gt;    string Message { get; }&lt;br /&gt;    string Result { set; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The interface is like a blue print to a house. No implementation, just directions. This interface says that we have to be able to &amp;quot;GET&amp;quot; Name, Email, PhoneNumber, and Message. And that we have to be able to &amp;quot;SET&amp;quot; a Result string.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next we need a Presenter. The presenter is the worker bee. The presenter actually does the work. Interestingly, the Presenter knows **NOTHING** about the UX. Repeat **NOTHING**. The presenter is usually in a different class library, and only referenced from the UX code. In order to enforce out contract (the .net interface we just created) we want to only be able to create a presenter, with an instance of the Interface. To do this, notice that our only constructor takes a single param that is the interface. Here is the code for our presenter; named ContactUsPresenter.cs&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class ContactUsPresenter&lt;br /&gt;{&lt;br /&gt;    private readonly IReaderContactUs view;&lt;br /&gt;&lt;br /&gt;    public ContactUsPresenter(IReaderContactUs view)&lt;br /&gt;    {&lt;br /&gt;        this.view = view;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void ProcessForm()&lt;br /&gt;    {&lt;br /&gt;        //do something - save it, send it, process it&lt;br /&gt;        //in this case, just modify the UI, so we&lt;br /&gt;        //know it's running. &lt;br /&gt;        //This is where you would normally make a call into the model&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        StringBuilder sb = new StringBuilder();&lt;br /&gt;        sb.Append(string.Format(&amp;quot;Name : {0}&amp;lt;br /&amp;gt;&amp;quot;, view.Name));&lt;br /&gt;        sb.Append(string.Format(&amp;quot;Email : {0}&amp;lt;br /&amp;gt;&amp;quot;, view.Email));&lt;br /&gt;        sb.Append(string.Format(&amp;quot;Phone : {0}&amp;lt;br /&amp;gt;&amp;quot;, view.PhoneNumber));&lt;br /&gt;        sb.Append(string.Format(&amp;quot;Message : {0}&amp;lt;br /&amp;gt;&amp;quot;, view.Message));&lt;br /&gt;        view.Result = string.Format(&amp;quot;&amp;lt;h1&amp;gt;Success&amp;lt;/h1&amp;gt;{0}&amp;lt;hr /&amp;gt;&amp;quot;, sb);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finally we get to the code behind of our Web Form. Our web form Implements the Interface. All this means is that our web form has to be able to &amp;quot;GET&amp;quot; Name, Email, PhoneNumber, and Message. And that we have to be able to &amp;quot;SET&amp;quot; a Result string. Notice the appropriate Get / Set routines that wrap around the asp.net server controls.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Notice that we have a private ContactUsPresenter, that doesn't get instantiated until the OnInit event. This is because we have to send in an instance of the interface, which is the &lt;em&gt;this&lt;/em&gt; keyword. Then when the button is clicked, the presenter.ProcessForm(); is called to do the work.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public partial class ContactUs : UserControl, IReaderContactUs&lt;br /&gt;{&lt;br /&gt;    private ContactUsPresenter presenter;&lt;br /&gt;&lt;br /&gt;    public string Name { get { return NameTextBox.Text; } }&lt;br /&gt;    public string Email { get { return EmailTextBox.Text; } } &lt;br /&gt;    public string PhoneNumber { get { return PhoneTextBox.Text; } }&lt;br /&gt;    public string Message { get { return MessageTextBox.Text; } }&lt;br /&gt;    public string Result { set { ResultLabel.Text = value; } }&lt;br /&gt;    &lt;br /&gt;    protected override void OnInit(EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        base.OnInit(e);&lt;br /&gt;        presenter = new ContactUsPresenter(this);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void SubmitContactButton_Click(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        presenter.ProcessForm();&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;=========&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;You may need to check out MVP Pattern in Web Client Software Factory as well. This will give you a complete guidance to implement MVP Pattern in your web application&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;a title="http://www.codeplex.com/websf/Wiki/View.aspx?title=MVP_landing_page&amp;amp;referringTitle=bundles" href="http://www.codeplex.com/websf/Wiki/View.aspx?title=MVP_landing_page&amp;amp;referringTitle=bundles"&gt;http://www.codeplex.com/websf/Wiki/View.aspx?title=MVP_landing_page&amp;amp;referringTitle=bundles&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6976599073582694269?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6976599073582694269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6976599073582694269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6976599073582694269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6976599073582694269'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/04/mvp-pattern-in-aspnet.html' title='MVP Pattern in ASP.Net'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5276048652744029116</id><published>2008-03-26T15:58:00.001-07:00</published><updated>2008-03-26T15:59:47.471-07:00</updated><title type='text'>Object Dock</title><content type='html'>&lt;p&gt;Hi... I just find cool ... desktop tool... they called object dock. &lt;a title="http://www.stardock.com/products/objectdock/" href="http://www.stardock.com/products/objectdock/"&gt;http://www.stardock.com/products/objectdock/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/kkurni/R-rVIPUf5jI/AAAAAAAAAKA/FW-nNVg5Gxk/image%5B16%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="439" alt="image" src="http://lh4.google.com/kkurni/R-rVLvUf5kI/AAAAAAAAAKE/20dFfOu26Dw/image_thumb%5B8%5D.png" width="729" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5276048652744029116?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5276048652744029116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5276048652744029116' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5276048652744029116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5276048652744029116'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/03/object-dock.html' title='Object Dock'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4360273990612786989</id><published>2008-03-23T20:10:00.001-07:00</published><updated>2008-03-23T20:10:37.980-07:00</updated><title type='text'>getYear() Javascript function in Firefox, IE, Safari</title><content type='html'>&lt;p&gt;Today, I just fix very common bug which only happened in Firefox and Safari.    &lt;br /&gt;The problem is very simple, when javascript called getYear() - it returns 108 in Firefox instead of 2008 in IE.&lt;/p&gt;  &lt;p&gt;To resolve this , I just change getYear() into getFullYear() - it will return 2008 for all.   &lt;br /&gt;So.. Never use getYear() anymore... -)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4360273990612786989?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4360273990612786989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4360273990612786989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4360273990612786989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4360273990612786989'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/03/getyear-javascript-function-in-firefox.html' title='getYear() Javascript function in Firefox, IE, Safari'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4818601222136880860</id><published>2008-03-20T19:13:00.001-07:00</published><updated>2008-03-20T19:35:51.778-07:00</updated><title type='text'>Safari Runs Under Windows</title><content type='html'>&lt;div&gt;Today, I just get an Apple's update and It downloads Safari which is runs under my windows. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you don't have Apple's - Click this Link &lt;a href="http://www.apple.com/safari/download/"&gt;http://www.apple.com/safari/download/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and It past ACID 2&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://bp0.blogger.com/_kEiMJawhtH8/R-MeUPUf5hI/AAAAAAAAAJg/BOCzcizHBiw/s320/New+Bitmap+Image.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5180017329464927762" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_kEiMJawhtH8/R-Me6vUf5iI/AAAAAAAAAJo/r1YtwdoCZ7w/s1600-h/untitled.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_kEiMJawhtH8/R-Me6vUf5iI/AAAAAAAAAJo/r1YtwdoCZ7w/s400/untitled.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5180017990889891362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_kEiMJawhtH8/R-MeUPUf5hI/AAAAAAAAAJg/BOCzcizHBiw/s1600-h/New+Bitmap+Image.bmp"&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4818601222136880860?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4818601222136880860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4818601222136880860' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4818601222136880860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4818601222136880860'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/03/safari-runs-under-windows.html' title='Safari Runs Under Windows'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_kEiMJawhtH8/R-MeUPUf5hI/AAAAAAAAAJg/BOCzcizHBiw/s72-c/New+Bitmap+Image.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6762945737808106554</id><published>2008-03-17T14:49:00.001-07:00</published><updated>2008-03-17T14:53:37.172-07:00</updated><title type='text'>Manage CSS in VS 2008</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;VS 2008 supports a new tool window inside the IDE called &amp;quot;Manage Styles&amp;quot;.&amp;#160; This shows all of the CSS stylesheets, and their corresponding rules, for the page you are currently editing.&amp;#160; It can be used both when you are in design-view, as well as when you are in source view on a page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Click View &amp;gt; Manage Styles&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/kkurni/R97oPwOMcsI/AAAAAAAAAFw/tEeOzQQefa0/clip_image001%5B5%5D%5B3%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="374" alt="clip_image001[5]" src="http://lh4.google.com/kkurni/R97oQQOMctI/AAAAAAAAAF4/C9jllbYR3pA/clip_image001%5B5%5D_thumb%5B1%5D" width="201" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A circle around a CSS rule in the manage styles window indicates that particular rule is in use within the current document.&amp;#160; Using the mouse to hover over the rule allows you to quickly see the CSS rule values: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/kkurni/R97oRQOMcuI/AAAAAAAAAGA/A6cliBBl6fo/clip_image002%5B4%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="314" alt="clip_image002" src="http://lh6.google.com/kkurni/R97oRwOMcvI/AAAAAAAAAGI/LDsCHe8Y7mw/clip_image002_thumb%5B1%5D" width="259" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The tool window provides top level nodes for style block(s) in the current page and external style sheet in cascading order.&amp;#160; Inline styles will not be displayed in this window, since inline styles are not &amp;#8220;manageable&amp;#8221;. Tool window will also list the @import directives.&lt;/p&gt;  &lt;p&gt;The icons are used to differentiate the various types of styles as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.google.com/kkurni/R97oSAOMcwI/AAAAAAAAAGQ/EQxyvMsPRso/clip_image003%5B3%5D"&gt;&lt;img title="blue" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="20" alt="clip_image003" src="http://lh4.google.com/kkurni/R97oSQOMcxI/AAAAAAAAAGY/SrxG6IEe82w/clip_image003_thumb" width="20" border="0" /&gt;&lt;/a&gt;Elements&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/kkurni/R97oSgOMcyI/AAAAAAAAAGg/zx5e2AB1_pU/clip_image004%5B3%5D"&gt;&lt;img title="green" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="20" alt="clip_image004" src="http://lh3.google.com/kkurni/R97oTAOMczI/AAAAAAAAAGo/_M70Iuu2bxg/clip_image004_thumb" width="20" border="none" /&gt;&lt;/a&gt;Classes&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/kkurni/R97oTQOMc0I/AAAAAAAAAGw/V8InLwutU0g/clip_image005%5B3%5D"&gt;&lt;img title="red" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="20" alt="clip_image005" src="http://lh5.google.com/kkurni/R97oTgOMc1I/AAAAAAAAAG4/gRFcBMyAnZ8/clip_image005_thumb" width="20" border="none" /&gt;&lt;/a&gt;IDs&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/kkurni/R97oTwOMc2I/AAAAAAAAAHA/lZQrmlG1_n8/clip_image006%5B3%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="23" alt="clip_image006" src="http://lh3.google.com/kkurni/R97oUAOMc3I/AAAAAAAAAHI/q-la9RvN_TU/clip_image006_thumb" width="26" border="none" /&gt;&lt;/a&gt;Style in use (color applies as above)&lt;/p&gt;  &lt;p&gt;You can then either right-click on a CSS rule and select &amp;quot;Modify Style&amp;quot; to bring up a graphical CSS rules editor, or you can double click on the rule in the manage styles window to automatically open the stylesheet file and jump immediately to the CSS source definition to edit (with full intellisense): &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/kkurni/R97oUgOMc4I/AAAAAAAAAHQ/7DdDAtATOug/clip_image007%5B4%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="190" alt="clip_image007" src="http://lh3.google.com/kkurni/R97oVAOMc5I/AAAAAAAAAHY/Q4egFX3yuJw/clip_image007_thumb%5B1%5D" width="370" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Click View &amp;gt; CSS Properties&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the other cool new CSS features that is also supported in both design and source view is the new CSS Properties Window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/kkurni/R97oVgOMc6I/AAAAAAAAAHg/oQkxRoV9Toc/clip_image008%5B4%5D"&gt;&lt;img title="Style Application" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="84" alt="clip_image008" src="http://lh6.google.com/kkurni/R97oVwOMc7I/AAAAAAAAAHo/M61RgUSfhhI/clip_image008_thumb%5B1%5D" width="525" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can click on the individual values to see where in the CSS precedence hierarchy this value was inherited from or overridden.&amp;#160; In the example below you can see that the final color for the current element that my cursor is on is a dark brown color.&amp;#160; If I select this final color value, the CSS properties window will draw a blue box in the applied-rules list above indicating that this setting is set in the &amp;quot;singlecontent h3&amp;quot; rule: &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://lh4.google.com/kkurni/R97oWQOMc8I/AAAAAAAAAHw/r5wTUBHDSBc/clip_image009%5B4%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="406" alt="clip_image009" src="http://lh3.google.com/kkurni/R97oXAOMc9I/AAAAAAAAAH4/DIIaFXXfoQI/clip_image009_thumb%5B1%5D" width="218" border="0" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you click on the lighter brown color setting that this rule overrode (and which has the red strike-thru), you can see that it originated with the page's HTML body CSS rule (notice how the body rule below is selected in the applied rules list when you select the overridden value below): &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://lh5.google.com/kkurni/R97oXgOMc-I/AAAAAAAAAIA/OL2dsomMuqY/clip_image010%5B7%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="366" alt="clip_image010" src="http://lh3.google.com/kkurni/R97oYAOMc_I/AAAAAAAAAII/BCNNbe7kJIM/clip_image010_thumb%5B4%5D" width="229" border="0" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6762945737808106554?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6762945737808106554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6762945737808106554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6762945737808106554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6762945737808106554'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/03/manage-css-in-vs-2008.html' title='Manage CSS in VS 2008'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2278857149911721195</id><published>2008-03-14T18:19:00.001-07:00</published><updated>2008-03-14T18:19:52.572-07:00</updated><title type='text'>Shelving your code in TFS</title><content type='html'>&lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;p&gt;TFS allows you to set aside &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/cpts_term.html#pend_change"&gt;pending changes&lt;/a&gt; in your &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/cpts_term.html#tfs_workspace"&gt;TFS workspace&lt;/a&gt; if you want to work on something else for awhile, or if you want another coder to review your changes before you commit them, or if you want to pass off files you've been working on to another team member. When you create a &lt;strong&gt;shelveset&lt;/strong&gt; TFS saves the items along with any associated &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/cpts_term.html#work_item"&gt;Work Items&lt;/a&gt; or &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/cpts_term.html#checkin_notes"&gt;Check-in Notes&lt;/a&gt; to a separate repository, though not the source control repository itself. &lt;/p&gt;  &lt;h4&gt;Shelving a set of pending changes&lt;/h4&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;In the &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/ba_vupend.html#pend_changes_window"&gt;Pending Changes view&lt;/a&gt;, click the down arrow icon and select &lt;strong&gt;Shelve&lt;/strong&gt;. &lt;/p&gt;      &lt;p&gt;&lt;img height="193" src="http://help.teamprise.com/2.1/topic/com.teamprise.help/images/shelveset_01.png" width="580" /&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;In the &lt;strong&gt;Shelve - Source Files&lt;/strong&gt; dialog box, type a name for your shelveset, any comments to help you remember the set, and, if necessary, deselect any file(s) you do not want to include in the shelveset. You can also associate a &lt;strong&gt;Work Item&lt;/strong&gt; with your shelveset. For more information, see &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/adv_workitems_associate.html"&gt;Associating Work Items with Changesets and Shelvesets.&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&lt;img src="http://help.teamprise.com/2.1/topic/com.teamprise.help/images/shelveset_02.png" /&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;Finding and Unshelving a set of pending changes&lt;/h4&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;In the &lt;strong&gt;Pending Changes &lt;/strong&gt;view, select the down arrow icon and click &lt;strong&gt;Unshelve&lt;/strong&gt;. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a name="unshelve"&gt;&lt;/a&gt;      &lt;p&gt;In the &lt;strong&gt;Unshelve&lt;/strong&gt; dialog type the name of any team member with a TFS workspace and click &lt;strong&gt;Find&lt;/strong&gt; to retrieve a list of that team member's shelvesets. In the example below we are retrieving one of our own shelvesets, and selecting the one we created above. Click &lt;strong&gt;Unshelve&lt;/strong&gt;. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;Viewing Shelveset Details&lt;/h4&gt;  &lt;p&gt;To view details of a saved shelveset:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;In the Unshelve dialog, after you have completed your search (Steps 1 -2 above), right-click a shelveset from the list and select &lt;strong&gt;Details&lt;/strong&gt;. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;a name="details"&gt;&lt;/a&gt;In the &lt;strong&gt;Shelveset Details&lt;/strong&gt; dialog, right-click a file and select from the popup menu. By selecting View, the shelved file opens in your Eclipse editor window where you can examine it before unshelving it. You also have the option to use the compare editor. For more information on this option, see &lt;a href="http://help.teamprise.com/2.1/topic/com.teamprise.help/plugindoc/ver_compare.html"&gt;Comparing versions &lt;/a&gt;.&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2278857149911721195?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2278857149911721195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2278857149911721195' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2278857149911721195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2278857149911721195'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/03/shelving-your-code-in-tfs.html' title='Shelving your code in TFS'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4416370655923096329</id><published>2008-02-28T21:45:00.001-08:00</published><updated>2008-02-28T22:00:31.440-08:00</updated><title type='text'>File Upload AJAX V 1.2</title><content type='html'>&lt;p&gt;As you know that ASP.Net File Upload control can not be placed in multi view. If you put your file upload inside the multi view. You will lost your content when the multi view change the active view.&lt;/p&gt;  &lt;p&gt;But the good news is there is Open source control called File Upload Ajax which in V1.2 can be placed inside Wizard, Multi View, invisible Panels, hidden divs, etc.&lt;/p&gt;  &lt;p&gt;Download the control @ &lt;a title="http://www.codeplex.com/fileuploadajax/Release/ProjectReleases.aspx?ReleaseId=8061" href="http://www.codeplex.com/fileuploadajax/Release/ProjectReleases.aspx?ReleaseId=8061"&gt;http://www.codeplex.com/fileuploadajax/Release/ProjectReleases.aspx?ReleaseId=8061&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And try this.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add your FUA in your project&lt;/li&gt;    &lt;li&gt;Register in your page or in web.config&lt;/li&gt;    &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;lt;%@ Register Assembly=&lt;span style="color: #006080"&gt;&amp;quot;FUA&amp;quot;&lt;/span&gt; Namespace=&lt;span style="color: #006080"&gt;&amp;quot;Subgurim.Controles&amp;quot;&lt;/span&gt; TagPrefix=&lt;span style="color: #006080"&gt;&amp;quot;cc1&amp;quot;&lt;/span&gt; %&amp;gt;&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Add your Update panel, Multiview and file upload&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;lt;asp:UpdatePanel ID=&lt;span style="color: #006080"&gt;&amp;quot;up&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #006080"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;ContentTemplate&amp;gt;&lt;br /&gt;    &amp;lt;asp:MultiView ID=&lt;span style="color: #006080"&gt;&amp;quot;multiPages&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #006080"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; ActiveViewIndex=&lt;span style="color: #006080"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;asp:View ID=&lt;span style="color: #006080"&gt;&amp;quot;v1&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #006080"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/asp:View&amp;gt;&lt;br /&gt;        &amp;lt;asp:View ID=&lt;span style="color: #006080"&gt;&amp;quot;v2&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #006080"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;            upload:&lt;br /&gt;            &amp;lt;cc1:FileUploaderAJAX ID=&lt;span style="color: #006080"&gt;&amp;quot;FileUploaderAJAX1&amp;quot;&lt;/span&gt; runat=&lt;span style="color: #006080"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; MaxFiles=&lt;span style="color: #006080"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; Directory_CreateIfNotExists=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; File_RenameIfAlreadyExists=&lt;span style="color: #006080"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/asp:View&amp;gt;&lt;br /&gt;    &amp;lt;/asp:MultiView&amp;gt;&lt;br /&gt;    &amp;lt;/ContentTemplate&amp;gt;&lt;br /&gt;&amp;lt;/asp:UpdatePanel&amp;gt;&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Add Code behind code&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (FileUploaderAJAX1.IsPosting)&lt;br /&gt;    {&lt;br /&gt;        HttpPostedFileAJAX pf = FileUploaderAJAX1.PostedFile;&lt;br /&gt;        FileUploaderAJAX1.SaveAs(&lt;span style="color: #006080"&gt;&amp;quot;~/upload&amp;quot;&lt;/span&gt;, pf.FileName);         &lt;br /&gt;    }&lt;br /&gt;}   &lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4416370655923096329?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4416370655923096329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4416370655923096329' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4416370655923096329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4416370655923096329'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/file-upload-ajax-v-12.html' title='File Upload AJAX V 1.2'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4227437551719226701</id><published>2008-02-26T16:43:00.001-08:00</published><updated>2008-02-26T16:43:46.511-08:00</updated><title type='text'>Put ConfigSections on the top</title><content type='html'>&lt;p&gt;Today, I just find the problem why my code can not detect my custom config sections. because I put config sections after &amp;lt;AppSettings&amp;gt; -)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4227437551719226701?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4227437551719226701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4227437551719226701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4227437551719226701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4227437551719226701'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/put-configsections-on-top.html' title='Put ConfigSections on the top'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1117945727371639081</id><published>2008-02-26T16:42:00.001-08:00</published><updated>2008-02-26T16:42:27.882-08:00</updated><title type='text'>Use Ctrl + . to Resolve in VS2008</title><content type='html'>&lt;p&gt;Use Ctrl + . when you notice red underscore to Select a Resolve solution for you&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1117945727371639081?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1117945727371639081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1117945727371639081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1117945727371639081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1117945727371639081'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/use-ctrl-to-resolve-in-vs2008.html' title='Use Ctrl + . to Resolve in VS2008'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4119799822765794598</id><published>2008-02-20T22:26:00.001-08:00</published><updated>2008-02-20T22:28:39.545-08:00</updated><title type='text'>Live Writer for Coder</title><content type='html'>&lt;p&gt;These are plugins which will help me to write better content&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;CodeSnippetSetup.msi - Wrap your code into a container&lt;/li&gt;    &lt;li&gt;vspaste.msi - Copy paste from Visual studio&lt;/li&gt; &lt;/ul&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; HelloClass&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; HelloWorld()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #008000"&gt;//Hi I just found this plugin makes our live easier for writing a blog...&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4119799822765794598?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4119799822765794598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4119799822765794598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4119799822765794598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4119799822765794598'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/live-writer-for-coder.html' title='Live Writer for Coder'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1770350638795314001</id><published>2008-02-13T14:56:00.000-08:00</published><updated>2008-03-03T23:11:25.658-08:00</updated><title type='text'>Improve your AJAX Performance</title><content type='html'>Just quick note what I just got this morning from RDN with Damian.  &lt;br /&gt;  &lt;br /&gt;  &lt;ol&gt;   &lt;li&gt;Disable compilation debug mode into false compilation debug=&amp;quot;false&amp;quot;     &lt;br /&gt;- This will decrease the javascript code downloaded from ajax frameworks      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;If you don't use update panel, just using control toolkit,     &lt;br /&gt;disable partial rendering on Script Manager      &lt;br /&gt;EnablePartialRendering=&amp;quot;false&amp;quot;      &lt;br /&gt;- This improve the process for common postback, without checking update panel      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Try to saperate update panel as small as possible and put UpdateMode=&amp;quot;Conditional&amp;quot;.     &lt;br /&gt;this will not send back other update panel content on partial rendering.      &lt;br /&gt;By Default it sets to &lt;span style="font-weight: bold"&gt;Always &lt;/span&gt;means it will send the content even not rendered.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;For using Not friendly AJAX control such as Telerik, Reporting Services Viewer which can not use update panel to do partial postback.     &lt;br /&gt;You may put it into partial postback but add an attribute in Update Panel ChildrenAsTriggers=&amp;quot;false&amp;quot;. This will perform partial postback but not update your panel.      &lt;br /&gt;      &lt;br /&gt;so to update another panel you can do manually __doPostback(%= ID%, ...) or just handle it in the control.      &lt;br /&gt;      &lt;br /&gt;The ChildrenAsTriggers property determines whether postbacks from a child ontrol in an UpdatePanel result in its contents being refreshed. By default, this property is set to True and can be set to False only when the UpdateMode is set to conditional. Attempting to do so without this condition results in an InvalidOperationException being thrown by the ScriptManager during the page&amp;#8217;s PreRender event.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In my experience I also turn off EnableViewState and It works fine, but I don't know if this improve the performance&lt;/li&gt; &lt;/ol&gt;  &lt;br /&gt;And Don't forget to use Web Development Helper for IE , but before that you may need to install IE Developer tool  &lt;br /&gt;&lt;a href="http://msmvps.com/blogs/paulomorgado/archive/2007/02/18/developer-tools-for-internet-explorer.aspx"&gt;http://msmvps.com/blogs/paulomorgado/archive/2007/02/18/developer-tools-for-internet-explorer.aspx&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1770350638795314001?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1770350638795314001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1770350638795314001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1770350638795314001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1770350638795314001'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/improve-your-ajax-performance.html' title='Improve your AJAX Performance'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-431573675981594484</id><published>2008-02-12T21:44:00.000-08:00</published><updated>2008-02-12T22:28:21.962-08:00</updated><title type='text'>KeyValueConfigurationElement VS NameValueConfigurationElement</title><content type='html'>After checking on the description form MSDN, &lt;a href="http://msdn2.microsoft.com/en-us/library/system.configuration.namevalueconfigurationelement%28VS.80%29.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.configuration.namevalueconfigurationelement(VS.80).aspx&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;It is written that&lt;br /&gt;"&lt;br /&gt;There is a difference between the &lt;b&gt;NameValueConfigurationElement&lt;/b&gt; class and &lt;a id="ctl00_rs1_mainContentContainer_ctl23" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe17263_c|ctl00_rs1_mainContentContainer_ctl23',this);" href="http://msdn2.microsoft.com/en-us/library/ms134566%28VS.80%29.aspx"&gt;KeyValueConfigurationElement&lt;/a&gt; class. The &lt;b&gt;NameValueConfigurationElement&lt;/b&gt; class does not require the first string to be unique, whereas &lt;b&gt;KeyValueConfigurationElement&lt;/b&gt; class requires the first string to be a key, and therefore unique in the collection.&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;However when I try to test it, it seems that&lt;br /&gt;&lt;ol&gt;&lt;li&gt;NameValue also can not display duplicate Names in the collection moreover if the name is the same but the value is different , it will throw an error message which says that name has already has the value.&lt;/li&gt;&lt;li&gt;On the other hand KeyPair, also can not have duplicate keys but if there is duplicate key but different values, it will be override with the last values. There is no error message return.&lt;/li&gt;&lt;li&gt;KeyPair collection will be sorted , I guess it similar with Hashtable collection but NameValue is not sorted.&lt;/li&gt;&lt;li&gt;KeyPair is case sensitive so Key1 and key1 will be consider the same key&lt;br /&gt;but Namevalue is incase sensitive Name1 and name1 will be consider different name&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;For solving this problem, I have build my custom collection - can be downloaded at&lt;br /&gt;&lt;a href="http://kkurni.googlepages.com/KKurni.CustomConfigurationElementCol.rar"&gt;http://kkurni.googlepages.com/KKurni.CustomConfigurationElementCol.rar&lt;/a&gt;&lt;br /&gt;&lt;namevalues&gt;&lt;add name="name 1" value="value1"&gt;&lt;/add&gt;&lt;/namevalues&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-431573675981594484?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/431573675981594484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=431573675981594484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/431573675981594484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/431573675981594484'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/keyvalueconfigurationelement-vs.html' title='KeyValueConfigurationElement VS NameValueConfigurationElement'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5814102997497825636</id><published>2008-02-12T21:26:00.000-08:00</published><updated>2008-02-12T21:43:52.715-08:00</updated><title type='text'>IConfigurationSectionHandler is deprecated on .NET 2.0</title><content type='html'>I just heard a bad news while reading MCTS Book and MSDN.&lt;br /&gt;&lt;br /&gt;It said that IConfugurationSectionHandler is deprecated on .Net 2.0.&lt;br /&gt;&lt;br /&gt;We need to inherits from ConfigurationSection instead of implementing IConfigurationSectionHandler.&lt;br /&gt;&lt;br /&gt;Somehow it is easier using ConfigurationSection but it is less customization.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;We can not have CDATA or text Element anymore. All value need to be placed on attribute.&lt;br /&gt;Otherwise it will throw this exception&lt;br /&gt;"The configuration section cannot contain a CDATA or text element."&lt;br /&gt;&lt;br /&gt;If implementing IConfigurationSectionHandler we can easily using &lt;span style="font-weight: bold;"&gt;XmlElement &lt;/span&gt;Declaration . &lt;span style="font-weight: bold;"&gt;[XmlElement("ElementName")]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;for multiple element values , We need to write &lt;span style="font-weight: bold;"&gt;ConfigurationElementCollection.&lt;br /&gt;&lt;/span&gt;&lt;summary&gt;&lt;something&gt;&lt;add value="test"&gt;&lt;add value="test"&gt;&lt;/add&gt;&lt;br /&gt;   public class ValueCollection : ConfigurationElementCollection&lt;br /&gt;   {&lt;br /&gt;       protected override ConfigurationElement CreateNewElement()&lt;br /&gt;       {&lt;br /&gt;           return new ValueElement();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       protected override object GetElementKey(ConfigurationElement element)&lt;br /&gt;       {&lt;br /&gt;           return ((ValueElement)element).Value;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;summary&gt;&lt;/summary&gt;&lt;br /&gt;   public class ValueElement : ConfigurationElement&lt;br /&gt;   {&lt;br /&gt;       [ConfigurationProperty("value")]&lt;br /&gt;       public string Value&lt;br /&gt;       {&lt;br /&gt;           get { return (String)this["value"]; }&lt;br /&gt;           set { this["value"] = value; }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;[ConfigurationProperty("domains")]&lt;br /&gt;       public ValueCollection Domains&lt;br /&gt;       {&lt;br /&gt;           get { return (ValueCollection)this["domains"]; }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;Or you can use default configuration collection such as NameValueConfigurationCollection or KeyValueConfigurationCollection&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But If using IConfigurationSectionHandler we can just use XmlElementAttribute&lt;br /&gt;[XmlElement("ExtractColumn")]&lt;br /&gt;public ExtractColumn[] ExtractColumns;&lt;br /&gt;&lt;br /&gt;&lt;/add&gt;&lt;/something&gt;&lt;/summary&gt;&lt;/li&gt;&lt;/ol&gt;====================&lt;br /&gt;However The nice thing of using ConfigurationSection is&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Standard .Net Configuration&lt;/li&gt;&lt;li&gt;Easier to validate and better error Messages&lt;br /&gt; [ConfigurationProperty("myAttrib1", DefaultValue = "test", IsRequired = true)]&lt;br /&gt; [StringValidator(InvalidCharacters = "~!@#$%^&amp;amp;*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)]&lt;br /&gt;   &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5814102997497825636?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5814102997497825636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5814102997497825636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5814102997497825636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5814102997497825636'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/iconfigurationsectionhandler-is.html' title='IConfigurationSectionHandler is deprecated on .NET 2.0'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4394048733191937913</id><published>2008-02-10T18:08:00.000-08:00</published><updated>2008-02-10T18:10:25.266-08:00</updated><title type='text'>MVC Framework for ASP.NET is coming</title><content type='html'>From my previous blog, I just read that Microsoft will provide MVC Framework for AsP.Net Developer.&lt;br /&gt;&lt;br /&gt;Here is the good link for MVC Framework&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4394048733191937913?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4394048733191937913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4394048733191937913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4394048733191937913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4394048733191937913'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/mvc-framework-for-aspnet-is-coming.html' title='MVC Framework for ASP.NET is coming'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7484685449535382184</id><published>2008-02-06T17:12:00.000-08:00</published><updated>2008-02-06T17:23:06.588-08:00</updated><title type='text'>MVC VS MVP vs Passive View</title><content type='html'>As you know MVC is a Model View Controller Pattern. which focus on the controller to update the view trigger by event when model changed/ updated.&lt;br /&gt;&lt;br /&gt;MVP is the variation of MVC where controller can hang together with View (Called Presenter).&lt;br /&gt;This makes the UI more interactive. such as in Asp.net control, user can interact with the model interactively using the presenter.&lt;br /&gt;&lt;br /&gt;Passive view is also the variation of both. It will enhance the testability. It does not have dependencies with View and Controller and all user responses are handled by the controller&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7484685449535382184?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7484685449535382184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7484685449535382184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7484685449535382184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7484685449535382184'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/mvc-vs-mvp-vs-passive-view.html' title='MVC VS MVP vs Passive View'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5122546195723461941</id><published>2008-02-06T16:34:00.001-08:00</published><updated>2008-02-06T16:37:41.794-08:00</updated><title type='text'>Free sorting with CSS Friendly and Object Datasource</title><content type='html'>I just find a good article where you can implement sorting and paging easily using object data source.&lt;br /&gt;&lt;br /&gt;Object data source will not do binding everytime postback anymore and It instantiate inside your page control.&lt;br /&gt;&lt;a href="http://damianpedwards.spaces.live.com/blog/cns%21A079DE667E1958B3%21567.entry#post"&gt;http://damianpedwards.spaces.live.com/blog/cns!A079DE667E1958B3!567.entry#post&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All the presentation is implemented using CSS Friendly.&lt;br /&gt;&lt;a href="http://damianpedwards.spaces.live.com/blog/cns%21A079DE667E1958B3%21562.entry"&gt;http://damianpedwards.spaces.live.com/blog/cns!A079DE667E1958B3!562.entry&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5122546195723461941?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5122546195723461941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5122546195723461941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5122546195723461941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5122546195723461941'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/free-sorting-with-css-friendly-and.html' title='Free sorting with CSS Friendly and Object Datasource'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8705829797220647617</id><published>2008-02-05T16:42:00.001-08:00</published><updated>2008-02-05T16:46:00.397-08:00</updated><title type='text'>Trigger Javascript inside Ajax Partial Postback called</title><content type='html'>To run / trigger a javascript after ajax partial postback, We need to register our script in our code behind.&lt;br /&gt;&lt;br /&gt;Here is the code :&lt;br /&gt;//To find your script manager which belong to master pages&lt;br /&gt;ScriptManager sm = Master.FindControl("ScriptManager1") as ScriptManager;&lt;br /&gt;&lt;br /&gt;ScriptManager.RegisterStartupScript(this, this.GetType(), "title script", string.Format("javascript:window.open(\"{0}\",\"_blank\");", "kajaxnet.blogspot.com"), true);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8705829797220647617?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8705829797220647617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8705829797220647617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8705829797220647617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8705829797220647617'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/trigger-javascript-inside-ajax-partial.html' title='Trigger Javascript inside Ajax Partial Postback called'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8257183997176107191</id><published>2008-02-04T21:14:00.000-08:00</published><updated>2008-02-04T21:23:50.649-08:00</updated><title type='text'>Dig into Data Source</title><content type='html'>Data Source (Object Data Source and Sql Data Source)  in .net 2.0 includes free sorting and paging. Here is a very good example the benefit of using data source.&lt;br /&gt;&lt;a href="http://damianpedwards.spaces.live.com/blog/cns%21A079DE667E1958B3%21562.entry"&gt;http://damianpedwards.spaces.live.com/blog/cns!A079DE667E1958B3!562.entry&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using Data Source we can use CSS friendly to structure and display our sorting and paging nicely.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However there is overhead when you implementing AJAX type of work.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;DataSource will trigger your select method, everytime, it is postback.&lt;br /&gt;If you use Data binding using data table / other data source , you can control manually so that it only bind when you need to refresh your data or there is data changes.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Object Data Source is isolated from your page control. because It create a new instance of data source every time it postback. so you can not share your data into your page control. If you want to share you need to share it using session/ cache.  View state/ class variable can not be shared.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8257183997176107191?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8257183997176107191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8257183997176107191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8257183997176107191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8257183997176107191'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/dig-into-data-source.html' title='Dig into Data Source'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6364203759802805907</id><published>2008-02-04T21:08:00.000-08:00</published><updated>2008-02-04T21:13:51.490-08:00</updated><title type='text'>Dynamically sorting your data easily using Linq &amp; Lamda</title><content type='html'>Here is 1 line of code to sort data dynamically based on sorting parameter A&lt;br /&gt;&lt;br /&gt;YourProducts.OrderByDescending(p =&gt; p.GetType().GetProperty(A.GetValue(c,null))&lt;br /&gt;&lt;br /&gt;It will get your property value of Product class dynamically.&lt;br /&gt;&lt;br /&gt;Here are some example to use lamda expression in C# 3.0:&lt;br /&gt;&lt;p class="Code"&gt;x =&gt; x + 1&lt;span style=""&gt;                                      &lt;/span&gt;// Implicitly typed, expression body&lt;/p&gt;  &lt;p class="Code"&gt;x =&gt; { return x + 1; }&lt;span style=""&gt;              &lt;/span&gt;// Implicitly typed, statement body&lt;/p&gt;  &lt;p class="Code"&gt;(int x) =&gt; x + 1&lt;span style=""&gt;                          &lt;/span&gt;// Explicitly typed, expression body&lt;/p&gt;  &lt;p class="Code"&gt;(int x) =&gt; { return x + 1; }&lt;span style=""&gt;  &lt;/span&gt;// Explicitly typed, statement body&lt;/p&gt;  &lt;p class="Code"&gt;(x, y) =&gt; x * y&lt;span style=""&gt;                           &lt;/span&gt;// Multiple parameters&lt;/p&gt;  &lt;span style=";font-family:&amp;quot;;font-size:11;"  &gt;() =&gt; Console.WriteLine()&lt;span style=""&gt;                      &lt;/span&gt;// No parameters&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6364203759802805907?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6364203759802805907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6364203759802805907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6364203759802805907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6364203759802805907'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/dynamically-sorting-your-data-easily.html' title='Dynamically sorting your data easily using Linq &amp; Lamda'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-8243878481662709081</id><published>2008-02-03T20:56:00.000-08:00</published><updated>2008-02-03T21:05:22.686-08:00</updated><title type='text'>TFS vs Others</title><content type='html'>Here is some of the features that I found in TFS but not in other version controls (CVS and SVN)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Rename&lt;/span&gt; - It will automatically rename your file without removing from CVS / SVN.&lt;br /&gt;Probably, Visual SVN also has this feature, But I never test it.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When Adding a project into source controls, It will efficiently exclude the &lt;span style="font-weight: bold;"&gt;bin &lt;/span&gt;folder and other files that will dynamically created. This will make source control very efficient. On the other hand, if using CVS/ SVN, you need to exclude the bin folder manually.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TFS knows .net source files better than other source control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TFS has integrated with VS nicely. more than Visual SVN.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TFS has integrated with Development Pattern methodology such as &lt;span style="font-weight: bold;"&gt;MSF Agile&lt;/span&gt; and CMMI&lt;br /&gt;More over you can add your custom development pattern and process.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It integrate with Sharepoint portal which enhance the functionality as document management and documentation process such as WIKI and Blogs.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-8243878481662709081?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/8243878481662709081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=8243878481662709081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8243878481662709081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/8243878481662709081'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/tfs-vs-others.html' title='TFS vs Others'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7239842662082500540</id><published>2008-02-03T20:46:00.000-08:00</published><updated>2008-02-03T20:56:13.648-08:00</updated><title type='text'>TFS on VS 2008 Beta 2 - Adding a lost files</title><content type='html'>After playing around with TFS on VS 2008, I found a difficulties to add a new file which I have created outside VS 2008.&lt;br /&gt;&lt;br /&gt;In another scenario may happen if you want to recover unintentionally delete and at the same time merge with the previous version.&lt;br /&gt;&lt;br /&gt;Somehow, It displays an error after I merge my lost file which says that I need to choose the server version or my version. But I does not have an option to do that.&lt;br /&gt;&lt;br /&gt;However after fiddling with it for 1 hour, Finally I found the easiest way to dealing with those issues.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;In source control , Right Click on directory which contains your new file or file that you want to recover.&lt;/li&gt;&lt;li&gt;select Compare.&lt;/li&gt;&lt;li&gt;TFS will list all new files or lost files and you can easily added into your source control.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7239842662082500540?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7239842662082500540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7239842662082500540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7239842662082500540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7239842662082500540'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/tfs-on-vs-2008-beta-2-adding-lost-files.html' title='TFS on VS 2008 Beta 2 - Adding a lost files'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6833586484801821720</id><published>2008-02-03T20:38:00.000-08:00</published><updated>2008-02-03T20:45:53.522-08:00</updated><title type='text'>Load Testing on AJAX Application</title><content type='html'>Sometimes we need to perform a web test and load test for AJAX Application especially in partial postback.&lt;br /&gt;&lt;br /&gt;VS 2005 Test edition / Team System provides a functionality to perform a web test. However the limitation is , it can not capture a partial postback.&lt;br /&gt;&lt;br /&gt;For that reason we need one of the web capture tool called fiddler to capture all ajax request and response and we save it as Visual studio web test. and After that we can perform our ajax Load Test using VS 2005 Test edition / Team system.&lt;br /&gt;&lt;br /&gt;Here are the steps&lt;br /&gt; &lt;p class="MsoNormal"&gt;Before we perform load test, we need to create a web test first.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;You may create multiple web tests to perform different scenario test cases.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In order to test an &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;AJAX&lt;/st1:place&gt;&lt;/st1:City&gt;, you need to capture using &lt;b style=""&gt;Fiddler.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Here are the steps:&lt;/p&gt;  &lt;ol style="margin-top: 0cm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Open      Fiddler application.&lt;br /&gt;     &lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;       &lt;v:stroke joinstyle="miter"&gt;       &lt;v:formulas&gt;        &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;        &lt;v:f eqn="sum @0 1 0"&gt;        &lt;v:f eqn="sum 0 0 @1"&gt;        &lt;v:f eqn="prod @2 1 2"&gt;        &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;        &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;        &lt;v:f eqn="sum @0 0 1"&gt;        &lt;v:f eqn="prod @6 1 2"&gt;        &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;        &lt;v:f eqn="sum @8 21600 0"&gt;        &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;        &lt;v:f eqn="sum @10 21600 0"&gt;       &lt;/v:formulas&gt;       &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;       &lt;o:lock ext="edit" aspectratio="t"&gt;      &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:431.25pt;"&gt;       &lt;v:imagedata src="file:///C:\DOCUME~1\K76C9~1.KUR\LOCALS~1\Temp\msohtml1\01\clip_image001.png" title=""&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Open      Internet Explorer and perform a scenario of your test. Fiddler will      automatically log your request and response even for partial Post back /&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;AJAX&lt;/st1:City&gt;&lt;/st1:place&gt;&lt;br /&gt;     &lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" style="'width:431.25pt;"&gt;       &lt;v:imagedata src="file:///C:\DOCUME~1\K76C9~1.KUR\LOCALS~1\Temp\msohtml1\01\clip_image003.png" title=""&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;      &lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" style="'width:431.25pt;"&gt;       &lt;v:imagedata src="file:///C:\DOCUME~1\K76C9~1.KUR\LOCALS~1\Temp\msohtml1\01\clip_image005.png" title=""&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Select All fiddler capture session responses and requests&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;On Fiddler menu File&gt;Save&gt;Session(s)&gt;as &lt;b style=""&gt;Visual      Studio Web Test&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Import this web test into your VS Test project.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;And it's ready to perform load test by creating a load test file inside VS&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Note: You may set a windows credential in your web test.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There is an icon on the top tool bar of your web test.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6833586484801821720?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6833586484801821720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6833586484801821720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6833586484801821720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6833586484801821720'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/02/load-testing-on-ajax-application.html' title='Load Testing on AJAX Application'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1504483444520927053</id><published>2008-01-31T22:14:00.000-08:00</published><updated>2008-01-31T22:33:09.351-08:00</updated><title type='text'>Silverlight 2.0 is coming</title><content type='html'>&lt;h3&gt;&lt;span class="mw-headline"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Silverlight 2.0 is coming. It' s originally called Silverlight 1.1. I don't why they changed the name into 2.0. rrr....&lt;/p&gt;&lt;br /&gt;The cool thing in &lt;span style="font-weight: bold;"&gt;Silverlight 2.0 &lt;/span&gt; is :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Include CLR as .Net Framework 3.0 (so you can use code behind in Vb.net / C#&lt;br /&gt;Base Class Library (BCL) provides classes for collections, reflection, regex, string handling, data access&lt;a href="http://en.wikipedia.org/wiki/Data_access" title="Data access"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dynamic Language runtime in media files&lt;br /&gt;The first available languages written for the DLR are Iron Python 2.0 and Managed JScript.&lt;br /&gt;Microsoft is also building Iron Ruby &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;and Dynamic Visual Basic (VBx) languages.&lt;br /&gt;&lt;br /&gt;Conversely, other .NET languages must be compiled ahead of time and delivered to Silverlight as .NET assemblies. The implementation of Managed JScript conforms to the ECMA Script 3.0 specification, and Microsoft claims that it is 250 times faster than interpreted JScript.&lt;br /&gt;http://weblogs.asp.net/scottgu/archive/2007/05/07/silverlight.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Extensible controls&lt;/li&gt;&lt;li&gt;XML Web Services - Data access over XML-based Web Service and WCF ( POX, REST, JSON ) &lt;a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation" title="Windows Communication Foundation"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Networking&lt;/li&gt;&lt;li&gt;LINQ API ( full support for LINQ to Objects and Expression Trees)&lt;/li&gt;&lt;li&gt;WPF model (Shapes, document, media and animation objects)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Limitation:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;The current release, the UI controls do not have support for databinding to any data source. But, Microsoft has clarified that the limitations are due to this being an early preview release. Future releases will add more than 20 UI controls  add two-way databinding support, and automated layout management as well as data manipulation controls such as data grid.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;http://blogs.msdn.com/somasegar/archive/2007/11/29/quick-update-on-silverlight.aspx&lt;br /&gt;&lt;/span&gt;&lt;sup id="_ref-SGSilverlight_0" class="reference"&gt;&lt;a href="http://en.wikipedia.org/wiki/Microsoft_Silverlight#_note-SGSilverlight" title=""&gt;&lt;br /&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1504483444520927053?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1504483444520927053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1504483444520927053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1504483444520927053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1504483444520927053'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/01/silverlight-20-is-coming.html' title='Silverlight 2.0 is coming'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6246043423794682529</id><published>2008-01-30T15:04:00.000-08:00</published><updated>2008-01-30T15:06:48.983-08:00</updated><title type='text'>Deferred Execution in LINQ</title><content type='html'>To boost the performance in Linq deferred execution, Linq has provided a nice method&lt;br /&gt;called &lt;span style="font-weight: bold;"&gt;ToArray() and ToList()&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;By using those method, you just need to execute query into database once and iterate locally through your array or list.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6246043423794682529?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6246043423794682529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6246043423794682529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6246043423794682529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6246043423794682529'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/01/deferred-execution-in-linq.html' title='Deferred Execution in LINQ'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6390310367606048257</id><published>2008-01-30T14:55:00.000-08:00</published><updated>2008-01-30T15:02:28.233-08:00</updated><title type='text'>Hibrenate - Lazy Initialization (could not initialize proxy - the owning session was closed)</title><content type='html'>&lt;p style="font-family: times new roman;"&gt;&lt;span style="font-size:100%;"&gt;Hibernate object relational mapping offers both lazy and non-lazy modes of object initialization. Non-lazy initialization retrieves an object and all of its related objects at load time. This can result in hundreds if not thousands of select statements when retrieving one entity. The problem is compounded when bi-directional relationships are used, often causing entire databases to be loaded during the initial request. Of course one could tediously examine each object relationship and manually remove those most costly, but in the end, we may be losing the ease of use benefit sought in using the ORM tool.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;Hibernate  proxies can be very handy if you have performance concerns, the idea is to load  the objects lazily as proxies and never hit the database. The proxies are  initialized meaning fetched from the database when they are first accessed,  however life is not so easy:) Whether there is a configured filter-interceptor  of spring to manage hibernate sessions or you manually take care of the  session’s life cycle, once the session was closed, the proxies attached to that  will lead to a proxy initialization error if they are accessed later.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;The reason  is tricky, a hibernate session is created and some data is loaded to the session  as a proxy, later the session is closed without an access to the proxy occurred.  Then proxy is decided to be used and accessed, at this point one may get the  error “no session or session was closed” since the session which the proxy is  attached is “closed”. In order to deal with this situation there are some  solutions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;1)  Reloading the proxy “before” using it in the new session, this will attach the  new proxy to the new session.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;2) Using  static method Hibernate.initialize(obj) before the owning session was closed,  this will hit the db and replace the proxy with the actual data.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;3) Using a  Session lock via Session.lock(obj,lockmode), this will reattach the proxy to the  new session.&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: times new roman;"&gt;4) Or you just disable lazy initialization mode by mark the flag into false (lazy=false)&lt;br /&gt;&lt;span style=";font-size:100%;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: times new roman;"&gt;&lt;span style=";font-size:100%;" &gt;As you see  this proxy business isn’t simple as it seems but I belive once you learn how to  use them they are the best way to optimize the performance.In the end who has  not the need for speed?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6390310367606048257?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6390310367606048257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6390310367606048257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6390310367606048257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6390310367606048257'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/01/hibrenate-lazy-initialization-could-not.html' title='Hibrenate - Lazy Initialization (could not initialize proxy - the owning session was closed)'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4001419290117349433</id><published>2008-01-07T18:45:00.000-08:00</published><updated>2008-01-07T19:14:02.336-08:00</updated><title type='text'>Abstract VS Interface</title><content type='html'>&lt;b dtid="1407374883553280"&gt;multiple inheritance&lt;/b&gt;&lt;br /&gt;&lt;b dtid="1407374883553281"&gt;INTERFACE-&lt;/b&gt;A class may implement several  interfaces. &lt;br /&gt;&lt;b dtid="1407374883553283"&gt;ABSTRACT-&lt;/b&gt;A class may extend only one  &lt;span class="keyword" dtid="1407374883553284"&gt;abstract&lt;/span&gt; class.  &lt;br /&gt;&lt;br /&gt;&lt;b dtid="1407374883553287"&gt;default implementation&lt;/b&gt; &lt;br /&gt;&lt;b dtid="1407374883553289"&gt;INTERFACE-&lt;/b&gt; cannot provide any code at  all, much less default code. &lt;br /&gt;&lt;b dtid="1407374883553291"&gt;ABSTRACT-&lt;/b&gt; can provide complete code,  default code, and/or just stubs that have to be overridden. &lt;br /&gt;&lt;br /&gt;&lt;b dtid="1407374883553294"&gt;is-a vs -able or can-do&lt;/b&gt;&lt;br /&gt;&lt;b dtid="1407374883553295"&gt;INTERFACE-&lt;/b&gt; are often used to describe the  peripheral abilities of a class, not its central identity, e.g. an &lt;span class="jclass" dtid="1407374883553296"&gt;Automobile&lt;/span&gt; class might  implement the &lt;span class="jclass" dtid="1407374883553297"&gt;Recyclable&lt;/span&gt; &lt;span class="keyword" dtid="1407374883553298"&gt;interface&lt;/span&gt;, which could apply to many  otherwise totally unrelated objects.&lt;br /&gt;&lt;b dtid="1407374883553299"&gt;ABSTRACT-&lt;/b&gt;defines the core identity of its  descendants. If you defined a Dog &lt;span class="keyword" dtid="1407374883553300"&gt;abstract&lt;/span&gt; class then Datamation  descendants &lt;b dtid="1407374883553301"&gt;are&lt;/b&gt; Dogs, they are not  merely dog able. Implemented interfaces enumerate the general things a class can  do, not the things a class is.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="1407374883553302"&gt;plug-in&lt;/b&gt;&lt;br /&gt;&lt;b dtid="1407374883553303"&gt;INTERFACE-&lt;/b&gt; You can write a new  replacement module for an &lt;span class="keyword" dtid="1407374883553304"&gt;interface&lt;/span&gt; that contains not one stick  of code in common with the existing implementations. When you implement the  interface, you start from scratch without any default implementation. You have  to obtain your tools from other classes; nothing comes with the &lt;span class="keyword" dtid="1407374883553305"&gt;interface&lt;/span&gt; other than a  few constants. This gives you freedom to implement a radically different  internal design.&lt;br /&gt;&lt;b dtid="1407374883553306"&gt;ABSTRACT-&lt;/b&gt;You  must use the abstract class as-is for the code base, with all its attendant  baggage, good or bad. The &lt;span class="keyword" dtid="1407374883553307"&gt;abstract&lt;/span&gt; class author has imposed  structure on you. Depending on the cleverness of the author of the &lt;span class="keyword" dtid="1407374883553308"&gt;abstract&lt;/span&gt; class, this  may be good or bad.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="1407374883553309"&gt;homogeneity&lt;/b&gt;&lt;br /&gt;&lt;b dtid="1407374883553310"&gt;INTERFACE-&lt;/b&gt; If all the various  implementations share is the method signatures, then an &lt;span class="keyword" dtid="1407374883553311"&gt;interface&lt;/span&gt; works best.&lt;br /&gt;&lt;b dtid="1407374883553312"&gt;ABSTRACT-&lt;/b&gt;If the various implementations  are all of a kind and share a common status and behaviour, usually an &lt;span class="keyword" dtid="1407374883553313"&gt;abstract&lt;/span&gt; class works  best. Another issue that’s important is what I call "heterogeneous vs.  homogeneous." If implementors/subclasses are homogeneous, tend towards an &lt;span class="keyword" dtid="1407374883553314"&gt;abstract&lt;/span&gt; base class.  If they are heterogeneous, use an &lt;span class="keyword" dtid="1407374883553315"&gt;interface&lt;/span&gt;. (Now all I have to do is  come up with a good definition of hetero/homo-generous in this context.) If the  various objects are all of-a-kind, and share a common state and behavior, then  tend towards a common base class. If all they share is a set of method  signatures, then tend towards an &lt;span class="keyword" dtid="1407374883553316"&gt;interface&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="1407374883553317"&gt;maintenance&lt;/b&gt;&lt;br /&gt;&lt;b dtid="1407374883553318"&gt;INTERFACE-&lt;/b&gt; If your client code talks only  in terms of an &lt;span class="keyword" dtid="1407374883553319"&gt;interface&lt;/span&gt;, you can easily change the  concrete implementation behind it, using a factory method.&lt;br /&gt;&lt;b dtid="1407374883553320"&gt;ABSTRACT-&lt;/b&gt; Just like an &lt;span class="keyword" dtid="1407374883553321"&gt;interface&lt;/span&gt;, if your  client code talks only in terms of an &lt;span class="keyword" dtid="1407374883553322"&gt;abstract&lt;/span&gt; class, you can easily change  the concrete implementation behind it, using a factory method.&lt;br /&gt;&lt;br /&gt;&lt;b dtid="1407374883553323"&gt;adding functionality&lt;/b&gt;&lt;br /&gt;&lt;b dtid="1407374883553324"&gt;INTERFACE-&lt;/b&gt; If you add a new method to an  &lt;span class="keyword" dtid="1407374883553325"&gt;interface&lt;/span&gt;, you  must track down all implementations of that &lt;span class="keyword" dtid="1407374883553326"&gt;interface&lt;/span&gt; in the universe and provide  them with a concrete implementation of that method.&lt;br /&gt;&lt;b dtid="1407374883553327"&gt;ABSTRACT-&lt;/b&gt; If you add a new method to an  &lt;span class="keyword" dtid="1407374883553328"&gt;abstract&lt;/span&gt; class,  you have the option of providing a default implementation of it. Then all  existing code will continue to work without change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4001419290117349433?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4001419290117349433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4001419290117349433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4001419290117349433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4001419290117349433'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/01/abstract-vs-interface.html' title='Abstract VS Interface'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5363946504144095474</id><published>2008-01-03T15:37:00.000-08:00</published><updated>2008-01-03T16:12:09.520-08:00</updated><title type='text'>JBOSS for .Net Issue (505)</title><content type='html'>JBOSS has known issue when talking to .NET Client.&lt;br /&gt;&lt;br /&gt;You will receive this error.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The request failed with HTTP status 505: HTTP Version Not Supported.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This error happened because .NET does not implement HTTP 1.1 properly (specifically contiuations), therefore the only way  you can fix this is to force the client to use HTTP 1.0.&lt;br /&gt;&lt;br /&gt;You can enable in on Server Side / Client side.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;On Server Side:&lt;br /&gt;&lt;/span&gt;adding the following option (in bold) to your http connector tag in your tomcat server.xml file.    &lt;!-- A HTTP/1.1 Connector on port 8080 --&gt;&lt;br /&gt;      Connector port="8080" address="${jboss.bind.address}"&lt;br /&gt;         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"&lt;br /&gt;         emptySessionPath="true"&lt;br /&gt;         enableLookups="false" redirectPort="8443" acceptCount="100"&lt;br /&gt;         &lt;b&gt;restrictedUserAgents="^.*MS Web Services Client Protocol.*$"&lt;/b&gt;&lt;br /&gt;         connectionTimeout="20000" disableUploadTimeout="true"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;On Client Side:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Change &lt;span class="postbody"&gt; .NET webservice to use HTTP 1.0 by adding the following code to your proxy class.&lt;br /&gt;&lt;/span&gt;&lt;pre&gt; protected override System.Net.WebRequest GetWebRequest(Uri uri)&lt;br /&gt;        {&lt;br /&gt;            HttpWebRequest httpReq = (HttpWebRequest)base.GetWebRequest(uri);            &lt;br /&gt;            httpReq.ProtocolVersion = System.Net.HttpVersion.Version10;&lt;br /&gt;            return httpReq;&lt;br /&gt;        }&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5363946504144095474?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5363946504144095474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5363946504144095474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5363946504144095474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5363946504144095474'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/01/jboss-for-net-issue-505.html' title='JBOSS for .Net Issue (505)'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6928357490221666373</id><published>2008-01-03T15:13:00.000-08:00</published><updated>2008-01-03T15:17:19.683-08:00</updated><title type='text'>Debugging into System Code</title><content type='html'>I just find that we can not debug into system generated code because by default "Just My Code" is enabled.....&lt;br /&gt;&lt;br /&gt;To be able to debug a system generated code such as proxy/wsdl... you need to disable "Just My Code" inside debugging options.&lt;br /&gt;&lt;br /&gt;Steps:&lt;br /&gt;* Tool&gt;Options&gt;Debugging&gt;General&lt;br /&gt;* Untick Enable Just My Code (Managed Only)....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6928357490221666373?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6928357490221666373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6928357490221666373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6928357490221666373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6928357490221666373'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2008/01/debugging-into-system-code.html' title='Debugging into System Code'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1698058544621118863</id><published>2007-12-30T16:41:00.000-08:00</published><updated>2007-12-30T17:06:53.951-08:00</updated><title type='text'>Enhance Data View Performance using Asynchronous Method</title><content type='html'>Currently I find a way how to enhance a performance to view 10.000 records which taken from Web service layer.&lt;br /&gt;&lt;br /&gt;First of all, I can not using any caching because this data will change very often.&lt;br /&gt;Every time the user change something, I need to refresh the data.&lt;br /&gt;&lt;br /&gt;I can not use Sql Dependency because all the data are encapsulate on service layer.&lt;br /&gt;I can not perform paging on service layer because it is not provided to me.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, the only way is using Asynchronous Method.&lt;br /&gt;&lt;br /&gt;The idea is to display the first page of the records and start retrieving others data asynchronously.&lt;br /&gt;&lt;br /&gt;The next time the user want to perform, sorting, filtering or paging, It will force to finish all retreiving data.&lt;br /&gt;&lt;br /&gt;This algorithm will force using user thinking time in retreiving huge records rather than forcing user to wait retrieving huge records every time even they just want to see the first page records.&lt;br /&gt;&lt;br /&gt;Here is the Algorithm:&lt;br /&gt;=================================&lt;br /&gt;If ( ! IsPostback)&lt;br /&gt;{&lt;br /&gt;     * Clear Data set from session&lt;br /&gt;     * Retrieve 1st page only and bind to data grid with next/previous paging style&lt;br /&gt;     * Create a delegate to retrieve the rest of data&lt;br /&gt;     * Start asynchronous call with BeginInvoke.&lt;br /&gt;     * Store that delegate and IAsynResult into session.&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{   //( Postback) and user try to bind a data (Sorting, Paging, Filtering)&lt;br /&gt;    If (There still no data set in Session)&lt;br /&gt;    {&lt;br /&gt;          * Take delegate and IAsynResult&lt;br /&gt;          * Force delegate to finish by using EndInvoke(IAsynResult)&lt;br /&gt;          * Store the data set into Session.&lt;br /&gt;          * Bind to data grid with default paging style.&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;   {&lt;br /&gt;            * directly use data set from session and bind to data grid with default paging style.&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;===============================&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note: &lt;/span&gt;&lt;br /&gt;You may optimize this algorithm by getting a number of record first.&lt;br /&gt;If the number of records is less or equal then the number of first page records, just store that data into session and bind it to data grid with default paging style.&lt;br /&gt;You don't need to perform asynchronous call for this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The only weakness of this methodology is it will be more thread in your application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1698058544621118863?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1698058544621118863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1698058544621118863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1698058544621118863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1698058544621118863'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/12/enhance-data-view-performance-using.html' title='Enhance Data View Performance using Asynchronous Method'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1665373664087102412</id><published>2007-12-16T21:54:00.000-08:00</published><updated>2007-12-16T22:12:14.035-08:00</updated><title type='text'>Notify your custom application from CRM 3.0</title><content type='html'>This is one of the solution how you notify your application from Microsoft Dynamic CRM 3.0&lt;br /&gt;&lt;br /&gt;1. Add Javascripts to notify your application from CRM Custom forms.&lt;br /&gt;   a. Open CRM 3.0&lt;br /&gt;&lt;br /&gt;   b. Go To Settings/ Customization&lt;br /&gt;&lt;br /&gt;   c. Select what entity you need ( Example phone, email, ...)&lt;br /&gt;&lt;br /&gt;   d. Go to forms and view on the left tab after you open your entity&lt;br /&gt;&lt;br /&gt;   e. Select the forms you want to add the scripts.&lt;br /&gt;&lt;br /&gt;   f. click add properties.&lt;br /&gt;&lt;br /&gt;   g. There is 2 available event handler (OnSave and OnLoad)&lt;br /&gt;&lt;br /&gt;   h. Put your javascript there&lt;br /&gt;           for example : window.opener('Notify on save');&lt;br /&gt;&lt;br /&gt;   i. Don't forget to check enable this event before you save it.&lt;br /&gt;&lt;br /&gt;   j. You may preview it before publish the changes.&lt;br /&gt;&lt;br /&gt;   g. Don't forget to publish - Action/Publish.&lt;br /&gt;&lt;br /&gt;If you forget to publish, It will not take any changes you have made, even you have save it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1665373664087102412?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1665373664087102412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1665373664087102412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1665373664087102412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1665373664087102412'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/12/notify-your-custom-application-from-crm.html' title='Notify your custom application from CRM 3.0'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1741512530965680332</id><published>2007-12-14T18:59:00.000-08:00</published><updated>2007-12-14T19:00:40.369-08:00</updated><title type='text'>Better way to handle thread abort exception in Response.Redirect</title><content type='html'>&lt;span style="color: rgb(0, 0, 255);"&gt;private bool&lt;/span&gt; m_bIsTerminating = &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;br /&gt;  &lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;protected void&lt;/span&gt; Page_Load(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, &lt;span style="color: rgb(43, 145, 175);"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;  {    &lt;div style="padding-left: 20px;"&gt;    if (WeNeedToRedirect == &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;)&lt;br /&gt;   {&lt;div style="padding-left: 20px;"&gt;     Response.Redirect(url, &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;);&lt;br /&gt;    HttpContext.Current.ApplicationInstance.CompleteRequest();&lt;br /&gt;    m_bIsTerminating = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: rgb(0, 170, 0);"&gt;// remember to end the method here if&lt;br /&gt;// there is more code in it&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;;&lt;/div&gt;    }&lt;/div&gt;   }&lt;br /&gt;  &lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;protected override void&lt;/span&gt; RaisePostBackEvent(IPostBackEventHandler sourceControl, &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; eventArgument)&lt;br /&gt;  {&lt;div style="padding-left: 20px;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (m_bIsTerminating == &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;)    &lt;div style="padding-left: 20px;"&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;base&lt;/span&gt;.RaisePostBackEvent(sourceControl, eventArgument);&lt;/div&gt;    &lt;/div&gt;   }&lt;br /&gt;  &lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;protected override void&lt;/span&gt; Render(HtmlTextWriter writer)&lt;br /&gt;  {&lt;div style="padding-left: 20px;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (m_bIsTerminating == &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;)&lt;br /&gt;    &lt;div style="padding-left: 20px;"&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;base&lt;/span&gt;.Render(writer);&lt;/div&gt;    &lt;/div&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1741512530965680332?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1741512530965680332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1741512530965680332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1741512530965680332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1741512530965680332'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/12/better-way-to-handle-thread-abort.html' title='Better way to handle thread abort exception in Response.Redirect'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2225758261546145037</id><published>2007-11-16T15:20:00.000-08:00</published><updated>2007-11-16T15:35:18.901-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ite'/><title type='text'>Datagrid VS ViewState</title><content type='html'>This week, I try to optimized my web application which using 10 million record.&lt;br /&gt;&lt;br /&gt;The first thing that I notice that EnableViewState by default is set to true.&lt;br /&gt;&lt;br /&gt;So my datagrid will store all the view state into client. so every time there is postback or asyn postback, it will transfer heaps of data through networks. and It is not very efficient.&lt;br /&gt;&lt;br /&gt;So I try to disable them by EnablingViewState = false.&lt;br /&gt;However by disabling view state in the data , all the events in datagrid is not fired..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;one of the solution is to disable view state on each item.&lt;br /&gt;_dg.DataBind();&lt;br /&gt;foreach (DataGridItem item in _dg.Items)&lt;br /&gt;{&lt;br /&gt;    item.EnableViewState=false;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;however, if your all commandArguments is not work,..&lt;br /&gt;&lt;br /&gt;so the other solution is you need to bind every time in page back...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2225758261546145037?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2225758261546145037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2225758261546145037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2225758261546145037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2225758261546145037'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/11/datagrid-vs-viewstate.html' title='Datagrid VS ViewState'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-313800167729746244</id><published>2007-11-06T18:56:00.000-08:00</published><updated>2007-11-06T19:06:05.986-08:00</updated><title type='text'>Resurrection</title><content type='html'>Just in case if you don't know.&lt;br /&gt;&lt;br /&gt;Sometimes it is you may need to resurrects your object.&lt;br /&gt;for example you want the object to clean itself gracefully everytime the object dies.&lt;br /&gt;&lt;br /&gt;Here how to do resurrection....&lt;br /&gt;&lt;br /&gt;public class MyBaseClass&lt;br /&gt;{&lt;br /&gt;    Protected override void Finalize()&lt;br /&gt;    {&lt;br /&gt;        //TODO: Some Clean up....&lt;br /&gt;       &lt;br /&gt;        GC.ReRegisterForFinalize(this);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;By calling GC.ReRegisterForFinalize method, it will appends the address of the specified object to the end of the finalization queue. When GC detects that this object is unreadchable again, It will queue the object's pointer ob the freachable queue and Finalize method will get called again.&lt;br /&gt;&lt;br /&gt;This is example show how to create an object that constantly resurrects itself and never dies...&lt;br /&gt;which usually undesireable. It is far more common to conditionally set a root to a reference the object inside the finalize method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-313800167729746244?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/313800167729746244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=313800167729746244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/313800167729746244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/313800167729746244'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/11/resurrection.html' title='Resurrection'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5548888636665128711</id><published>2007-10-30T22:04:00.000-07:00</published><updated>2007-10-31T17:43:17.934-07:00</updated><title type='text'>Sys.WebForms.PageRequestManagerParserErrorException</title><content type='html'>&lt;p&gt;“&lt;span style="font-style: italic;"&gt;Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.&lt;/span&gt;”&lt;/p&gt; &lt;a href="http://bp1.blogger.com/_3jii2RKfQXI/RZOBch72UPI/AAAAAAAAAAs/1Q1A5-3dNQs/s1600-h/pagerequestmanager_error.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013493137339207922" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_3jii2RKfQXI/RZOBch72UPI/AAAAAAAAAAs/1Q1A5-3dNQs/s400/pagerequestmanager_error.jpg" align="middle" /&gt;&lt;/a&gt;&lt;br /&gt;this is the most annoyed error , That I ever had.&lt;br /&gt;&lt;br /&gt;It happens only the first time after I restart my web application / after change web.config.&lt;br /&gt;&lt;br /&gt;I still keep getting that error even I have try to alter my code based on this&lt;br /&gt;--------------------------------------------------------------------------------------&lt;br /&gt;&lt;ol start="1"&gt;&lt;li&gt;&lt;div&gt;Calls to Response.Write():&lt;br /&gt;Place an &lt;asp:label&gt; or similar control on your page and set its Text property. The added benefit is that your pages will be valid HTML. When using Response.Write() you typically end up with pages that contain invalid markup.&lt;/asp:label&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Response filters:&lt;br /&gt;The fix might just be to not use the filter. They're not used very often anyway. If possible, filter things at the control level and not at the response level.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;HttpModules:&lt;br /&gt;Same as response filters.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Server trace is enabled:&lt;br /&gt;Use some other form of tracing, such as writing to a log file, the Windows event log, or a custom mechanism.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Calls to Server.Transfer():&lt;br /&gt;I'm not really sure why people use Server.Transfer() at all. Perhaps it's a legacy thing from Classic ASP. I'd suggest using Response.Redirect() with query string parameters or cross-page posting.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Another way to avoid the parse error is to do a regular postback instead of an asynchronous postback. For example, if you have a button that absolutely must do a Server.Transfer(), make it do regular postbacks. There are a number of ways of doing this:&lt;/p&gt;&lt;ol start="1"&gt;&lt;li&gt;&lt;div&gt;The easiest is to simply place the button outside of any UpdatePanels. Unfortunately the layout of your page might not allow for this.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Add a PostBackTrigger to your UpdatePanel that points at the button. This works great if the button is declared statically through markup on the page.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Call ScriptManager.RegisterPostBackControl() and pass in the button in question. This is the best solution for controls that are added dynamically, such as those inside a repeating template.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;-------------------------------------------------------&lt;br /&gt;&lt;br /&gt;After I give up... The only solution is to add &lt;span style=";font-family:'Courier New';font-size:10;color:red;"   &gt;enableEventValidation&lt;/span&gt;&lt;span style=";font-family:'Courier New';font-size:10;color:blue;"   &gt;="false" &lt;/span&gt;in the Page attribute.&lt;br /&gt;&lt;br /&gt;Probably it is not the best solution because &lt;a name="remarksToggle"&gt;the event validation mechanism reduces the risk of unauthorized postback requests and callbacks. When the &lt;b&gt;EnableEventValidation&lt;/b&gt; property is set to &lt;b&gt;true&lt;/b&gt;, ASP.NET allows only the specific events that can be raised on the control during a postback request or callback. In this model, a control registers its events during rendering and then validates the events during postback or callback handling. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However after debugging I relies that It throw that error after I write into a session which I never write anything in the beginning. which cause the event validation not valid&lt;br /&gt;&lt;br /&gt;So another solution is if EnableEventValidation is so important then&lt;br /&gt;put it back EnableEventValidation = true then&lt;br /&gt;in your Page_Load Event,&lt;br /&gt;put&lt;br /&gt;----------------------&lt;br /&gt;Session["something"] = true; in your page load event. &lt;p&gt;This will create the cookie needed for the session variable to work, and therefore anything using a session will also work without throwing the error.&lt;/p&gt;---------------------&lt;br /&gt;&lt;br /&gt;This solution needed if there is no session ha s been initialize but when there is asynchronous postback, you put a session and EnableEventValidation is true&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5548888636665128711?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5548888636665128711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5548888636665128711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5548888636665128711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5548888636665128711'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/10/syswebformspagerequestmanagerparsererro.html' title='Sys.WebForms.PageRequestManagerParserErrorException'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_3jii2RKfQXI/RZOBch72UPI/AAAAAAAAAAs/1Q1A5-3dNQs/s72-c/pagerequestmanager_error.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-991438713984058657</id><published>2007-10-29T22:33:00.001-07:00</published><updated>2007-10-29T22:34:58.465-07:00</updated><title type='text'>The Simplest Javascript to convert to hexadecimal in Javascript</title><content type='html'>function toHexa(d) {return d.toString(16);}&lt;br /&gt;         &lt;br /&gt;function toDec(h) {return parseInt(h,16);}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-991438713984058657?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/991438713984058657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=991438713984058657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/991438713984058657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/991438713984058657'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/10/simplest-javascript-to-convert-to.html' title='The Simplest Javascript to convert to hexadecimal in Javascript'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1680531280071702675</id><published>2007-09-22T05:37:00.000-07:00</published><updated>2007-09-22T05:51:37.943-07:00</updated><title type='text'>As Keyword in C#</title><content type='html'>The "as" keyword in C# attempts to cast an instance to a specific type and if it fails returns null.&lt;br /&gt;&lt;br /&gt;What is the different between explicitly cast ?&lt;br /&gt;&lt;br /&gt;string str = (string) Request["nullSession"];&lt;br /&gt;string str = Request["nullSession"] as string;&lt;br /&gt;&lt;br /&gt;Both of them return the same (NULL)...&lt;br /&gt;&lt;br /&gt;However probably, I will stick with my casting style because&lt;br /&gt;1. It confused me when I need to convert from C# to VB&lt;br /&gt;2. I can not using as keyword to replace &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;(int) 123.23&lt;/span&gt; where I expect to get &lt;span style="font-weight: bold;"&gt;123&lt;/span&gt; as integer&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;----&lt;br /&gt;123.21 as int &lt;/span&gt;&lt;br /&gt;//throws The as operator must be used with a reference type ('int' is a value type)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;123.21 as int16 &lt;/span&gt;&lt;br /&gt;//throws The as operator must be used with a reference type ('short' is a value type)&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;123.21 as double&lt;br /&gt;&lt;/span&gt;//throws The as operator must be used with a reference type ('double' is a value type)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1680531280071702675?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1680531280071702675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1680531280071702675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1680531280071702675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1680531280071702675'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/as-keyword-in-c.html' title='As Keyword in C#'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-7678377940864239320</id><published>2007-09-08T07:14:00.000-07:00</published><updated>2007-09-08T07:49:04.754-07:00</updated><title type='text'>JSON AJAX Localization</title><content type='html'>It may be annoying when you need to have several languages in your web sites..&lt;br /&gt;&lt;br /&gt;There is several way... to implement localization your web content in the client..&lt;br /&gt;&lt;br /&gt;you either create a control and attached those assembly to your web site...&lt;br /&gt;or just use... JSON object...&lt;br /&gt;&lt;br /&gt;My preference is using JSON ( Javascipt Object Notation)....&lt;br /&gt;&lt;br /&gt;* Create.. JSON Resource JS file for each.. languange...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resource.js&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;MyReourceText={&lt;br /&gt;"HeaderTitle":"Hello World",&lt;br /&gt;"FooterText":"CopyRight By Kurniawan"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resource.fr.js&lt;br /&gt;&lt;/span&gt;MyReourceText={&lt;br /&gt;"HeaderTitle":"Header Title in France",&lt;br /&gt;"FooterText":"CopyRight By Kurniawan in france"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Create.. UpdateResource js - this script will update your content use specific localize language.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;br /&gt;-saperate this file from Resource.js...so you will not duplicate your code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;UpdateResource.js&lt;/span&gt;&lt;br /&gt;Sys.Application.add_load(SetupForm);&lt;br /&gt;function SetupForm()&lt;br /&gt;{&lt;br /&gt;  $get('HeaderTitle').innerText = MyReourceText.HeaderTitle;&lt;br /&gt;  $get('FooterText').innerText = MyReourceText.FooterText;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* &lt;/span&gt;&lt;/span&gt;In your aspx... add enable &lt;span style="font-weight: bold;"&gt;EnableScriptLocalization="true"&lt;/span&gt; in your &lt;span style="font-weight: bold;"&gt;ScriptManager&lt;br /&gt;&lt;/span&gt;This will enable the &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* &lt;/span&gt;Add those script reference into your script Manager&lt;br /&gt;&amp;lt;asp:ScriptReference Path="Resource.js" ResourceUICulture="fr" /&amp;gt;&lt;br /&gt;&amp;lt;asp:ScriptReference Path="UpdateResource.js" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;**** THAT'S ALL ****&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You may change your language from the browser or&lt;br /&gt;from the your own control.... by using this...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;System.Threading.Thread.CurrentThread.CurrentUICulture = &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;System.Globalization.CultureInfo.CreateSpecificCulture(cmbLang.SelectedValue);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and you can get the current language from your browser when not postback&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cmbLang.Items.FindByValue(System.Threading.Thread.CurrentThread.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CurrentUICulture.TwoLetterISOLanguageName).Selected = true;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;****&lt;br /&gt;&lt;br /&gt;You may enable globalization.. to formating your date / currency into specific languange../ culture...&lt;br /&gt;&lt;br /&gt;by activate &lt;span style="font-weight: bold;"&gt;EnableScriptGlobalization = "true" &lt;/span&gt;in Script Manager...&lt;br /&gt;You can use&lt;br /&gt;d.&lt;span style="font-weight: bold;"&gt;localeFormat("dddd, dd MMM yyyy");&lt;br /&gt;&lt;br /&gt;****&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-7678377940864239320?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/7678377940864239320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=7678377940864239320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7678377940864239320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/7678377940864239320'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/json-ajax-localization.html' title='JSON AJAX Localization'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-4360288130628075780</id><published>2007-09-06T17:14:00.000-07:00</published><updated>2007-09-06T17:26:31.096-07:00</updated><title type='text'>XAML ???</title><content type='html'>X A M L ??? (ZAMMEL) Yes, That's the correct spelling...&lt;br /&gt;&lt;br /&gt;It extends for Extendsible Application Markup Language.&lt;br /&gt;ZAMMEL is Xml based language to define object and their properties ...&lt;br /&gt;&lt;br /&gt;It focused on UI for WPF/E (Windows Presentation Foundation/Everywhere)&lt;br /&gt;&lt;br /&gt;You may check out Silverlight to begin with XAML.&lt;br /&gt;&lt;br /&gt;Here is the Zammel Sample&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;&amp;lt;object&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;child property="x" property="y"&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;    &lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;child.property&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;       &lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;class property="u"    property="v"/&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;    &lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;/child.property&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;  &lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;/child&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;   &lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;child&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;   &lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;/child&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="style17"&gt;&amp;lt;&lt;/span&gt;&lt;child property="PosX"&gt;&lt;span class="style17"&gt;/object&lt;/span&gt;&lt;/child&gt;&lt;span class="style17"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;* Xaml is different with WPF - Xaml is Xml based Markup&lt;br /&gt;WPF is a graphics API&lt;br /&gt;&lt;br /&gt;* &lt;/span&gt;XAML also supports things     like 3D and controls, which SVG does not. It's different from SVG&lt;br /&gt;&lt;br /&gt;* Saparate Design and Development&lt;br /&gt;&lt;child property="PosX"&gt;&lt;/child&gt;&lt;span class="style17"&gt;&lt;object&gt;&lt;child property="PosX"&gt;   &lt;child.property&gt;&lt;br /&gt;&lt;/child.property&gt;&lt;/child&gt;&lt;/object&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-4360288130628075780?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/4360288130628075780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=4360288130628075780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4360288130628075780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/4360288130628075780'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/xaml.html' title='XAML ???'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2917225624599955492</id><published>2007-09-06T17:04:00.000-07:00</published><updated>2007-09-06T17:06:49.103-07:00</updated><title type='text'>F# ???</title><content type='html'>F# -&lt;br /&gt;Functional language ???&lt;br /&gt;Why do we need to learn that language ???&lt;br /&gt;&lt;br /&gt;So far I know... this language is meant to be more mathematical at heart, and thus creates more separation between the lower level machine details and the developer's code.&lt;br /&gt;&lt;br /&gt;functional programming is supposed to be a "higher level" of programming than Java or C.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#light&lt;br /&gt;(* Sample Windows Forms Program *)&lt;br /&gt;&lt;br /&gt;(* We need to open the Windows Forms library *)&lt;br /&gt;open System.Windows.Forms&lt;br /&gt;&lt;br /&gt;(* Create a window and set a few properties *)&lt;br /&gt;let form = new Form(Visible=true, TopMost=true, Text="Welcome to F#")&lt;br /&gt;&lt;br /&gt;(* Create a label to show some text in the form *)&lt;br /&gt;let label =&lt;br /&gt;   let temp = new Label()&lt;br /&gt;   let x = 3 + (4 * 5)&lt;br /&gt;   (* Set the value of the Text*)&lt;br /&gt;   temp.Text &lt;- x&lt;br /&gt;   (* Remember to return a value! *)&lt;br /&gt;   temp&lt;br /&gt;&lt;br /&gt;(* Add the label to the form *)&lt;br /&gt;do form.Controls.Add(label)&lt;br /&gt;&lt;br /&gt;(* Finally, run the form *)&lt;br /&gt;do Application.Run(form)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2917225624599955492?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2917225624599955492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2917225624599955492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2917225624599955492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2917225624599955492'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/f.html' title='F# ???'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1266570926723862721</id><published>2007-09-06T16:37:00.000-07:00</published><updated>2007-09-06T17:07:30.563-07:00</updated><title type='text'>Generic.Dictionary Serializable ?</title><content type='html'>so far I know that Generic.Dictionary is not serializable by default in .Net 2.0&lt;br /&gt;&lt;br /&gt;One of the implication is when you put your dictionary in the session of Asp.net...&lt;br /&gt;You will get problem...  You will get an error when serializer run and&lt;br /&gt;try to get your session ship out of your web service....&lt;br /&gt;&lt;br /&gt;Here is the code... to&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Xml.Serialization;&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;[&lt;span style="color:teal;"&gt;XmlRoot&lt;/span&gt;(&lt;span style="color:maroon;"&gt;"dictionary"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:teal;"&gt;DictionarySerializable&lt;/span&gt;&lt;tkey,&gt;&lt;/tkey,&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        : &lt;span style="color:teal;"&gt;Dictionary&lt;/span&gt;&lt;tkey,&gt;, &lt;span style="color:teal;"&gt;IXmlSerializable&lt;/span&gt;&lt;/tkey,&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;        #region&lt;/span&gt; IXmlSerializable Members&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:blue;"&gt;public&lt;/span&gt; System.Xml.Schema.&lt;span style="color:teal;"&gt;XmlSchema&lt;/span&gt; GetSchema()&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        }&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; ReadXml(System.Xml.&lt;span style="color:teal;"&gt;XmlReader&lt;/span&gt; reader)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt; keySerializer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(TKey));&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt; valueSerializer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(TValue));&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:blue;"&gt;if(&lt;/span&gt;reader.IsEmptyElement) &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            reader.Read();&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt;&lt;p style="margin: 0px;"&gt;            &lt;span style="color:blue;"&gt;while&lt;/span&gt; (reader.NodeType != System.Xml.&lt;span style="color:teal;"&gt;XmlNodeType&lt;/span&gt;.EndElement)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.ReadStartElement(&lt;span style="color:maroon;"&gt;"item"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.ReadStartElement(&lt;span style="color:maroon;"&gt;"key"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                TKey key = (TKey)keySerializer.Deserialize(reader);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.ReadEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.ReadStartElement(&lt;span style="color:maroon;"&gt;"value"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                TValue value = (TValue)valueSerializer.Deserialize(reader);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.ReadEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Add(key, value);&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.ReadEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                reader.MoveToContent();&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            }&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            reader.ReadEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        }&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;        &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; WriteXml(System.Xml.&lt;span style="color:teal;"&gt;XmlWriter&lt;/span&gt; writer)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt; keySerializer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(TKey));&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt; valueSerializer = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(TValue));&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;            &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (TKey key &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Keys)&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            {&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                writer.WriteStartElement(&lt;span style="color:maroon;"&gt;"item"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                writer.WriteStartElement(&lt;span style="color:maroon;"&gt;"key"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                keySerializer.Serialize(writer, key);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                writer.WriteEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                writer.WriteStartElement(&lt;span style="color:maroon;"&gt;"value"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                TValue value = &lt;span style="color:blue;"&gt;this&lt;/span&gt;[key];&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                valueSerializer.Serialize(writer, value);&lt;/p&gt; &lt;p style="margin: 0px;"&gt;                writer.WriteEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt; &lt;/p&gt; &lt;p style="margin: 0px;"&gt;                writer.WriteEndElement();&lt;/p&gt; &lt;p style="margin: 0px;"&gt;            }&lt;/p&gt; &lt;p style="margin: 0px;"&gt;        }&lt;/p&gt; &lt;p style="margin: 0px;"&gt;&lt;span style="color:blue;"&gt;        #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px;"&gt;    }&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1266570926723862721?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1266570926723862721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1266570926723862721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1266570926723862721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1266570926723862721'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/genericdictionary-serializable.html' title='Generic.Dictionary Serializable ?'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-6273297330863764739</id><published>2007-09-06T06:11:00.000-07:00</published><updated>2007-09-06T06:18:16.305-07:00</updated><title type='text'>Get bored with Web Service ???</title><content type='html'>Are you get bored with Web Service Technology ?&lt;br /&gt;&lt;br /&gt;Yeah... Probably... It has been too old for us....&lt;br /&gt;&lt;br /&gt;Check it out &lt;span style="font-weight: bold;"&gt;Microsoft Astoria - Data Service....&lt;br /&gt;&lt;/span&gt;&lt;a href="http://astoria.mslivelabs.com"&gt;http://astoria.mslivelabs.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You may try to deploy your database into &lt;span style="font-weight: bold;"&gt;Web Data Service&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;It is also supported by ASP.NET Futures (May 2007)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-6273297330863764739?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/6273297330863764739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=6273297330863764739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6273297330863764739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/6273297330863764739'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/get-bored-with-web-service.html' title='Get bored with Web Service ???'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1499749641437985449</id><published>2007-09-06T05:26:00.000-07:00</published><updated>2007-09-06T05:35:57.711-07:00</updated><title type='text'>Iron Phyton with ASP.Net Futures</title><content type='html'>Here is the example... how to nice it is using Iron phyton to filter your Grid View which generated from DynamicList&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Restrict your column...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;def &lt;span style="font-weight: bold;"&gt;GetColumns() :&lt;br /&gt;    &lt;/span&gt;return ["Column1","Column2",....]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Add your custom column&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;def &lt;span style="font-weight: bold;"&gt;GetColumns() :&lt;br /&gt;    &lt;/span&gt;return ["Column1","Column2",....&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    ["My Custom Column", lambda: "%s (%s)" % (Column3, Column4)]&lt;/span&gt;&lt;br /&gt;   ]&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;Rule level formating for your view&lt;br /&gt;&lt;/span&gt;From System.Drawing import Color&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;def &lt;span style="font-weight: bold;"&gt;InitRow(row)&lt;/span&gt;:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if "myKeyword" in Column1 :&lt;/span&gt;&lt;br /&gt;             row.BackColor = Color.Green&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How easy it is  ????&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1499749641437985449?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1499749641437985449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1499749641437985449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1499749641437985449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1499749641437985449'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/iron-phyton-with-aspnet-futures.html' title='Iron Phyton with ASP.Net Futures'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-830968229827296382</id><published>2007-09-06T05:20:00.000-07:00</published><updated>2007-09-06T05:26:07.938-07:00</updated><title type='text'>Dynamic Data Component in ASP.NET Futures</title><content type='html'>These are the details of Dynamic Data Components , If you want to play around with the code...&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;DynamicAutoData - &lt;/span&gt;It will build the presentantion of your tables&lt;br /&gt; Master, Detail, Insert RSS Links&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;DynamicList - &lt;/span&gt;Build Grid View for your table&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;Dynamic Details -&lt;/span&gt; Build the details for your master tables...&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;Dynamic Insert - &lt;/span&gt;Build the insert new data form for your table...&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;Dynamic Rss Link &lt;/span&gt;- Burn your page into.. RSS feed&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;Dynamic Filter -&lt;/span&gt;  Filter.. your table...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-830968229827296382?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/830968229827296382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=830968229827296382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/830968229827296382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/830968229827296382'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/dynamic-data-component-in-aspnet.html' title='Dynamic Data Component in ASP.NET Futures'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-5457404202312816405</id><published>2007-09-06T05:07:00.000-07:00</published><updated>2007-09-06T05:19:43.338-07:00</updated><title type='text'>Codeless in .Net Futures</title><content type='html'>Please Check out this...&lt;br /&gt;It's amazing, You don't need to write anything to View all your database through &lt;span style="font-weight: bold;"&gt;.Net Futures...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Create Web Site with &lt;span style="font-weight: bold;"&gt;DynamicDataWebSite&lt;/span&gt; Template...&lt;br /&gt;&lt;br /&gt;* Add your Database into APP_Data&lt;br /&gt;&lt;br /&gt;* Open your &lt;span style="font-weight: bold;"&gt;web.config&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Enable &lt;span style="font-weight: bold;"&gt;showAllTables&lt;/span&gt; by change false into true&lt;br /&gt;   &amp;lt;dynamicDataControls &lt;span style="font-weight: bold;"&gt;showAllTables="true"&lt;/span&gt; &amp;gt;&lt;br /&gt;&lt;br /&gt;2. and uncoment &lt;span style="font-weight: bold;"&gt;auto.axd&lt;/span&gt; inside &lt;span style="font-weight: bold;"&gt;httpHandlers&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- That's ALL --------------------------&lt;br /&gt;&lt;br /&gt;All has been build for you&lt;br /&gt;* List all of your tables&lt;br /&gt;* Master Detais&lt;br /&gt;* Insert Update Delete&lt;br /&gt;* RSS Links....&lt;br /&gt;&lt;br /&gt;What else do you need?&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-5457404202312816405?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/5457404202312816405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=5457404202312816405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5457404202312816405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/5457404202312816405'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/codeless-for-database-in-net-futures.html' title='Codeless in .Net Futures'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2590039712889761697</id><published>2007-09-05T05:55:00.000-07:00</published><updated>2007-09-05T18:13:46.814-07:00</updated><title type='text'>Embed your javascript file into single DLL</title><content type='html'>If you want your javascript hidden or secure inside the dll...&lt;br /&gt;&lt;br /&gt;Please see this step... to embed your javascript file (*.js) into your dll.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to the property of the javascript file (Right Click in *.js file)&lt;/li&gt;&lt;li&gt;Change Build Action to &lt;span style="font-weight: bold;"&gt;Embeded Resource &lt;/span&gt;(Default is content)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go To AssemblyInfo.vb (Turn on Show All file to see that file)&lt;/li&gt;&lt;li&gt;Add &amp;lt;AssemblyL System.Web.&lt;br /&gt;UI.WebResource("&lt;span style="font-weight: bold;"&gt;YourNameSpace.YourJSName.js&lt;/span&gt;", "application/x-Javascript")&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Register to Page control.&lt;span style="font-weight: bold;"&gt;Page&lt;/span&gt;.ClientScript.&lt;span style="font-weight: bold;"&gt;RegisterClientScriptResource&lt;/span&gt;&lt;br /&gt;(typeOf(yourClassName),"&lt;span style="font-weight: bold;"&gt;YourNameSpace.YourJSName.js&lt;/span&gt;");&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;OR if available&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Register to &lt;span style="font-weight: bold;"&gt;AjaxToolkit.ScriptManager&lt;/span&gt; using Reflection&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;System.Type &lt;/span&gt;_ScriptManager = Type.GetType&lt;br /&gt;("&lt;span style="font-weight: bold;"&gt;System.Web.UI.ScriptManager &lt;/span&gt;, System.Web.Extension");&lt;br /&gt;&lt;br /&gt;if (&lt;span style="font-weight: bold;"&gt;_ScriptManager == null&lt;/span&gt;)&lt;br /&gt;throw new Exception(" Use... the other register above");&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;System.Reflection.MethodInfo&lt;/span&gt; _RegisterClientScriptResourceMethod =&lt;br /&gt;_ScriptManager.GetMethod("&lt;span style="font-weight: bold;"&gt;RegisterClientScriptResource&lt;/span&gt;",new Type()&lt;br /&gt;{typeof(System.Web.UI.Control), typeof(Type), typeof(System.String)} );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;_RegisterClientScriptResourceMethod.Invoke(Nothing, new Object()&lt;br /&gt;(this,typeOf(yourClassName),"&lt;span style="font-weight: bold;"&gt;YourNameSpace.YourJSName.js&lt;/span&gt;");&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2590039712889761697?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2590039712889761697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2590039712889761697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2590039712889761697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2590039712889761697'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/embed-your-javascript-file-into-single.html' title='Embed your javascript file into single DLL'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-2029431297665355945</id><published>2007-09-05T05:47:00.000-07:00</published><updated>2007-09-05T05:55:02.445-07:00</updated><title type='text'>Building your own Ajax</title><content type='html'>So far, I know there is 3 Tutorials which good to see before you build your own control...&lt;br /&gt;&lt;br /&gt;The best one is using &lt;span style="font-weight: bold;"&gt;AjaxToolkitTemplate-Extender&lt;/span&gt;...&lt;br /&gt;See - AjaxToolkit Documentation on the left bottom corner.&lt;br /&gt;According to me.. this Ajax design is easy to use and very consistet with ajaxToolkit...&lt;br /&gt;&lt;br /&gt;However.. there is another... Video Tutorial can be found in the www.asp.net/learn/ajax&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"WinVideo-ASP-AjaxCustomAjaxControl" - &lt;/span&gt;Build User Control embeded into single dll&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"WinVideo-ASP-AjaxEnableYourCustomControl" &lt;/span&gt;- Build Web UserControl in different DLL&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-2029431297665355945?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/2029431297665355945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=2029431297665355945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2029431297665355945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/2029431297665355945'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/09/building-your-own-ajax.html' title='Building your own Ajax'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-1975177194660774013</id><published>2007-08-25T08:01:00.001-07:00</published><updated>2007-08-25T08:06:45.228-07:00</updated><title type='text'>Ajax Service Method</title><content type='html'>1. Create web service with &lt;span style="font-weight: bold;"&gt;[System.Web.Script.Services.ScriptService()] &lt;/span&gt;attribute in class level&lt;br /&gt;&lt;br /&gt;2. add Service Reference... in  service manager &lt;blockquote&gt;&lt;/blockquote&gt;&lt;asp:scriptmanager id="sm" runat="server"&gt;&lt;span style="font-weight: bold;"&gt;asp:ServiceReference Path="MyAjaxService.asmx" &lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;&lt;/asp:scriptmanager&gt;3. Add javascript method&lt;br /&gt;&lt;br /&gt;function Bt1_OnClick()&lt;br /&gt;{&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    MyAjaxService.SayHello("Kurniawan",OnComplete,OnError);&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnComplete(result)&lt;br /&gt;{&lt;br /&gt;   alert("OnComplete : " + result);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function OnError(result)&lt;br /&gt;{&lt;br /&gt;   alert("OnError : " + &lt;span style="font-weight: bold;"&gt;result._message&lt;/span&gt;);&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-1975177194660774013?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/1975177194660774013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=1975177194660774013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1975177194660774013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/1975177194660774013'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/08/ajax-service-method.html' title='Ajax Service Method'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-854021761054153070.post-543617894196121337</id><published>2007-08-23T20:33:00.000-07:00</published><updated>2007-08-23T20:53:13.055-07:00</updated><title type='text'>using AjaxPro2.dll from Michael Schwarz</title><content type='html'>*Add web Config &lt;span style="font-weight: bold;"&gt;configuration/configSections&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;sectiongroup name="ajaxNet"&gt;&lt;/sectiongroup&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;sectiongroup name="ajaxNet"&gt;&lt;/sectiongroup&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     section name="ajaxSettings" type="AjaxPro.AjaxSettingsSectionHandler, AjaxPro.2"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;*Add web Config &lt;span style="font-weight: bold;"&gt;configuration/system.web/httpHandlers&lt;br /&gt;&lt;add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"&gt;&lt;add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"&gt;&lt;span style="font-weight: bold;"&gt;add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"&lt;/span&gt;&lt;/add&gt;&lt;/add&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*add reference AjaxPro2.dll into the bin folder&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;using AjaxPro;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* in page load (postback and not) - add&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Utility.RegisterTypeForAjax(typeof(_Default));&lt;br /&gt;&lt;br /&gt;*&lt;/span&gt;On client ajax method add attribute&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    [AjaxMethod(HttpSessionStateRequirement.ReadWrite)]&lt;/span&gt;&lt;br /&gt;public string MyAjaxMethod(string username)&lt;br /&gt;{&lt;br /&gt;   return "Halo" +  UserName;&lt;br /&gt;}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*call in client javascript&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;_Default&lt;/span&gt;.MyAjaxMethod("Kurniawan")&lt;span style="font-weight: bold;"&gt;.value&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/854021761054153070-543617894196121337?l=kajaxnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kajaxnet.blogspot.com/feeds/543617894196121337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=854021761054153070&amp;postID=543617894196121337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/543617894196121337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/854021761054153070/posts/default/543617894196121337'/><link rel='alternate' type='text/html' href='http://kajaxnet.blogspot.com/2007/08/using-ajaxpro2dll-from-michael-schwarz.html' title='using AjaxPro2.dll from Michael Schwarz'/><author><name>Kurniawan</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp0.blogger.com/_kEiMJawhtH8/SD9y3iehM0I/AAAAAAAAALM/Pcb8pPYfiuk/S220/01AwcAX2xi5AUAAAABAAAAAAAAAAA+.jpg'/></author><thr:total>0</thr:total></entry></feed>
