<?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-1819083789985768683</id><updated>2011-04-21T15:06:44.613-07:00</updated><category term='Visual Studio'/><category term='sharepoint'/><category term='viewstate'/><category term='CAML Sharepoint'/><category term='Mailing list'/><category term='Silverlight'/><category term='ASHX Handler'/><title type='text'>Balaji Sridharan on ASP.NET and Sharepoint</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-94495202803386253</id><published>2008-12-16T00:35:00.000-08:00</published><updated>2008-12-16T00:40:01.841-08:00</updated><title type='text'>Unwired discount coupons</title><content type='html'>&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: 16px; font-weight: normal; "&gt;Feel free to use the Unwired discount coupons worth $30 on a new Unwired Wireless modem or wireless card! &lt;/span&gt;&lt;br /&gt;&lt;/h2&gt;        &lt;p&gt;&lt;/p&gt;&lt;table summary="Get your family or friend Unwired" class="bg_transparent" width="99%"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;label for="code"&gt;discount code&lt;/label&gt;&lt;/th&gt;&lt;th&gt;&lt;label for="status"&gt;status&lt;/label&gt;&lt;/th&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="30%"&gt; FR-6R55-8FVD &lt;/td&gt;&lt;td width="25%"&gt; unused  &lt;/td&gt;&lt;td width="23%"&gt;&lt;/td&gt;&lt;td width="22%"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="30%"&gt; FR-8LH3-PUYF &lt;/td&gt;&lt;td width="25%"&gt; unused  &lt;/td&gt;&lt;td width="23%"&gt;&lt;/td&gt;&lt;td width="22%"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="30%"&gt; FR-BXDF-2EQG &lt;/td&gt;&lt;td width="25%"&gt; unused&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-94495202803386253?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/94495202803386253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=94495202803386253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/94495202803386253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/94495202803386253'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/12/unwired-discount-coupons.html' title='Unwired discount coupons'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-1861268836519064163</id><published>2008-12-08T21:11:00.000-08:00</published><updated>2008-12-08T21:13:07.373-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='viewstate'/><title type='text'>Validation of viewstate MAC failed error</title><content type='html'>&lt;p&gt;If you have experienced this issue and you are not running in a web farm environment, this is a nice article which explains the issue and tries to solve it.&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx"&gt;http://blogs.msdn.com/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx&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/1819083789985768683-1861268836519064163?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/1861268836519064163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=1861268836519064163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/1861268836519064163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/1861268836519064163'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/12/validation-of-viewstate-mac-failed.html' title='Validation of viewstate MAC failed error'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-2198417880897538996</id><published>2008-07-02T19:37:00.000-07:00</published><updated>2008-07-02T23:48:48.407-07:00</updated><title type='text'>Scenario Driven API Design</title><content type='html'>&lt;p&gt;I am entrusted with the task of designing a new API for our flagship product &lt;a href="http://www.elcom.com.au/Elcom-Community-Manager/default.aspx"&gt;Elcom's Community Manager&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This New API was primarily intended to help clients to extend the community manager and use its feature rich cms functionality and help developers to reduce their development time.&lt;br /&gt;&lt;br /&gt;API cannot be changed and any change would be a breaking change so OOP and other design patterns are not the best solution when it comes to designing api's.&lt;br /&gt;&lt;br /&gt;I started the project by putting myself into the user shoes and there by writing code samples.&lt;br /&gt;&lt;br /&gt;This scenario is called as Scenario driven design and is better suited to API development&lt;br /&gt;&lt;br /&gt;Some of the guidelines of this design&lt;br /&gt;&lt;br /&gt;1. Simplicity&lt;br /&gt;Code Samples (start api design by writing code samples). &lt;/p&gt;&lt;p&gt;Structuring Hierarchial Namespace to organize information and enable people to find types.&lt;/p&gt;&lt;p&gt;Advanced and complicated scenario must be simplified if not better avoid them in the API.&lt;/p&gt;&lt;p&gt;Wise use of exceptions messages (Use exception messages to communicate framework usage mistakes to the developer) &lt;/p&gt;&lt;p&gt;Allow Progressively Learning for developer&lt;/p&gt;&lt;p&gt;2. Know your User&lt;br /&gt;&lt;br /&gt;a. Think that User has very limited capability and make things easy&lt;br /&gt;b. If user easily gets into trouble using the api then we have failed.&lt;br /&gt;c. User should be able to start programming reading none or very little documentation&lt;br /&gt;d. Create - Set - Call Pattern is preferred even by advanced developers so this should be the standard&lt;br /&gt;. Create Instance using default empty constructor&lt;br /&gt;. Set Properties&lt;br /&gt;. Call Methods&lt;br /&gt;e. Speak to the user and understand requiments (Requirements scoping)&lt;br /&gt;f. Make other dev teams use the API and request feedback.&lt;br /&gt;&lt;br /&gt;3. Think Development Ecosystem&lt;br /&gt;&lt;br /&gt;Intellisense&lt;br /&gt;Avoid Generic Names like message, element, log etc may cause ambiguous reference conflicts&lt;br /&gt;Consistency (All Types should have a similar pattern)&lt;br /&gt;No Hungarian casing like CMArticle , CMFolder etc.&lt;/p&gt;&lt;p&gt;Method vs Properties&lt;/p&gt;&lt;p&gt;Use Properties&lt;/p&gt;&lt;p&gt;If the member logical attribute of the type&lt;/p&gt;&lt;p&gt;Use Methods&lt;/p&gt;&lt;p&gt;If Order of execution is important use method&lt;/p&gt;&lt;p&gt;If member returns an array&lt;/p&gt;&lt;p&gt;If method might not return immediately&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-2198417880897538996?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/2198417880897538996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=2198417880897538996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2198417880897538996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2198417880897538996'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/07/scenario-driven-api-design.html' title='Scenario Driven API Design'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-2559913209293948757</id><published>2008-06-11T16:09:00.001-07:00</published><updated>2008-06-11T16:26:48.702-07:00</updated><title type='text'>Databinding in silverlight 2</title><content type='html'>Noticed a nice databinding article today on simple-talk newsletter by John Papa&lt;br /&gt;This is a nice one for developing applications using silverlight.&lt;br /&gt;&lt;a href="http://www.simple-talk.com/dotnet/.net-framework/data-and-silverlight-2-data-binding/"&gt;http://www.simple-talk.com/dotnet/.net-framework/data-and-silverlight-2-data-binding/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is another nice one for making waiting pages.. when your page is big or heavy while it takes the time to load.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.simple-talk.com/dotnet/asp.net/implementing-waiting-pages-in-asp.net/"&gt;http://www.simple-talk.com/dotnet/asp.net/implementing-waiting-pages-in-asp.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-2559913209293948757?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/2559913209293948757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=2559913209293948757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2559913209293948757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2559913209293948757'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/06/databinding-in-silverlight-2.html' title='Databinding in silverlight 2'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-8666515872806800900</id><published>2008-06-05T15:46:00.001-07:00</published><updated>2008-06-05T19:28:59.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight 2 Feature List</title><content type='html'>Here’s the What’s new feature list&lt;br /&gt;&lt;a title="http://blogs.msdn.com/silverlight_sdk/archive/2008/06/04/what-s-new-in-silverlight-2-beta-2.aspx" href="http://blogs.msdn.com/silverlight_sdk/archive/2008/06/04/what-s-new-in-silverlight-2-beta-2.aspx"&gt;http://blogs.msdn.com/silverlight_sdk/archive/2008/06/04/what-s-new-in-silverlight-2-beta-2.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-8666515872806800900?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/8666515872806800900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=8666515872806800900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/8666515872806800900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/8666515872806800900'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/06/silverlight-2-feature-list.html' title='Silverlight 2 Feature List'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-3241803259683291470</id><published>2008-06-04T23:36:00.001-07:00</published><updated>2008-06-05T19:28:25.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CAML Sharepoint'/><title type='text'>CAML Queries in Sharepoint</title><content type='html'>CAML Queries in sharepoint&lt;br /&gt;&lt;br /&gt;Looking for a way to filter lists in sharepoint, then caml will come to your help.&lt;br /&gt;&lt;br /&gt;Complex CAML Queries such as the following can be made:&lt;br /&gt;&lt;br /&gt;&amp;lt;view&amp;gt;&amp;lt;query&amp;gt;&amp;lt;orderby&amp;gt;&amp;lt;fieldref name=&amp;quot;Event_x0020_Date&amp;quot; ascending=&amp;quot;TRUE&amp;quot;&amp;gt;&amp;lt;/orderby&amp;gt;&amp;lt;where&amp;gt;&amp;lt;or&amp;gt;&amp;lt;eq&amp;gt;&amp;lt;fieldref name=&amp;quot;Lookup_x0020_Status&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Text&amp;quot;&amp;gt;{all}&amp;lt;/value&amp;gt;&amp;lt;/eq&amp;gt;&amp;lt;and&amp;gt;&amp;lt;and group=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;eq&amp;gt;&amp;lt;fieldref name=&amp;quot;ATS_x0020_Status&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Text&amp;quot;&amp;gt;Active&amp;lt;/value&amp;gt;&amp;lt;/eq&amp;gt;&amp;lt;or&amp;gt;&amp;lt;contains&amp;gt;&amp;lt;fieldref name=&amp;quot;Title&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Text&amp;quot;&amp;gt;{k}&amp;lt;/value&amp;gt;&amp;lt;/contains&amp;gt;&amp;lt;contains&amp;gt;&amp;lt;fieldref name=&amp;quot;Event_x0020_Description&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Note&amp;quot;&amp;gt;{k}&amp;lt;/value&amp;gt;&amp;lt;/contains&amp;gt;&amp;lt;/or&amp;gt;&amp;lt;/and&amp;gt;&amp;lt;and group=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;eq&amp;gt;&amp;lt;fieldref name=&amp;quot;Lookup_x0020_Status&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Text&amp;quot;&amp;gt;Active&amp;lt;/value&amp;gt;&amp;lt;/eq&amp;gt;&amp;lt;or&amp;gt;&amp;lt;contains&amp;gt;&amp;lt;fieldref name=&amp;quot;Lookup_x0020_Description&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Note&amp;quot;&amp;gt;{k}&amp;lt;/value&amp;gt;&amp;lt;/contains&amp;gt;&amp;lt;contains&amp;gt;&amp;lt;fieldref name=&amp;quot;Title&amp;quot;&amp;gt;&amp;lt;value type=&amp;quot;Text&amp;quot;&amp;gt;{k}&amp;lt;/value&amp;gt;&amp;lt;/contains&amp;gt;&amp;lt;/or&amp;gt;&amp;lt;/and&amp;gt;&amp;lt;/and&amp;gt;&amp;lt;/or&amp;gt;&amp;lt;/where&amp;gt;&amp;lt;/query&amp;gt;&amp;lt;/view&amp;gt;&lt;br /&gt;&lt;br /&gt;Here is a nice msdn example.. &lt;a href="http://msdn.microsoft.com/en-us/library/ms196939.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms196939.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;and&gt;and &lt;or&gt;can only be used to compare 2 boolean expressions. Doing otherwise results in a runtime error in Sharepoint Services (described by the ever-helpful "Cannot complete this action. Please try again." message).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_7OD5EjEDg1s/SEeK3dXF0sI/AAAAAAAAACQ/dQ4h-nHKGeg/s1600-h/CAML+Viewer1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5208284179456185026" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_7OD5EjEDg1s/SEeK3dXF0sI/AAAAAAAAACQ/dQ4h-nHKGeg/s320/CAML+Viewer1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you would like to do some advanced filtering it is better to get a Caml Viewer Tool such as stramitCamlViewer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_7OD5EjEDg1s/SEeKZyieZII/AAAAAAAAACI/Q9nh4XdzJNI/s1600-h/CAML+Viewer.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5208283669745001602" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_7OD5EjEDg1s/SEeKZyieZII/AAAAAAAAACI/Q9nh4XdzJNI/s320/CAML+Viewer.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using sharepoint designer to group Filters is the best way of grouping filters for doing some simple grouping.&lt;br /&gt;&lt;br /&gt;It would be great if microsoft can provide a advanced filtering option in the future sharepoint releases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_7OD5EjEDg1s/SEeJwtBFr0I/AAAAAAAAACA/5hqcPuGrlIU/s1600-h/CAML+Grouping.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5208282963888156482" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_7OD5EjEDg1s/SEeJwtBFr0I/AAAAAAAAACA/5hqcPuGrlIU/s320/CAML+Grouping.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hope this helps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-3241803259683291470?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/3241803259683291470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=3241803259683291470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/3241803259683291470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/3241803259683291470'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/06/caml-queries-in-sharepoint.html' title='CAML Queries in Sharepoint'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7OD5EjEDg1s/SEeK3dXF0sI/AAAAAAAAACQ/dQ4h-nHKGeg/s72-c/CAML+Viewer1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-3053656865601938310</id><published>2008-05-20T16:57:00.000-07:00</published><updated>2008-06-05T19:29:33.062-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'></title><content type='html'>&lt;a href="http://www.mtaulty.com/SLVideos.html"&gt;Nice silverlight 2 Developer Video's&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;For those of you who weren’t fortunate enough to go to REMIX 08&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;(~50) set of  Screencasts on Silverlight 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;a title="http://www.mtaulty.com/SLVideos.html" href="http://www.mtaulty.com/SLVideos.html"&gt;http://www.mtaulty.com/SLVideos.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-3053656865601938310?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/3053656865601938310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=3053656865601938310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/3053656865601938310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/3053656865601938310'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/05/nice-silverlight-developer-videos-for.html' title=''/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-2128186537438424803</id><published>2008-05-12T18:40:00.000-07:00</published><updated>2008-05-12T19:16:16.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>Looping image array and displaying them in sharepoint</title><content type='html'>&lt;div&gt;&lt;br /&gt;Hi Guys,&lt;br /&gt;&lt;br /&gt;Here I am going to look at XSLT Transformation and how to display a number of images like the following&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5199675502511476658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_7OD5EjEDg1s/SCj1Ugp_T7I/AAAAAAAAABU/G3O-6-_bkPs/s320/logos.JPG" border="0" /&gt;I have a page in Sharepoint where i am trying to display a array of images.&lt;br /&gt;I need to use XSL transformation to make this work using sharepoint designer.&lt;br /&gt;There is a @CompanyLogos Column(Lookup column with multiple values to a picture library image list) in my custom list.&lt;br /&gt;&lt;br /&gt;On the sharepoint page... call the template by passing in the value (@CompanyLogos= a.gif;b.gif;c.gif)&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_7OD5EjEDg1s/SCj4uAp_T9I/AAAAAAAAABk/t7T0gF9W7AY/s1600-h/calltemplate.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199679239133024210" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_7OD5EjEDg1s/SCj4uAp_T9I/AAAAAAAAABk/t7T0gF9W7AY/s320/calltemplate.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Click to preview &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Here is the definition for Template &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_7OD5EjEDg1s/SCj5cQp_T_I/AAAAAAAAAB0/faxLJZ02IMk/s1600-h/logotemplate.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5199680033701974002" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_7OD5EjEDg1s/SCj5cQp_T_I/AAAAAAAAAB0/faxLJZ02IMk/s320/logotemplate.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Click to preview &lt;/div&gt;&lt;div&gt;&lt;br /&gt;I found this template here&lt;br /&gt;http://www.stylusstudio.com/xsllist/199908/post40580.html &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-2128186537438424803?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/2128186537438424803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=2128186537438424803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2128186537438424803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2128186537438424803'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2008/05/looping-image-array-and-displaying-them.html' title='Looping image array and displaying them in sharepoint'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7OD5EjEDg1s/SCj1Ugp_T7I/AAAAAAAAABU/G3O-6-_bkPs/s72-c/logos.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-2089270708518698499</id><published>2007-10-28T22:16:00.000-07:00</published><updated>2007-10-28T22:17:49.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASHX Handler'/><title type='text'>ASHX handler in ASP.NET .ashx</title><content type='html'>Creating an ASHX handler in ASP.NET&lt;br /&gt;&lt;a id="ctl00_idMainContent_hlViewQuestionLink" rel="bookmark"&gt;&lt;/a&gt;&lt;br /&gt;Today a typical web application is not only about serving HTML to browsers, but also serving XML and other types of content. Say you are creating a RSS feed for your site, for example. RSS should be presented as XML and I will cover that specific case in another article (will be available in related articles when posted) but this particular article will just show you the basics of putting an ASHX page handler up. ProblemWe want to create a page on our site returning an XML file to the visitor. Possible solutionThere are lots of suggestions creating a regular ASPX page (say rss.aspx) and in Page_Load use Response.Write to return the XML. Example: public class RSS : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;private void Page_Load(object sender, System.EventArgs e)&lt;br /&gt;{&lt;br /&gt;Response.ContentType = "text/xml";&lt;br /&gt;Response.ContentEncoding = Encoding.UTF8;&lt;br /&gt;string sXml = BuildXMLString(); //not showing this function,&lt;br /&gt;//but it creates the XML string&lt;br /&gt;Response.Write( sXml );&lt;br /&gt;Response.End();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;This will indeed work, and since it is a regular page you have great options to improve performance just with some page declarations at the top of the rss.aspx file:&lt;br /&gt;&lt;!--OutputCache Duration="600" VaryByParam="None"--&gt;&lt;br /&gt;Now what's wrong with it? Well, basically nothing, but it is a fact that our page class (RSS) inherits from System.Web.UI.Page and that page handler is indented for serving aspx pages (i.e WebForms) and includes a lot of overhead not needed for just serving a simple XML file. Alternate solution There are other solutions. You can create your own page handlers, and you can even map your own file extentions to your handlers, for example you could invent your own file extention called .myspecialrss. Now you can (with some configurations settings in IIS/web.config) map all requests to whatever.myspecialrss to your own special file handler. However, needing to do some configurations are never fun to do - if even possible in a shared hosting scenario, therefore Microsoft has kindly given us a special filetype .ASHX which maps to the ASP.NET engine. Now what we are going to is is create a file - rss.ashx - which when called returns the same XML as in the example above. If you have forgotten why - the ashx handler doesn't give us all that overhead as a .aspx request does. So, start off by creating rss.ashx&lt;br /&gt;&lt;!--WebHandler Language="C#" Class="KBMentor2.RSSHandler"--&gt;&lt;br /&gt;Yes, thats correct, just one single line. It says the class for our Webhandler is called KBMentor2.RSSHandler, so we will now create that class. To put it simple - what happens is that when the request for rss.ashx comes to the ASP.NET engine it reads the rss.ashx file, sees that the class is KBMentor2.RSSHandler and therefore instantiates an object of that class. Now lets have a look at the handler class: RSSHandler.cs namespace KBMentor2&lt;br /&gt;{&lt;br /&gt;using System;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Web;&lt;br /&gt;public class RSSHandler : IHttpHandler&lt;br /&gt;{&lt;br /&gt;public void ProcessRequest (HttpContext context)&lt;br /&gt;{&lt;br /&gt;context.Response.ContentType = "text/xml";&lt;br /&gt;context.Response.ContentEncoding = System.Text.Encoding.UTF8;&lt;br /&gt;&lt;br /&gt;string sXml = BuildXMLString(); //not showing this function,&lt;br /&gt;//but it creates the XML string&lt;br /&gt;context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));&lt;br /&gt;context.Response.Cache.SetCacheability(HttpCacheability.Public);&lt;br /&gt;context.Response.Write( sXml );&lt;br /&gt;}&lt;br /&gt;public bool IsReusable&lt;br /&gt;{&lt;br /&gt;get { return true; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;And there you have it. Looks pretty much like the first code we created, doesn't it? As for caching, you can solve it by accessing the Cache object from your code, see the context.Response.Cache calls. &lt;br /&gt;&lt;a href="http://www.aspcode.net/Creating-an-ASHX-handler-in-ASPNET.aspx"&gt;http://www.aspcode.net/Creating-an-ASHX-handler-in-ASPNET.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-2089270708518698499?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/2089270708518698499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=2089270708518698499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2089270708518698499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/2089270708518698499'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2007/10/ashx-handler-in-aspnet-ashx.html' title='ASHX handler in ASP.NET .ashx'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-9084554863314285893</id><published>2007-10-22T15:55:00.000-07:00</published><updated>2007-10-22T15:58:20.289-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mailing list'/><title type='text'>Mailing list bounce backs and click through's</title><content type='html'>Working on improvements in Click Through's and Bounce backs in our elcom's community manager mailing list module.&lt;br /&gt;&lt;br /&gt;For anyone looking to start learning about mails, this would be a good starting point.&lt;br /&gt;&lt;a href="http://www.systemnetmail.com/"&gt;http://www.systemnetmail.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-9084554863314285893?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/9084554863314285893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=9084554863314285893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/9084554863314285893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/9084554863314285893'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2007/10/mailing-list-bounce-backs-and-click.html' title='Mailing list bounce backs and click through&apos;s'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-5851829348319446313</id><published>2007-10-15T15:40:00.000-07:00</published><updated>2008-06-05T19:29:24.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight is like the wild wild west</title><content type='html'>&lt;span style="font-family:Arial;color:black;"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Silverlight site which is good with tutorials&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;a href="http://www.designwithsilverlight.com/"&gt;http://www.designwithsilverlight.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/o:p&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/1819083789985768683-5851829348319446313?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/5851829348319446313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=5851829348319446313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/5851829348319446313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/5851829348319446313'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2007/10/silverlight-is-like-wild-wild-west.html' title='Silverlight is like the wild wild west'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1819083789985768683.post-6051554225306654516</id><published>2007-09-26T15:58:00.000-07:00</published><updated>2007-09-26T16:46:27.285-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Top 11 Visual Studio Tips</title><content type='html'>&lt;a href="http://www.chinhdo.com/chinh/blog/20070920/top-11-visual-studio-2005-ide-tips-and-tricks-to-make-you-a-more-productive-developer/"&gt;http://www.chinhdo.com/chinh/blog/20070920/top-11-visual-studio-2005-ide-tips-and-tricks-to-make-you-a-more-productive-developer/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;a worth reading even for seasoned professionals&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1819083789985768683-6051554225306654516?l=balaji-sridharan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balaji-sridharan.blogspot.com/feeds/6051554225306654516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1819083789985768683&amp;postID=6051554225306654516' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/6051554225306654516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1819083789985768683/posts/default/6051554225306654516'/><link rel='alternate' type='text/html' href='http://balaji-sridharan.blogspot.com/2007/09/top-11-visual-studio-tips.html' title='Top 11 Visual Studio Tips'/><author><name>Balaji Sridharan</name><uri>http://www.blogger.com/profile/11959321679996117151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
