<?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-4338701485226108481</id><updated>2011-12-23T11:27:08.832-08:00</updated><category term='Moses'/><category term='logoff'/><category term='Internet'/><category term='hotmail'/><category term='snow leopard'/><category term='share point'/><category term='Javascript'/><category term='apple'/><category term='ISO'/><category term='.Net'/><category term='mac os x'/><category term='Pagemethods'/><category term='CodeSmith'/><category term='Prophet'/><category term='Session'/><category term='Future'/><category term='samsung'/><category term='mackintosh'/><category term='Google'/><category term='Infragistics'/><category term='C#'/><category term='Steve Jobs'/><category term='sharepoint'/><category term='Bill Gates'/><category term='iPhone'/><category term='Telerik'/><category term='wss'/><category term='qwinsta'/><category term='NetTiers'/><category term='Virtual CD ROM Control Panel'/><category term='VB.Net'/><category term='iPad'/><category term='ASP.Net'/><category term='public key token'/><category term='terminal server'/><category term='HDTV'/><title type='text'>About .net,iphone,ipad,c#,ajax,asp.net</title><subtitle type='html'>About .Net,asp.net,iPhone,iPad,C#,Windows</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4338701485226108481.post-6922494987462697620</id><published>2011-12-21T09:32:00.000-08:00</published><updated>2011-12-21T09:37:51.148-08:00</updated><title type='text'>kendoUI - adding menu using web service</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;kendoUI is still in the beginning stages. Eventhough they have a commercial version there is quite a bit of functionalities needed before it can be fully used for a large application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I am not sure what is the best practice for using each control and I would like to know this myself from @Telerik. &amp;nbsp;But here is an example of how to populate the kendoMenu dynamically using a web-service.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;General approach is that each control/widget on the page should get the data from web-service. That way there is no server request. Now, our web-service can internally get the data from anywhere (database, xml file or any other appropriate way.) There will be a question about menu based on user-rights. But let's save that for later.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#1 - for now, let's assume that we have a web-service that has a function like following to return the menu details.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt; [WebService] //(Namespace = "http://WebService/")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; [System.ComponentModel.ToolboxItem(false)]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; [System.Web.Script.Services.ScriptService]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; public class WebService : System.Web.Services.WebService&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [WebMethod]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [ScriptMethod(ResponseFormat = ResponseFormat.Json)]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public List&lt;menuitem&gt; GetMenu()&lt;/menuitem&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&lt;menuitem&gt; items = new List&lt;menuitem&gt;();&lt;/menuitem&gt;&lt;/menuitem&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "", Title = "Home", Link = "default.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "", Title = "Edit", Link = "edit.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "", Title = "View", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Home", Title = "Login", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Home", Title = "Profile", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Home", Title = "Meetings", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Home", Title = "Logout", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Edit", Title = "Cut", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Edit", Title = "Copy", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; items.Add(new MenuItem() { ParentTitle = "Edit", Title = "Paste", Link = "view.aspx" });&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return items;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#2 - we can declare our MenuItem class having all possible properties that we want to make use of in the front-end. We may want to have some unique id, or type of menu etc. but below is a simpler form of such menu item class.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; public class MenuItem&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string ParentTitle { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string Title { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string Link { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public string IconUrl { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#3 - the html can be as simple as&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul id="menu"&gt;&lt;ul id="menu"&gt;&lt;div&gt;&lt;ul id="menu"&gt;&lt;div&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;ul id="menu"&amp;gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#4 - let's declare a separate javascript file that can contain the javascript code for jQuery and the interface for the web-service. Here is a default ajaxSetup method that contains all default values - that way we don't have to specify it everytime we make a web-service call via jQuery. Please note the contentType - if this is missed then parser error will be raised by jQuery.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;$.ajaxSetup({&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; type: 'POST',&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; contentType: "application/json; charset=utf-8",&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; dataType: "json",&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; data: "{}",&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; success: function(msg) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(msg.d);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; error: function(xhr, desc, ex) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(xhr.responseText);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(desc);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(ex);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#5 - I owe following code to&amp;nbsp;&lt;a href="http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/"&gt;http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Its better to keep things in a namespace as a good practice.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;function namespace(namespaceString) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; var parts = namespaceString.split('.'),&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parent = window,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; currentPart = '';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; for (var i = 0, length = parts.length; i &amp;lt; length; i++) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; currentPart = parts[i];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parent[currentPart] = parent[currentPart] || {};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parent = parent[currentPart];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; return parent;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;var myajax = namespace('myajax');&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#6 - now its better to keep the web-service method calls in its own javascript class (singleton). That way we can call it easily w/o knowing about all the ajax overhead (of specifying url etc)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;//Type.registerNamespace('myajax');&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;myajax.WebService = {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; Url: '/WebService.asmx/',&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; _Ajax: function(url, callback) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $.ajax({&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; url: url,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; success: callback&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; GetMenu: function(callback) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var url = this.Url + 'GetMenu';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this._Ajax(url, callback);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;You can expand above function to add new web-service methods when your service supports more methods. as you can see _Ajax function takes care of using jQuery internally to make the call and GetMenu function takes care of which Url should be used to call it. This is more like the code that is generated by .Net Script Manager for the web-service script references.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;#7 - now in your html following script is required to actually add the menu items.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt; $(document).ready(function() {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $("#menu").kendoMenu();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; myajax.WebService.GetMenu(function(menulist) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var menu = $("#menu").kendoMenu().data("kendoMenu");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var parentItem = null;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //jQuery.each(menulist.d, function(rec) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $(menulist.d).each(function(rec) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var parentItem = menu.element.children("li:contains('" + this.ParentTitle + "')");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (this.ParentTitle == '' || parentItem.length == 0) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; menu.append({ text: this.Title });&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; menu.append([{ text: this.Title}], parentItem);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here, we indicate that we want to convert &lt;/span&gt;&lt;br /&gt;&lt;ul id="menu"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; into kendoMenu. Then we call the web-service method GetMenu(). See the syntax of calling web-service method? Its 'myajax.WebService.GetMenu' - that is more elegant then trying to call $.ajax or $.post here.&lt;/span&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;the callback function receives the json list of MenuList class that was declared in the web-service. so callback method goes through each record of MenuList and appends an item using kendoMenu object's methods. It tries to find the parent using "title" of the menu item - you could change this to use any different method of finding the parent.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Notes:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This is just a sample of how we can create menu based on web-service return values. I believe there should be better way.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Question that I would raise here in terms of better practice is - should the menu 'html' be already rendered when the page renders or should it be loaded using javascript as above?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Telerik ASP.Net Rad Controls has a much richer objects for RadMenu and RadMenuItem to support a rich set of functionalities for images/checkboxes/finding menu item by text or parent etc. KendoUI still lacks all that&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here we have to look for parent using .element.children("li:contains") - this is kind of hodge podge of object oriented coding with html elements - and no serious developer would prefer that. kendoUI must support some methods like 'findMenuByText' to get the element we need.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Also append() should be allowed at menu-item level rather than at 'menu' level only.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-6922494987462697620?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/6922494987462697620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2011/12/kendoui-adding-menu-using-web-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6922494987462697620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6922494987462697620'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2011/12/kendoui-adding-menu-using-web-service.html' title='kendoUI - adding menu using web service'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-5747635045132699108</id><published>2011-12-20T14:29:00.000-08:00</published><updated>2011-12-20T14:29:47.299-08:00</updated><title type='text'>calling asp.net (asmx) web service from jquery .ajax()</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;There is lot of information out there on this very topic but I got errors while implementing it and finally fixed it. So I wanted to post my findings with example.1) When you create .Net ASMX Web Service, it will look like following:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;[WebService] //(Namespace = "http://WebService/")&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [System.ComponentModel.ToolboxItem(false)]&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;[System.Web.Script.Services.ScriptService]&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;public class WebService : System.Web.Services.WebService&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;[WebMethod]&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&amp;nbsp;public string HelloWorld()&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;return "Hello World";&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Here the attribute in bold is very important. That indicates that this service can be called from the Javascript+ajax methods.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;You may see&amp;nbsp;[ScriptMethod(ResponseFormat = ResponseFormat.Json)] attribute used for the Web-methods but this may not be necessary. At least when I ran the example I could run it successfully with and and without this attribute. Because the response format of the method will be determined based on the content-type used by the caller. Hence its important to set the 'content-type' from caller as below:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $.ajax({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: 'POST',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;contentType: "application/json; charset=utf-8",&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; url: 'http://localhost:1197/WebService.asmx/HelloWorld',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;dataType: "json",&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;data: "{}",&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; success: function(msg) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(msg.d);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; error: function(xhr, desc, ex) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(xhr.responseText);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(desc);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log(ex);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I was trying above example w/o 'contentType' and error function was called with 'parser error'. So having contentType in above is really important.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Passing "{}" for data is not that important when your functions do not have any parameters. I could successfully call function w/o it, but if you get errors, you can try that.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Same for dataType: "json" - I commented it out and returned value was still interpreted as "json". I believe - again this is due to the contentType.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/4338701485226108481-5747635045132699108?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/5747635045132699108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2011/12/calling-aspnet-asmx-web-service-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/5747635045132699108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/5747635045132699108'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2011/12/calling-aspnet-asmx-web-service-from.html' title='calling asp.net (asmx) web service from jquery .ajax()'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-2541735205337655267</id><published>2010-04-20T10:11:00.001-07:00</published><updated>2010-04-20T10:14:35.377-07:00</updated><title type='text'>$telerik not found in IIS 7 windows server 2008</title><content type='html'>Of course, I don't understand Spanish. But following blog was helpful when I got the error installing a asp.net-telerik-web app on IIS 7, Windows Server 2008. The App was running fine in IIS 6, windows server 2003. When installed on 2008, on the client side, got javascript error that '$telerik' not defined, Type not defined etc. &lt;br /&gt;&lt;br /&gt;http://msmvps.com/blogs/lalfaro/archive/2009/12/08/error-telerik-is-undefined-bajo-windows-2008-server-amp-iis-7.aspx&lt;br /&gt;&lt;br /&gt;From above blog, I found that the entry under the system.webserver/handlers need  preCondition="integratedMode,runtimeVersion2.0"  for the Telerik entry. Once I added that the application ran fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-2541735205337655267?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/2541735205337655267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/04/telerik-not-found-in-iis-7-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2541735205337655267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2541735205337655267'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/04/telerik-not-found-in-iis-7-windows.html' title='$telerik not found in IIS 7 windows server 2008'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-9082728753820975739</id><published>2010-03-17T11:46:00.000-07:00</published><updated>2010-03-17T11:50:20.158-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hotmail'/><title type='text'>Hotmail is painful</title><content type='html'>I still keep using Hotmail. But its very painful to use it:&lt;br /&gt;&lt;br /&gt;- I wanted to delete some old email addresses - but in the contact list it will only show the name and not the email address. Hence you have to open the contact and then delete it; cant delete them from the list itself.&lt;br /&gt;&lt;br /&gt;- when you type any email address in the [To] or [CC,BCC] boxes they are converted into some box with [x] next to it. You can't copy them any more and move it to one to another places like To-&gt;CC-&gt;Bcc etc. Also you cant simply use keyboard and update any addresses you have to use mouse to edit it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-9082728753820975739?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/9082728753820975739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/03/hotmail-is-painful.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/9082728753820975739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/9082728753820975739'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/03/hotmail-is-painful.html' title='Hotmail is painful'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-385727546963838657</id><published>2010-03-03T08:06:00.000-08:00</published><updated>2010-03-03T08:07:38.556-08:00</updated><title type='text'>Maps of War - Progress of Religion and War over time</title><content type='html'>Maps of War - Progress of Religion and War over time... very interesting flash graphics...&lt;br /&gt;&lt;a href="http://mapsofwar.com/images/Religion.swf"&gt;http://mapsofwar.com/images/Religion.swf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-385727546963838657?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/385727546963838657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/03/maps-of-war-progress-of-religion-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/385727546963838657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/385727546963838657'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/03/maps-of-war-progress-of-religion-and.html' title='Maps of War - Progress of Religion and War over time'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-8343745563999041878</id><published>2010-03-03T06:28:00.000-08:00</published><updated>2010-03-03T06:43:54.553-08:00</updated><title type='text'>will iPad be Windows Killer</title><content type='html'>Here is a thought from young enterpreneurs that iPad could be Windows Killer.&lt;br /&gt;&lt;a href="http://ycombinator.com/rfs6.html"&gt;http://ycombinator.com/rfs6.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Rather than being Windows Killer, iPad will replace Windows machines for your day-to-day use. But Windows machines will still coexist mainly for business applications and much of the development. Businesses will keep using Windows Servers to host their applications. Developers will continue building their apps using .Net and such Microsoft platforms and Windows will remain favorite platform for development purpose. &lt;br /&gt;&lt;br /&gt;With iPad people will be more interested in using web-baesd applications then iPad based applications. And to develop web-based applications you don't have to have Mac based systems. You can develop application in Windows and keep Windows/IIS/SQL Server as your back-end.&lt;br /&gt;&lt;br /&gt;iPad will put a dent in Windows PCs market share, but the Microsoft will still make profit out of iPad. People will prefer to use Outlook Calendar and synching with Outlook on their iPad. Microsoft will develop Office tools (iOffice) for iPad which will sell more than iWork. iOffice should be made cheaper and should not be 100$ it should be like 10$ and may be free for a lighter version. Even Office Live with iPad can be a big hit.&lt;br /&gt;&lt;br /&gt;And Microsoft will loose some customers in the beginning but will come back with iPad like tablets that run on entirely different OS rather than Windows. Microsoft has to realize that "Innovation takes place at Apple", but Apple has to realize that "Bussiness takes place at Microsoft".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-8343745563999041878?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/8343745563999041878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/03/will-ipad-be-windows-killer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8343745563999041878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8343745563999041878'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/03/will-ipad-be-windows-killer.html' title='will iPad be Windows Killer'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-2940047150980851852</id><published>2010-02-15T11:02:00.000-08:00</published><updated>2010-02-15T11:36:17.080-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Moses'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Bill Gates'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Prophet'/><title type='text'>Story of Steve Jobs (Jobes) - new moses, saviour, prophet</title><content type='html'>(This story was written in late 21st century and read first time in early 28th century)&lt;br /&gt;&lt;br /&gt;In the late 20th century there was a great kingdom of Sillicon Valley (Egypt) in the western america - hollyland as we know today was known as Hollywood then. There were two princes growing up in the kingdom - known as Gates (Ramsays) and Jobes (Moses). Jobes was very popular among the kingdom as the creative, genius, mercyful prince and Gates was notorious for his arrogant attitude.&lt;br /&gt;&lt;br /&gt;Jobes knew how to create the great pyramid called windows and use mouse. People welcomed him as the new heir to the throne when he first show-cased his Windows pyramids. &lt;br /&gt;&lt;br /&gt;But Gates did not like it. He stole the pyramid and the people Jobes had. &lt;br /&gt;Gates wanted to inherit the kingdom and create his own empire with Windows like Pyramids. He made the people of hollyland his slaves to make his own big pyramids and he created windows 3.1, 95, NT, 2000 etc.&lt;br /&gt;&lt;br /&gt;Gates threw Jobes out of his kingdom and Jobes went into exile to learn new tactics and to gain more power.&lt;br /&gt;&lt;br /&gt;Gates built many pyramids with all the slaves and monkeys that he had hired. There were many bugs in his pyramids and many of them fell to the earth like Millenium and Vista. He kept building service packs to hold the pyramids high but people were disappointed. They were helpless against the empire.&lt;br /&gt;&lt;br /&gt;Jobes came back and told all the people that they do not have to follow Gates. They can all free themselves from the bondage and he will take them to the hollyland where they can build their own little pyramids. They wont called slaves anymore and will call them developers. He told them this is what the God has decided and they should follow the path of God and not of Gates.&lt;br /&gt;&lt;br /&gt;Gates called upon Jobes to show his own magic if God was really with him. Jobes took out his iPod and then iPhone. People liked both. iPhone had fight with Gates' windows and iPhone won. &lt;br /&gt;&lt;br /&gt;People followed Jobes and asked him what does God wants them to do now. Jobes went on to the Mount Sinai to get the commandments from God. God gave him iPad and asked Jobes to give it to all the freedom loving people who are against Gates.&lt;br /&gt;&lt;br /&gt;On the way Jobes dropped the iPad and its camera and USB slot fell off. But he still showed it to the people without Camera and USB slot. &lt;br /&gt;&lt;br /&gt;People kept waiting to see the fallen parts, and still today in 28th century, there are romours that our pads will have camera and usb slots. Many prophet came and left us after Jobes (Moses) - they gave new testament of iPad and koran - but none gave us those missing pieces from God. &lt;br /&gt;&lt;br /&gt;King of Greece was so mad one time that he crucified one of the prophet for not being able to install camera in his iPad. &lt;br /&gt;&lt;br /&gt;Meanwhile, the people of far east invented parallelism (polytheism, multiple Gods) and can run multiple programs on their gPad (Google Pads).&lt;br /&gt;&lt;br /&gt;Followers of Koran and New Testament are still fighting with eastern people for multiple-gods. they only like single god and so be it on iPad - that's what the Jobes had said - if you want to run multiple programs on your iPad then start believing in multiple gods.&lt;br /&gt;&lt;br /&gt;Google was considered Pagan then because it allowed everything free. They enjoyed largest empire on earth then, they could not afford it anymore and all citizens of that kingdom started creating their own Pads and it went out of control.&lt;br /&gt;&lt;br /&gt;There still followers of Gates who roam around this earth stealing your iPads so keep them safe, otherwise, they will install the viruses on your iPads and it will install Windows on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-2940047150980851852?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/2940047150980851852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/02/story-of-steve-jobs-jobes-new-moses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2940047150980851852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2940047150980851852'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/02/story-of-steve-jobs-jobes-new-moses.html' title='Story of Steve Jobs (Jobes) - new moses, saviour, prophet'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-3346018864018085583</id><published>2010-02-08T08:10:00.001-08:00</published><updated>2010-02-08T08:18:12.561-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='HDTV'/><title type='text'>My new samsung led hdtv</title><content type='html'>I got a new Samsung LED HDTV on Friday 2/5/2010. Its UN46B6000.&lt;br /&gt;&lt;br /&gt;&gt; First, I connected Direct Comcast cable into the TV's Antenna. I have Basic Comcast package. Then I ran the tv's setup options to scan all available channels. And it scanned all the HD channels availalble and it was looking great. But I wanted to play the sound in my home-theater system. Unfortunately I did not see any Component Audio Out ports that I can use. So, I had to use the TV's audio for those HDTV channels as well.&lt;br /&gt;&lt;br /&gt;&gt; Then I got the Digital Receiver from Comcast. Comcast cables goes directly into the Receiver and Receiver's RF Out goes directly into the TV's Antenna. This box also had the Audio out ports that I connected to Audio In of the home-theater system. So, Audio worked fine. But the Video quality of TV was not as great as I expected. I was getting better quality w/o the digital receiver. So, I learned now I need to get an HD Receiver that will do the job.&lt;br /&gt;&lt;br /&gt;Other nice things about the TV were&lt;br /&gt;- I could plug in my iPhone to its USB and could see the pictures. Could not see any videos yet.&lt;br /&gt;- I could plug in my external Hard Disk via USB to the computer and see the pictures. Again, could not see any videos from Hard Disk.&lt;br /&gt;- I plugged in my PC monitor cable to the TV, and it was looking great. Very good quality on the TV screen (1080p).&lt;br /&gt;&lt;br /&gt;Looking forward to connect the TV to internet via regular LAN cable. There is LAN port. And see what all it can do. Also the wireless LAN adapter - but that costs &gt; 50 dollars so holding off on that for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-3346018864018085583?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/3346018864018085583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/02/my-new-samsung-led-hdtv.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/3346018864018085583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/3346018864018085583'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/02/my-new-samsung-led-hdtv.html' title='My new samsung led hdtv'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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><entry><id>tag:blogger.com,1999:blog-4338701485226108481.post-5110148426688402699</id><published>2010-02-01T07:04:00.001-08:00</published><updated>2010-02-01T08:06:42.246-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>can iPad rewrite internet</title><content type='html'>From conservative point of view, this thought may be laughable, ridiculous.&lt;br /&gt;&lt;br /&gt;Assuming that iPad and tablets like this will become as common as a notepad and sticky notes in your day-to-day life, would internet be limited to how its now via the servers, urls, domain names etc?&lt;br /&gt;&lt;br /&gt;There is one internet that exists for serious business - where there are servers, IT teams, professionals, web applications and all sorts of complex processes to make everything work. &lt;br /&gt;&lt;br /&gt;But then there is another internet, that is used by normal people to share their photos, videos and music files. They care less about how everything works, they just want to let others see what they have. And that's why the sites like Google Picasa, Flickr, Napster, YouTube all became famous and multi-million dollar business.&lt;br /&gt;&lt;br /&gt;When iPad and devices like this will be connected all the time via wireless they in a way form their own network. And each such device can have its own NETWORK ID (iID?) Today in my contact list, I store the phone number and email address of a person. But that can extend to storing the NETWORK ID of the device as well. Each device can have an area (folder) in which the owner can put sharable files. And others can browse these files and download it or play right from it. &lt;br /&gt;&lt;br /&gt;How easy would it be if you just browse other's iPad for their sharable content right from your iPad w/o going to url or browser or any html crap. It's like iLAN. &lt;br /&gt;&lt;br /&gt;Then there would be some directories that would store the iPad's NETWORK IDs and the publicly available content in it. Information holders can even make money out of their own such information. All that Content publishing would take is to shoot a video and store it in such area of their iPad. &lt;br /&gt;&lt;br /&gt;But, hard reality is Apple wants to be in between of all such transfers and they don't want any thing be published w/o their iTunes or AppStore. You can't even share ringtone. If they let go off their such greed or if Google or someone comes up with such freedom, we may see a new type of internet altogether in future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-5110148426688402699?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/5110148426688402699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/02/can-ipad-rewrite-internet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/5110148426688402699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/5110148426688402699'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/02/can-ipad-rewrite-internet.html' title='can iPad rewrite internet'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-4231840692754617516</id><published>2010-01-29T11:43:00.000-08:00</published><updated>2010-01-29T13:24:19.830-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Future'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>What future holds for iPad</title><content type='html'>Name&lt;br /&gt;------------&lt;br /&gt;Yes, Name sucks. May be because they have iPod, they wanted to rhyme it too closely with it. Steve Jobs must have written some poems using "iPod" and "iPad" words and iSlate, iNote, iTablet, iLet words did not rhyme. People are making fun of word 'iPad' because of similar feminine health product name. But if they had kept name iSlate, there would have been obscene jokes about that too.&lt;br /&gt;&lt;br /&gt;Features&lt;br /&gt;-----------&lt;br /&gt;Yes, its just another iPhone with bigger screen. It sits between iPod Touch and iPhone in a way that it does not offer calling via wireless network but supports 3G.&lt;br /&gt;&lt;br /&gt;Those who did not like it say&lt;br /&gt;&gt; It does not have camera&lt;br /&gt;&gt; It has got too big bezel&lt;br /&gt;&gt; Its aspect ratio is not 16x9&lt;br /&gt;&gt; It does not support Flash&lt;br /&gt;&gt; No parallel apps&lt;br /&gt;&lt;br /&gt;Those who like it say&lt;br /&gt;&gt; Its not for video chat, you can use laptop for that&lt;br /&gt;&gt; you can hold it without touching something by mistake&lt;br /&gt;&gt; you got 4x3 the standard tv ratio before new hdtvs&lt;br /&gt;&gt; flash is not secure and hogs the cpu&lt;br /&gt;&gt; hiya...hiya...&lt;br /&gt;&lt;br /&gt;Look at it this way&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;A small iPhone has created an IT market that never existed before. Development for blackberry or WindowsMobile wasn't that great. iPhone really attracted the consumers and the developers that what they can do with the mobile computing. &lt;br /&gt;&lt;br /&gt;Now, if Apple makes a bigger size iPhone then its neither magical nor even ground-breaking invention. They just had to do what they did ealier, with a big size screen and rest is imaginable. So, what people can be disappointed with is, its not a 'new' device. Just same but big size.&lt;br /&gt;&lt;br /&gt;But the potential for iPad still exists. Previously we used 800x600 monitors and the monitors kept getting bigger while the smaller resolution monitors are still used in many places - specially for point of sale at merchandise stores. Analogy may not be accurate in saying that iPad is an evolution from iPhone. iPhone and iPad has different audience and has different usage.&lt;br /&gt;&lt;br /&gt;Applications&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;&gt; Doctors/Health staff will be able to use iPad in their day-to-day work. A big screen with enough information about patient, x-rays, facesheets, prescriptions can be viewed easily.&lt;br /&gt;&lt;br /&gt;&gt; Sales team can use it on the road for apps like SalesForce.Com or CRM. The main advantage is not the screen size only, but the bootup time. It takes time loading a Windows machine, but this will be always ON. We will see Microsoft Office tools on this very soon.&lt;br /&gt;&lt;br /&gt;&gt; Executives will be soon carrying this instead of notepad for their calendar, notes and contact management.&lt;br /&gt;&lt;br /&gt;&gt; A UPS or FedEx guy may be carrying this to get delivery signatures. It would be nice if the touch-input can accept some pen size stylus then you can easily sign on it.&lt;br /&gt;&lt;br /&gt;&gt; A construction engineer will be carrying this at the site for measurements and inputting data. Engineer on the roof can input the dimension on this and get a drawing easily. &lt;br /&gt;&lt;br /&gt;&gt; Devices will be made to attach credit card reader and barcode scanners. So that you can use this at point of sale. If stores don't use it, this can be used at events.&lt;br /&gt;&lt;br /&gt;&gt; During exhibitions, stall executives can use this to show off their products to customers walking by. No need to bring them to the stall and display products on large screens. &lt;br /&gt;&lt;br /&gt;There is unlimited use of this beyond what people are talking about games, music and books. Don't think of this as an entertainment, time-spending instrument. Think of it as a money making instrument. You no more have to bring your customers to a place where you have hooked up your computer. You can just carry your business with you everywhere.&lt;br /&gt;&lt;br /&gt;Future of iPad&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;What would have amazed the people, which I think soon should be coming either in iPad or in competitive products:&lt;br /&gt;&lt;br /&gt;&gt; Sure, a camera. But two sided camera that you can turn to yourself or backside.&lt;br /&gt;&gt; Sure, parallel applications. no doubt about it.&lt;br /&gt;&gt; Bluetooth capacity with phone. A bluetooth device that you use with your phone should be able to be used with iPad. And iPad should allow video chat via this bluetooth receiver. If not over 3G, this should be possible over wi-fi.&lt;br /&gt;&gt; A pen-like writing tool for notes so you don't have to use keyboard. And the OCR that can transcribe what you are writing. You can store the notes either as image or transcribe and store as text.&lt;br /&gt;&gt; Speech-recognition. Not a major but executives may like it.&lt;br /&gt;&gt; Find another iPad via BlueTooth around you and then throw some of the info to another iPad - something like Bump in iPhone.&lt;br /&gt;&gt; Being able to share the desktop of multiple iPads like GoToMeeting or WebEx.&lt;br /&gt;&gt; Being able to place a regular paper on the iPad screen, and then write on the paper. iPad can behave like a carbon copy of what is written on the paper. That can be then stored as image/text etc. This would be a huge hit seriously.&lt;br /&gt;&gt; Sometime in distant future, iPad can have one side of it behave like a scanner. So you can slide the iPad over a page and scan the document. Wouldn't that be cool? if not iPad, at least a separate device can be made that can plug into bottom of iPad and then scan a document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-4231840692754617516?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/4231840692754617516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/i-am-looking-forward-for-ipad.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/4231840692754617516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/4231840692754617516'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/i-am-looking-forward-for-ipad.html' title='What future holds for iPad'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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><entry><id>tag:blogger.com,1999:blog-4338701485226108481.post-2696098643667695887</id><published>2010-01-29T11:35:00.000-08:00</published><updated>2010-01-29T11:39:14.706-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='terminal server'/><category scheme='http://www.blogger.com/atom/ns#' term='qwinsta'/><category scheme='http://www.blogger.com/atom/ns#' term='logoff'/><title type='text'>logoff user from (rdp) remote server</title><content type='html'>You are here because you have seen "The terminal server has exceeded the maximum number of allowed connections".&lt;br /&gt;&lt;br /&gt;You can check who is logged into the remote server by using command prompt (cmd.exe) on your machine:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc731503%28WS.10%29.aspx"&gt;qwinsta&lt;/a&gt; /server:RemoteServerName&lt;br /&gt;&lt;br /&gt;And you can logoff any user:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc731280%28WS.10%29.aspx"&gt;logoff&lt;/a&gt; SessionIDFromAbove /server:RemoteServerName&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-2696098643667695887?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/2696098643667695887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/logoff-user-from-rdp-remote-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2696098643667695887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2696098643667695887'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/logoff-user-from-rdp-remote-server.html' title='logoff user from (rdp) remote server'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-7908411463515655541</id><published>2010-01-28T11:46:00.000-08:00</published><updated>2010-01-28T11:47:38.919-08:00</updated><title type='text'>Windows Command Line completion with Tab key</title><content type='html'>A reference for Windows Command Line completion with Tab key:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/kb/kb00244407.aspx"&gt;http://technet.microsoft.com/en-us/kb/kb00244407.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I did not find it under HKCU but under HKLM. Whatever works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-7908411463515655541?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/7908411463515655541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/windows-command-line-completion-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/7908411463515655541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/7908411463515655541'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/windows-command-line-completion-with.html' title='Windows Command Line completion with Tab key'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-1469862088127055780</id><published>2010-01-27T06:36:00.000-08:00</published><updated>2010-01-27T06:38:27.161-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtual CD ROM Control Panel'/><category scheme='http://www.blogger.com/atom/ns#' term='ISO'/><title type='text'>How to use ISO image file</title><content type='html'>You need to install Virtual CD Rom Control Panel from microsoft site - &lt;a href="http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe"&gt;available here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A Microsoft Support Article for how to use this.  &lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/916902"&gt;http://support.microsoft.com/kb/916902&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some other articles for the same:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pcauthorities.com/windows-xp/how-to-use-iso-files-in-windows-xp"&gt;http://www.pcauthorities.com/windows-xp/how-to-use-iso-files-in-windows-xp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-1469862088127055780?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/1469862088127055780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/how-to-use-iso-image-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/1469862088127055780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/1469862088127055780'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/how-to-use-iso-image-file.html' title='How to use ISO image file'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-3865815099677823103</id><published>2010-01-19T08:57:00.001-08:00</published><updated>2010-01-19T08:57:53.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HDTV'/><title type='text'>Setting up HDTV</title><content type='html'>setting up HDTV and other hardware related info here:&lt;br /&gt;&lt;br /&gt;http://www.reghardware.co.uk/2009/08/19/hdtv_setup_guide/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-3865815099677823103?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/3865815099677823103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/setting-up-hdtv.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/3865815099677823103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/3865815099677823103'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/setting-up-hdtv.html' title='Setting up HDTV'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-19817061504665600</id><published>2010-01-19T08:38:00.000-08:00</published><updated>2010-01-19T08:39:36.835-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac os x'/><category scheme='http://www.blogger.com/atom/ns#' term='snow leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='mackintosh'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>hackintosh</title><content type='html'>I haven't tried this but worth storing the URL.&lt;br /&gt;&lt;br /&gt;http://www.ihackintosh.com/2009/01/install-mac-leopard-os-x-retail-dvd-on-a-ordinary-pc-with-boot-132-hack/&lt;br /&gt;&lt;br /&gt;Copied here for future reference from above URL.&lt;br /&gt;&lt;br /&gt;THNX  to David Eliott master behind the Boot 132 hack which allows us to Install OSX on P.C. with the Unmodified retail version of mac OSX Leopard. The main benifit of Retail install over modified distro install is with retail install you can update your system directly from apple software updater just like an original Mac Machine.So forget about iAtkos, kalyway, Leo4all etc. &amp; move with retail Install. &lt;br /&gt;.&lt;br /&gt;Requirement’s&lt;br /&gt;# A PC with Intel Core Processors and Chipset (AMD is not supported).&lt;br /&gt;# A retail Mac OS X DVD Installer Download Click here or Buy Click here.&lt;br /&gt;# Download the Chameleon for Hard Disk here.&lt;br /&gt;# Download the Boot-132 Generic ISO here.&lt;br /&gt;If don’t works than download the more modified version.&lt;br /&gt;# Download Boot-132 ISO with modified kexts here.&lt;br /&gt;Before we starts let’s see how it works &gt;&gt;&gt; you burn an Boot-132 Generic ISO (which has the bootloader on it) to a CD/DVD, after it gets to the boot prompt, you press ESC or ENTER and it prompts for a new BOOT DEVICE, you swap the BOOT CD/DVD with the LEO Retail DVD, you press enter and it shows you the name of the bootable partition from the DVD, you press enter and Leo starts to load. Some people pays money to E-FIX for this free &amp; simple trick.The guide is divided into two phase’s first one is for Installing the OSX &amp; second one is to elimnate the need of BootCD evry time while booting.Ready with your poison let’s start.&lt;br /&gt;First of All burn Boot-132 Generic ISO into a C.D. in following tutorial term Boot-132 Generic ISO is replaced with BootCD.&lt;br /&gt;&lt;br /&gt;Phase One &gt;&gt;&gt;&lt;br /&gt;&lt;br /&gt;1. Insert your BootCD into DVD/ROM and boot/start your PC.&lt;br /&gt;&lt;br /&gt;2. On the boot prompt, press Enter. You will be asked to enter a two-digit hexadecimal boot device (do not press any key).&lt;br /&gt;&lt;br /&gt;3. Remove the BootCD and replace it with the Mac OS X Retail DVD. Wait for the blinking light on your DVD drive to stop and then hit Enter (this will read your DVD drive and not your HD).&lt;br /&gt;&lt;br /&gt;4. Perform the Mac OS X Leopard installation. You may need to use Disk Utility (under the Utilities Menu) to partition and format your HD if you haven’t already. Make sure to select GUID (under Options).&lt;br /&gt;&lt;br /&gt;5. Restart after the installation and replace the Retail Mac OS X DVD with the BootCD.&lt;br /&gt;&lt;br /&gt;6. On the boot prompt, press Enter. This time, enter the two-digit hexadecimal of the drive where you installed OS X. Enter 80; if it doesn’t show the startup volume of your OS X, hit Esc. Try 81, and so on until you see your OS X volume. Select it and hit Enter.&lt;br /&gt;&lt;br /&gt;Now are in Leopard but you still won’t be able to boot your hackintosh without the BootCD. For overcome the BootCD you need to install external bootloader.&lt;br /&gt;&lt;br /&gt;Phase two &gt;&gt;&gt;&lt;br /&gt;&lt;br /&gt;1. Open Chameleon that you download’s early.&lt;br /&gt;&lt;br /&gt;2. Copy the contents of the Extra directory from the Generic.iso CD by drag &amp; drop in to the Extra Contents folder in Chameleon by following this simple procedure .&lt;br /&gt;&lt;br /&gt;Open the Generic.iso CD from your desktop. &gt;&gt;&gt; Double-click on the INITRD.IMG file. &gt;&gt;&gt; Double-click on the Extra folder. &gt;&gt;&gt; Drag the Extensions folder to the Extra Contents folder in Chameleon&lt;br /&gt;&lt;br /&gt;3. Double-click the Chameleon_DFE_for_Hard_Disk.pkg file and install to your hard disk.&lt;br /&gt;&lt;br /&gt;4. Remove the BootCD and reboot.&lt;br /&gt;&lt;br /&gt;5. You should now be able to boot into Leopard without the BootCD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-19817061504665600?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/19817061504665600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/hackintosh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/19817061504665600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/19817061504665600'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/hackintosh.html' title='hackintosh'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-8336658078509355353</id><published>2010-01-14T11:35:00.000-08:00</published><updated>2010-01-14T11:36:14.478-08:00</updated><title type='text'>Buy Farm House Near Ahmedabad-Nal Sarovar</title><content type='html'>&lt;a href="http://www.r2iclubforums.com/forums/f29/mt-ahmedabad-gujarat-1179/index4.html"&gt;Farm House Plotting Scheme around this area&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1) Surmya Life space- Synthesis (Famous old Bakeri Group)&lt;br /&gt;( I trust them because of their 50 years old reputation)&lt;br /&gt;&lt;br /&gt;2) Surmya Abode-Synthesis (Famous old Bakeri Group)&lt;br /&gt;&lt;br /&gt;3) Sterling Greenwood Sarovar City- Greenwood Properties&lt;br /&gt;Good Old Marwari Builder in city&lt;br /&gt;&lt;br /&gt;4) Krishna Upavan&lt;br /&gt;&lt;br /&gt;5) Bhavya Sarovar&lt;br /&gt;&lt;br /&gt;6) Nalsafari&lt;br /&gt;&lt;br /&gt;7) Ruturaj Palace Resort&lt;br /&gt;&lt;br /&gt;8) Krishna Farms&lt;br /&gt;&lt;br /&gt;9) Rituraj Village&lt;br /&gt;&lt;br /&gt;10) Kalptaru Lake City&lt;br /&gt;&lt;br /&gt;11) 100 Acres&lt;br /&gt;(Looks very good, but need deep pocket)&lt;br /&gt;&lt;br /&gt;12) Nalsarovar City&lt;br /&gt;(Sounds fishy)&lt;br /&gt;&lt;br /&gt;13) Kensville Golf Township&lt;br /&gt;(Need real deep pocket)&lt;br /&gt;&lt;br /&gt;14) Gulmohar Golf Township&lt;br /&gt;(Well Known- But need deep pocket again)&lt;br /&gt;&lt;br /&gt;15) Pelican Nest&lt;br /&gt;&lt;br /&gt;16) Pushparaj Villege&lt;br /&gt;&lt;br /&gt;17) Hiranandani Palace Gardens-Township&lt;br /&gt;&lt;br /&gt;18) Vatika the village&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-8336658078509355353?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/8336658078509355353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/buy-farm-house-near-ahmedabad-nal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8336658078509355353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8336658078509355353'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/buy-farm-house-near-ahmedabad-nal.html' title='Buy Farm House Near Ahmedabad-Nal Sarovar'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-7168894838458985755</id><published>2010-01-14T06:42:00.000-08:00</published><updated>2010-01-14T06:43:43.217-08:00</updated><title type='text'>keyboard short cut to create GUID in visual studio</title><content type='html'>Here is a blog entry about how to setup keyboard short cut for creating GUID.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mundeep.wordpress.com/2008/03/27/quickly-generating-guids-in-visual-studio-2008/"&gt;http://mundeep.wordpress.com/2008/03/27/quickly-generating-guids-in-visual-studio-2008/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the post, copied for my easy reference:&lt;br /&gt;&lt;br /&gt;1.Load Visual Studio 2008 and goto Tools -&gt; Macros -&gt; Macro Explorer (Alt-F8 for short)&lt;br /&gt;2.Right-click on “Macros” then select New Macro Project&lt;br /&gt;3.Name your project (eg. GUIDGenerator) and choose a location to save it (note no space allowed in Project Name).&lt;br /&gt;4.This should give you a new project with a “Module1″ sitting underneath it. Right-click on “Module1″ and select “Rename” to give it a more meaningful name (eg. GUIDGenModule).&lt;br /&gt;5.Double-click on the newly renamed module and you should be shown the Visual Studio Macro IDE.&lt;br /&gt;6.Enter the following code (the “D” in ToString can be customised see Leon’s article): &lt;br /&gt;◦view sourceprint?&lt;br /&gt;1 Sub Create_GUID()  &lt;br /&gt;&lt;br /&gt;2      DTE.ActiveDocument.Selection.Text = System.Guid.NewGuid().ToString("D").ToUpper()  &lt;br /&gt;&lt;br /&gt;3  End Sub &lt;br /&gt;7.Save and close the Macro IDE.&lt;br /&gt;8.Back in the main Visual Studio window goto Tools -&gt; Options&lt;br /&gt;9.Goto the “Keyboard” option under the “Environment” tab.&lt;br /&gt;10.In the “Show Commands Containing” text box type in “Create_GUID”&lt;br /&gt;11.Select the Macro sub that you just created from the list (it should be the only one)&lt;br /&gt;12.Click inside the “Press Shortcut Keys” textbox then press your desired keyboard shortcut for inserting a GUID (eg. Alt+G as Leon suggested makes a lot of sense).&lt;br /&gt;13.Ensure the “Use Shortcut in” option is “Global” and click on “Assign”&lt;br /&gt;14.Close the options window and you should be able to start using your keyboard shortcut to quickly insert GUIDs into text!&lt;br /&gt;15.If you have any other Visual Studio windows open at the time you will need to close them and reload for the macro for the macro to be loaded (or you can goto the Macro Explorer window and manually load your Macro project)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-7168894838458985755?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/7168894838458985755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/keyboard-short-cut-to-create-guid-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/7168894838458985755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/7168894838458985755'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/keyboard-short-cut-to-create-guid-in.html' title='keyboard short cut to create GUID in visual studio'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-6005646609515878389</id><published>2010-01-11T19:59:00.000-08:00</published><updated>2010-01-11T20:01:02.143-08:00</updated><title type='text'>sharepoint application templates  (like timesheet etc)</title><content type='html'>&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5807B5EF-57A1-47CB-8666-78C1363F127D&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=5807B5EF-57A1-47CB-8666-78C1363F127D&amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Windows SharePoint Services 3.0 Application Templates: All Templates&lt;br /&gt;&lt;br /&gt;Server Admin Templates:&lt;br /&gt;Server admin templates are created as site definitions, providing tighter integration and enhanced functionality within the Windows SharePoint Services platform. They will require a server administrator to install. If you do not have Central Server Admin rights, you can still install the site admin templates (see second list below) in the sites/workspaces that you own or administrate. &lt;br /&gt;Absence Request and Vacation Schedule Management &lt;br /&gt;Help Desk &lt;br /&gt;Budgeting and Tracking Multiple Projects &lt;br /&gt;Inventory Tracking &lt;br /&gt;Bug Database &lt;br /&gt;IT Team Workspace &lt;br /&gt;Call Center &lt;br /&gt;Job Requisition and Interview Management &lt;br /&gt;Change Request Management &lt;br /&gt;Knowledge Base &lt;br /&gt;Compliance Process Support Site &lt;br /&gt;Lending Library &lt;br /&gt;Contacts Management &lt;br /&gt;Physical Asset Tracking and Management &lt;br /&gt;Document Library and Review &lt;br /&gt;Project Tracking Workspace &lt;br /&gt;Event Planning &lt;br /&gt;Room and Equipment Reservations &lt;br /&gt;Expense Reimbursement and Approval Site &lt;br /&gt;Sales Lead Pipeline &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Site Admin Templates:&lt;br /&gt;Site admin templates are easy for site administrators to install in a template gallery without requiring server administration access. &lt;br /&gt;Board of Directors &lt;br /&gt;Employee Training Scheduling and Materials &lt;br /&gt;Business Performance Rating &lt;br /&gt;Equity Research &lt;br /&gt;Case Management for Government Agencies &lt;br /&gt;Integrated Marketing Campaign Tracking &lt;br /&gt;Classroom Management &lt;br /&gt;Manufacturing Process Management &lt;br /&gt;Clinical Trial Initiation and Management &lt;br /&gt;New Store Opening &lt;br /&gt;Competitive Analysis Site &lt;br /&gt;Product and Marketing Requirements Planning &lt;br /&gt;Discussion Database &lt;br /&gt;Request for Proposal &lt;br /&gt;Disputed Invoice Management &lt;br /&gt;Sports League &lt;br /&gt;Employee Activities Site &lt;br /&gt;Team Work Site &lt;br /&gt;Employee Self-Service Benefits &lt;br /&gt;Timecard Management&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-6005646609515878389?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/6005646609515878389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/sharepoint-application-templates-like.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6005646609515878389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6005646609515878389'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/sharepoint-application-templates-like.html' title='sharepoint application templates  (like timesheet etc)'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-8508598760153714264</id><published>2010-01-11T15:13:00.000-08:00</published><updated>2010-01-14T06:54:13.217-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wss'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><title type='text'>creating lists in sharepoint wss 3.0, vseWss 1.3</title><content type='html'>Good information on creating lists and custom lists here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.myitechnology.com/2009/06/how-to-create-list-templates-and-list.html"&gt;http://blog.myitechnology.com/2009/06/how-to-create-list-templates-and-list.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also about the error that you may receive:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.myitechnology.com/2009/06/fixing-feature-guid-for-list-template.html"&gt;http://blog.myitechnology.com/2009/06/fixing-feature-guid-for-list-template.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But the best way is, you create all the lists using SharePoint and then reverse engineer it using 'spshource' - some information on how to: &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/04/my-first-experience-with-spsource.aspx"&gt;http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/04/my-first-experience-with-spsource.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using SolutionGenerator has following disadvantage:&lt;br /&gt;&gt; For every ListTemplate or Instance etc, it creates a separate feature. You want to have one feature for your project/site that can install everything. Creating multiple features may not be desired in many cases like this.&lt;br /&gt;&gt; The lookup fields were not maintained in the schema.xml &lt;br /&gt;&lt;br /&gt;Remember when you add a lookup field in sharepoint, it has to be of type 'Single Line Text'. You can not use Number of Multi-line text or rich text as the Lookup field.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-8508598760153714264?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/8508598760153714264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/creating-lists-in-sharepoint-wss-30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8508598760153714264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8508598760153714264'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/creating-lists-in-sharepoint-wss-30.html' title='creating lists in sharepoint wss 3.0, vseWss 1.3'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-2286177270915808124</id><published>2010-01-11T06:55:00.000-08:00</published><updated>2010-01-11T07:01:05.460-08:00</updated><title type='text'>Kite flying festival - 14 Jan</title><content type='html'>In India Kite Flying is a big festival in Gujarat India, only behind Navratri and Diwali in terms of importance. While I dont want to make this a wiki article of Kite Flying, here are some links on it today:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dnaindia.com/india/slideshow_no-strings-attached_1333478"&gt;http://www.dnaindia.com/india/slideshow_no-strings-attached_1333478&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://beta.thehindu.com/life-and-style/leisure/article78494.ece"&gt;http://beta.thehindu.com/life-and-style/leisure/article78494.ece&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But look at following one - that argues many birds are killed during this festival because they get trapped in the flying kites. &lt;br /&gt;http://www.sindhtoday.net/news/1/90937.htm&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Look who is talking --- why don't you think about how many chickens you are going to eat today, before asking how many birds are killed by kites - which an accident rather than cruelty to fill your hunger.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-2286177270915808124?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/2286177270915808124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/kite-flying-festival-14-jan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2286177270915808124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/2286177270915808124'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/kite-flying-festival-14-jan.html' title='Kite flying festival - 14 Jan'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-6810455455351183125</id><published>2010-01-05T09:48:00.000-08:00</published><updated>2010-01-05T09:52:03.839-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='public key token'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='share point'/><title type='text'>How to find public key token for a .NET DLL or assembly</title><content type='html'>Here is a nice information from following blog:&lt;br /&gt;&lt;br /&gt;http://blogs.msdn.com/wriju/archive/2008/07/01/how-to-find-public-key-token-for-a-net-dll-or-assembly.aspx&lt;br /&gt;&lt;br /&gt;The command is: sn.exe -T &lt;assembly file name&gt;&lt;br /&gt;Please notice the captial T.&lt;br /&gt;&lt;br /&gt;I added this in the external tools to make it quick.&lt;br /&gt;Go to Tools-&gt;External Tools-&gt; Add &lt;br /&gt;"Find Public Key Token"&lt;br /&gt;&lt;br /&gt;Command = C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe&lt;br /&gt;&lt;br /&gt;Arguments = -T $(TargetPath)&lt;br /&gt;&lt;br /&gt;Notice that the sn.exe is inside VS 8 - even though you may have VS 9 for 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-6810455455351183125?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/6810455455351183125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/how-to-find-public-key-token-for-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6810455455351183125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6810455455351183125'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2010/01/how-to-find-public-key-token-for-net.html' title='How to find public key token for a .NET DLL or assembly'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-4356581285030989063</id><published>2009-12-29T09:45:00.001-08:00</published><updated>2009-12-29T10:19:42.235-08:00</updated><title type='text'>what colors to use for your web design</title><content type='html'>A nice article for programmers like me who are always confused about what colors to use:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://articles.sitepoint.com/article/color-for-coders"&gt;http://articles.sitepoint.com/article/color-for-coders&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another one for web site design:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://articles.sitepoint.com/article/principles-beautiful-web-design/2"&gt;http://articles.sitepoint.com/article/principles-beautiful-web-design/2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-4356581285030989063?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/4356581285030989063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/12/what-colors-to-use-for-your-web-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/4356581285030989063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/4356581285030989063'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/12/what-colors-to-use-for-your-web-design.html' title='what colors to use for your web design'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-65507083787329161</id><published>2009-12-28T10:42:00.000-08:00</published><updated>2009-12-28T10:43:32.751-08:00</updated><title type='text'>For Share Point Development</title><content type='html'>Just saw this one. Its a great list of things you need to be a Share Point Developer.&lt;br /&gt;&lt;br /&gt;http://blogs.msdn.com/pandrew/archive/2008/05/01/getting-started-with-sharepoint-development.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-65507083787329161?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/65507083787329161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/12/for-share-point-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/65507083787329161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/65507083787329161'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/12/for-share-point-development.html' title='For Share Point Development'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-8378717360511243903</id><published>2009-11-18T10:32:00.000-08:00</published><updated>2009-11-18T10:34:22.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>log4net or logging application block</title><content type='html'>some information here at: &lt;br /&gt;http://www.codeplex.com/entlib/Thread/View.aspx?ThreadId=10534&lt;br /&gt;&lt;br /&gt;pros and cons:&lt;br /&gt;http://weblogs.asp.net/lorenh/archive/2005/02/18/376191.aspx&lt;br /&gt;&lt;br /&gt;a thread:&lt;br /&gt;http://www.codeplex.com/entlib/Thread/View.aspx?ThreadId=11300&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-8378717360511243903?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/8378717360511243903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/11/log4net-or-logging-application-block.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8378717360511243903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/8378717360511243903'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/11/log4net-or-logging-application-block.html' title='log4net or logging application block'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-7990195593069591592</id><published>2009-11-12T09:52:00.000-08:00</published><updated>2009-11-12T09:54:03.556-08:00</updated><title type='text'>IIS on XP allowing upto 40 connection</title><content type='html'>Here is a blog that describes the issue:&lt;br /&gt;&lt;br /&gt;http://weblogs.asp.net/cazzu/archive/2003/10/10/31476.aspx&lt;br /&gt;&lt;br /&gt;Following command is described in it to set max upto 40:&lt;br /&gt;&lt;br /&gt;adsutil set w3svc/MaxConnections 40&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-7990195593069591592?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/7990195593069591592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/11/iis-on-xp-allowing-upto-40-connection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/7990195593069591592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/7990195593069591592'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/11/iis-on-xp-allowing-upto-40-connection.html' title='IIS on XP allowing upto 40 connection'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-481230133680817960</id><published>2009-10-16T06:43:00.000-07:00</published><updated>2009-10-16T11:43:56.868-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Pagemethods'/><title type='text'>How to get Browser height width on server side using ASP.Net Page Methods</title><content type='html'>You need to know how the ASP.Net Page methods work for this one. You may get some idea from this post as well.&lt;br /&gt;&lt;br /&gt;I am not very good at manipulating CSS and Javascript to find out current browser height/width and set the control height/width accordingly so that the page looks right in all types of browsers. Hence I needed to get the Browser Height/Width on the server side and then use the appropriate CSS file to show page correctly.&lt;br /&gt;&lt;br /&gt;1st - create Javascript functions to get the height/width:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function getBrowserWidth() {&lt;br /&gt;if (window.innerWidth) {&lt;br /&gt;return window.innerWidth;&lt;br /&gt;}&lt;br /&gt;else if (document.documentElement &amp;amp;&amp;amp; document.documentElement.clientWidth != 0) {&lt;br /&gt;return document.documentElement.clientWidth;&lt;br /&gt;}&lt;br /&gt;else if (document.body) {&lt;br /&gt;return document.body.clientWidth;&lt;br /&gt;}&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;function getBrowserHeight() {&lt;br /&gt;if (window.innerHeight) {&lt;br /&gt;return window.innerHeight;&lt;br /&gt;}&lt;br /&gt;else if (document.documentElement &amp;amp;&amp;amp; document.documentElement.clientHeight != 0) {&lt;br /&gt;return document.documentElement.clientHeight;&lt;br /&gt;}&lt;br /&gt;else if (document.body) {&lt;br /&gt;return document.body.clientHeight;&lt;br /&gt;}&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2nd - create a WebMethod in your code behind. I have put this method in my base page so I can use it from any aspx page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public static void SetResolution(int width, int height)&lt;br /&gt;{&lt;br /&gt;if (width &lt;= 1024) width = 1024;&lt;br /&gt;if (height &lt;= 768) height = 768;&lt;br /&gt;SiteSession.Current.BrowserWidth = width; //Session["BrowserWidth"] = width;&lt;br /&gt;SiteSession.Current.BrowserHeight = height; //Session["BrowserHeight"] = height;&lt;br /&gt;}//SetResolution&lt;br /&gt;&lt;br /&gt;3rd - now the goal is to call this page method at the time of login or at the time when page resizes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PageMethods.SetResolution(getBrowserWidth(), getBrowserHeight(), voidFn, voidFn);&lt;br /&gt;&lt;br /&gt;you can also create a function call it as:&lt;br /&gt;window.resize = function () { PageMethods.SetResolution(getBrowserWidth(), getBrowserHeight(), voidFn, voidFn); }&lt;br /&gt;&lt;br /&gt;Now, whenever the page loads and resizes, the browser height width will be stored into Session. You can use that while rendering next/other pages:&lt;br /&gt;&lt;br /&gt;4th - in your master page for all pages create a Header as below:&lt;br /&gt;&lt;br /&gt;&amp;lt;head id="Head1" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;And then add appropriate css file:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;protected override void OnPreRender(EventArgs e)&lt;br /&gt;{&lt;br /&gt;HtmlLink myHtmlLink = new HtmlLink();&lt;br /&gt;myHtmlLink.Href = string.Format("~/css/{0}", GetResFileName());&lt;br /&gt;myHtmlLink.Attributes.Add("rel", "stylesheet");&lt;br /&gt;myHtmlLink.Attributes.Add("type", "text/css");&lt;br /&gt;// Add the HtmlLink to the Head section of the page.&lt;br /&gt;Head1.Controls.Add(myHtmlLink);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public string GetResFileName()&lt;br /&gt;{&lt;br /&gt;string fileName = "1280x1024.css";&lt;br /&gt;if (SiteSession.Current.BrowserHeight &lt; 800)&lt;br /&gt;fileName = "1024x768.css";&lt;br /&gt;return fileName;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-481230133680817960?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/481230133680817960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/how-to-get-browser-height-width-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/481230133680817960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/481230133680817960'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/how-to-get-browser-height-width-on.html' title='How to get Browser height width on server side using ASP.Net Page Methods'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-601686594810568840</id><published>2009-10-16T06:28:00.001-07:00</published><updated>2009-10-16T06:36:25.168-07:00</updated><title type='text'>Happy Diwali</title><content type='html'>Here is President Obama wishing everyone Happy Diwali.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=SuiAW_6XKVM&amp;amp;feature=popular"&gt;http://www.youtube.com/watch?v=SuiAW_6XKVM&amp;amp;feature=popular&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He notes return of "Ram" that means he is more open than our psuedo-secular indian media and the leftists.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-601686594810568840?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/601686594810568840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/happy-diwali.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/601686594810568840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/601686594810568840'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/happy-diwali.html' title='Happy Diwali'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-6703702733871201612</id><published>2009-10-02T07:26:00.001-07:00</published><updated>2009-10-02T07:29:53.813-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jqocV0dSR_8/SsYOPIlV3hI/AAAAAAAAACI/yVcPBImzkY8/s1600-h/gandhi09.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 125px;" src="http://2.bp.blogspot.com/_jqocV0dSR_8/SsYOPIlV3hI/AAAAAAAAACI/yVcPBImzkY8/s320/gandhi09.gif" alt="" id="BLOGGER_PHOTO_ID_5388009657360309778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Today Google's Logo is Gandhi for G. Great! and Thank you Google.&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/PIYUSH%7E1/LOCALS%7E1/Temp/moz-screenshot.png" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/PIYUSH%7E1/LOCALS%7E1/Temp/moz-screenshot-1.png" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-6703702733871201612?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/6703702733871201612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/today-googles-logo-is-gandhi-for-g.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6703702733871201612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/6703702733871201612'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/today-googles-logo-is-gandhi-for-g.html' title=''/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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://2.bp.blogspot.com/_jqocV0dSR_8/SsYOPIlV3hI/AAAAAAAAACI/yVcPBImzkY8/s72-c/gandhi09.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4338701485226108481.post-927814379436669507</id><published>2009-10-01T07:30:00.000-07:00</published><updated>2009-10-01T07:58:04.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Session'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>How to use Session in ASP.Net</title><content type='html'>The traditional way of using Session in ASP.Net/C#/VB.Net has been to use Session["variablename"].&lt;br /&gt;&lt;br /&gt;Disadvantages of using Session this ways is:&lt;br /&gt;* You could have typo in the variable name and can get errors that takes time to figure out the reason.&lt;br /&gt;* Session["x"] will return an object that you would have to convert to the type that you need&lt;br /&gt;* You never know what are all the session variables used in the application and what is the size of session at any given time&lt;br /&gt;* There is no intellisense to tell you if a Session variable already exists&lt;br /&gt;* Different developers may use different names to store the same information in session&lt;br /&gt;&lt;br /&gt;A better approach of using Session is to create a (semi)singleton class as following.&lt;br /&gt;&lt;br /&gt;public class SiteSession&lt;br /&gt;{&lt;br /&gt;    private object _lock = new object();&lt;br /&gt;&lt;br /&gt;    //do not allow creating new objects of this&lt;br /&gt;    private SiteSession()&lt;br /&gt;    { ; }&lt;br /&gt;  &lt;br /&gt;    public static SiteSession Current&lt;br /&gt;   {&lt;br /&gt;         get&lt;br /&gt;         {&lt;br /&gt;                if(HttpContext.Current.Session["SiteSession"] == null)&lt;br /&gt;                {&lt;br /&gt;                      lock(_lock)&lt;br /&gt;                      {&lt;br /&gt;                                if(HttpContext.Current.Session["SiteSession"] == null)&lt;br /&gt;                                          HttpContext.Current.Session["SiteSession"] = new SiteSession();&lt;br /&gt;                      }&lt;br /&gt;                 }&lt;br /&gt;                 return (HttpContext.Current.Session["SiteSession"] as SiteSession);&lt;br /&gt;         }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public string SessionVar1 { get; set; }&lt;br /&gt;    public int SessionVar2 { get; set;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class BasePage : System.UI.Web.Page&lt;br /&gt;{&lt;br /&gt;        public SiteSession MySession { get { return SiteSession.Current; } }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now, whenever you use SiteSession.Current or MySession in the pages, you will see the intellisense for your session variable. This now helps keep all session variables at one spot.&lt;br /&gt;Also there is no typo any more. You don't have do the type conversion anymore.&lt;br /&gt;&lt;br /&gt;You can also create a base-class for your user controls and add MySession property to that user control. So, you will be able to access the session variables easily from your user control as well.&lt;br /&gt;&lt;br /&gt;In your static/page methods/web methods, you can use SiteSession.Current to access the session variables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-927814379436669507?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/927814379436669507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/how-to-use-session-in-aspnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/927814379436669507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/927814379436669507'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/10/how-to-use-session-in-aspnet.html' title='How to use Session in ASP.Net'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-3485903337030398754</id><published>2009-09-30T12:03:00.000-07:00</published><updated>2009-09-30T12:29:00.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Infragistics'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Telerik'/><title type='text'>Use Telerik - It's worth it; Not Infragistics</title><content type='html'>In Nov/Dec 2007, one of my client asked us to use Telerik controls. At first, I was skeptic and did not want to introduce one more new thing in the project. It was our first 2005, .net 2.0, Ajax project. (I am running behind others in technology ain't i?). Till then we had used 2003, .net 1.1 and very little Ajax.&lt;br /&gt;&lt;br /&gt;So, I ignored and when the saw first prototype with all .net native controls, they were so furious (obviously) because none of us were great graphics designers. And it was very poor looking application then.&lt;br /&gt;&lt;br /&gt;And I thought let me have a look at Telerik. Woila, it had everything I "did not want to do". (this is positive sentense). I did not want to create stylesheet myself and check how different colors look for a table or button or drop down blah..blah... I did not want to write javascript to add some dynamic value to drop down... did not want to design javascript menus.... and Telerik did everything.&lt;br /&gt;&lt;br /&gt;The best part was their Client object Model. They provide very rich set of Javascript classes for the controls that you are using that Javascript becomes fun to program. Javascript was my limitation - and they fulfilled it. Not that I don't know, but I don't like to write big javascript code. Even Firefox's FireBug helped debug the javascript.&lt;br /&gt;&lt;br /&gt;In 2008 I got to see Infragistics being used in a project. It was Windows Smart Client project. Now, Infragistics had lots of properties for everything. And all those property names were not intuitive. Like in .net controls you may have some property Visible=true/false. Infragistics won't have that property but instead a method Hide() or Show(). Shortcomings of Infragistics was not in terms of features but more in terms of the usability. We were using Office Green theme for Grids, but everytime we go to set theme, it would reset it.&lt;br /&gt;&lt;br /&gt;Then I checked to see if we can use it for Web development. But unfortunately their Javascript object model is not as strong as Telerik's ones. For example, to add a TAB to a TABSTRIP, you can use Javascript in Telerik controls, but Infragistic only does this from Server side. This is a true shortcoming.&lt;br /&gt;&lt;br /&gt;The Help documents of Infragistics is very poor; while Telerik help is really helpful.&lt;br /&gt;&lt;br /&gt;I finally bought Telerik controls in early 2009 and using it for my clients. They actually like the UI that I create using Telerik.&lt;br /&gt;&lt;br /&gt;I am not really paid by Telerik to write this post. This is just my honest opinion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4338701485226108481-3485903337030398754?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/3485903337030398754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/09/use-telerik-its-worth-it-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/3485903337030398754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/3485903337030398754'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/09/use-telerik-its-worth-it-not.html' title='Use Telerik - It&apos;s worth it; Not Infragistics'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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-4338701485226108481.post-1404827948036005854</id><published>2009-09-30T10:32:00.000-07:00</published><updated>2009-09-30T11:09:57.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetTiers'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeSmith'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>I hate NetTiers</title><content type='html'>If Eric Smith reads this, he certainly is not going to like the title. But over the time, the way NetTiers has been used in our project, the team has got so frustrated that I am using the strong "h" word. But I believe the fault is never of the tool but the way tool is used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I love CodeSmith in true sense. I have used CodeSmith since 2005 when I first found out about it and have always proposed using it wherever I have worked so far. I myself own CodeSmith and have made three other people to buy and use it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In 2008, I volunteered to join a project that was going through tough times - and one reason I wanted to join was because they were making use of CodeSmith and I thought I can definitely contribute. After joining I came to know that its not 'CodeSmith' that they use, they use 'NetTiers'. You will ask, what's the difference? But there is.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Somewhere in the early phase of the project, someone brought NetTiers to the table mainly for the reason of supporting both WebService and direct access w/o much coding. I believe primary reason of using any tool should not be just avoidance of some work. Because I believe the amount work balances out for the whole life cycle of the project - one or the other way. After introducing NetTiers, following problems started occuring:&lt;/p&gt;&lt;p&gt;* Every developer did not have Code Smith license. And honestly, companies won't buy it for everyone. They had one guy doing the NetTiers generation everytime. Now, he became the bottleneck. &lt;/p&gt;&lt;p&gt;* All developers started depending on the NetTiers generation everytime even a small database change was made. Even if a field is added, they would request NetTiers generation, and until it is done they would have to wait.&lt;/p&gt;&lt;p&gt;* The NetTiers generation caused updating all layers (bussiness objects, data access, comp. layer-services) for all the database objects. So, database changes done by other developers would also creep into main code while their relevant code changes in other layers were not committed. This requires then error fixing, code merge, exclude some source files etc.&lt;/p&gt;&lt;p&gt;* Developers started making temporary database calls right from their presentation layer to avoid waiting for NetTiers and then would forget that some code is not using NetTiers and in turn would fail with web-services.&lt;/p&gt;&lt;p&gt;* Now the real issue: Web-services in NetTiers is over the stored-procedure calls. they are not true business services. So, maintaining transaction over the web-services was next to impossible. I am still surprised why the architect/team leads could not see this on day one? Besides, what good is a call to Stored Procedure via web-service? This kind of feature just misleads people.&lt;/p&gt;&lt;p&gt;* Developers called GetAll().Find() type of method only to make the application slower. They never understood the drawback and noone told them either. &lt;/p&gt;&lt;p&gt;* To Update 100 records, you would have to create 100 objects and XML of those objects is passed over the web-service. Developer were not careful about this fact either.&lt;/p&gt;&lt;p&gt;* The small changes to database like varchar(50) to varchar(100) would also make application fail with some validation errors. And it requires to regenerate the NetTiers.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Most of above issues, as you see are because of lack of understanding by the development team; The facts that I disliked the most was - being dependent on the NetTiers regeneration for any changes.  I would like some freedom in a way that if I made some change to db, I would go to specific code/stored procedure and make relevant change. But NetTiers generates so many layers of code that there myriad number of places that one would have to change. &lt;/p&gt;&lt;p&gt;NetTiers may be good for very small systems, or admin applications that one or two people are working on. But you don't want to use it for large systems with bigger teams. Anyhow the budget of large systems and bigger teams would justify having custom business objects/data access layer.&lt;/p&gt;&lt;p&gt;At the same time, I would definitely create Custom templates and use Code Smith to generate the DEO/DTO (Data Entity/Transfer objects) and DAO (Data Access Objects), stored procedures etc.&lt;/p&gt;&lt;p&gt;I surely love CodeSmith for that purpose.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &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/4338701485226108481-1404827948036005854?l=piyushbhatt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://piyushbhatt.blogspot.com/feeds/1404827948036005854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://piyushbhatt.blogspot.com/2009/09/i-hate-nettiers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/1404827948036005854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4338701485226108481/posts/default/1404827948036005854'/><link rel='alternate' type='text/html' href='http://piyushbhatt.blogspot.com/2009/09/i-hate-nettiers.html' title='I hate NetTiers'/><author><name>piyush bhatt</name><uri>http://www.blogger.com/profile/16935182928293104358</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></feed>
