tag:blogger.com,1999:blog-73334762024-03-14T01:53:22.179+05:30MetrixMy personal blog... mostly technical posts and few things about me....Chinmayhttp://www.blogger.com/profile/00553884025120097399noreply@blogger.comBlogger125125tag:blogger.com,1999:blog-7333476.post-83065228422137021272010-04-06T09:43:00.001+05:302010-04-06T09:45:10.258+05:30Record Counter For Microsoft Dynamics CRM 4.0<a href="http://a33ik.blogspot.com/"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Andriy Butenko</span></a><span style="font-family: Verdana, sans-serif; font-size: x-small;"> demonstrates a code sample to display number of Records in current view in CRM 4.0 using a Plugin on CRM Team Blog. Click <a href="http://blogs.msdn.com/crm/archive/2010/04/05/record-counter-for-microsoft-dynamics-crm-4-0.aspx">here</a> for the code and article.</span>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-50604065856168451232009-11-20T15:31:00.003+05:302009-11-20T15:45:10.566+05:30Enforcing Leaf Node Selection in Select Subject Dialogue Box<div align="justify"><span style="font-family:verdana;font-size:85%;">Alright... it's been a while, I was planning something major and had to stop blogging, anyways now I am back[Hopefully with a bang] and here is a first <span id="SPELLING_ERROR_0" class="blsp-spelling-error">scriptlet</span> on <span id="SPELLING_ERROR_1" class="blsp-spelling-error">CRM</span>.<br /><br />Recently one of my colleague was facing an issue with Subject <span id="SPELLING_ERROR_2" class="blsp-spelling-error">Lookup</span> dialogue box. The requirement was to enable selection of only leaf-nodes i.e. any node with a child node should not be selected as a Subject. After little R&D I came up with the following<br /><br /><strong>Edit : \<span id="SPELLING_ERROR_3" class="blsp-spelling-error">CRMWeb</span>\_controls\<span id="SPELLING_ERROR_4" class="blsp-spelling-error">lookup</span>\<span id="SPELLING_ERROR_5" class="blsp-spelling-error">lookupsubject</span>.<span id="SPELLING_ERROR_6" class="blsp-spelling-error">aspx</span><br /></strong>In function <strong><span id="SPELLING_ERROR_7" class="blsp-spelling-error">applyChange</span></strong><br />just below the following statement<br /><em>if <span id="SPELLING_ERROR_8" class="blsp-spelling-error">currentSubject</span> != ""<br />{<br /></em>put this script…<br /><em>try{<br />if(document.getElementById(currentSubject.Id).parentNode.parentNode.attributes['isExpanded'])<br />{<br />alert('<span id="SPELLING_ERROR_9" class="blsp-spelling-error">saaary</span>.. <span id="SPELLING_ERROR_10" class="blsp-spelling-error">saary</span> <span id="SPELLING_ERROR_11" class="blsp-spelling-error">meri</span> <span id="SPELLING_ERROR_12" class="blsp-spelling-error">vajah</span> <span id="SPELLING_ERROR_13" class="blsp-spelling-error">se</span> <span id="SPELLING_ERROR_14" class="blsp-spelling-error">hai</span>..');<br />return;<br />}<br />}<br />catch(e)<br />{<br />alert('Error in <span id="SPELLING_ERROR_15" class="blsp-spelling-error">sadu</span> logic of leaf node selection.' + e.message);<br />}<br /><br /></em>I was in strange mood so I've put some garbage text in messages, basically first message box notifies end user when S/He tries to select a non-leaf node and the second message box says there was some error with the script.</span><span style="font-family:verdana;font-size:85%;"><br /></span></div><div align="justify"><span style="font-family:verdana;font-size:85%;">Seriously, I love <span id="SPELLING_ERROR_16" class="blsp-spelling-error">CRM</span> and the endless possibilities of unsupported customizations. :) I hope you got the message ... to make it clear, this is unsupported customization and if you end up with a dead fish please DO NOT blame me.<br /></div></span>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-84649008894302145862009-07-19T15:41:00.002+05:302009-07-19T15:42:02.803+05:30CRM 4.0 Hide the date part of a DateTime field<p align="justify"><span style="font-family:verdana;font-size:85%;">So this is pretty easy but rare to face scenario. If you check DateTime field's format options, it says Date Only and Date And Time. But what if I want to have Time Only? This is what some one asked recently, and I thought, let me give this one a try. Again, unsupported and all that blah blah blah goes here, just get over with it and get to the good part.</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">function HidDatePart(targetFieldName)<br />{<br /> crmForm.all[targetFieldName]DataValue = new Date();<br /> document.getElementById(targetFieldName).childNodes[0].childNodes[0].style.display = "none";<br /> document.getElementById(targetFieldName).childNodes[0].childNodes[1].style.display = "none";<br />}</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">just pass the targetFieldName parameter and you are good to go.</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">Remember you can't <strong>remove</strong> the date field using DOM operation, as it will start giving you errors.. Also by default time field is disabled, to enable it, it is necessary to add some value in Date Field. </span></p><div align="justify"><span style="font-family:verdana;font-size:85%;">Let me know if you need more help with this.</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-63107030024382539062009-07-19T15:26:00.003+05:302009-07-19T15:28:55.863+05:30Removing Activities after entity has been created in CRM 4.0<p align="justify"><span style="font-family:verdana;font-size:85%;">Recently, I've started working on CRM bit seriously. Basically, my areas of interest includes .Net and DHTML and lot many other technologies. But CRM was never there in my list till last January. After taking a long break [Trust me anything beyond few hours away from computers, is LONG for me], in January, I realized, that I needed to give it a shot and since then the journey has been AWESOME!!! And here one of the problem I solved recently while helping out someone. If you have worked with CRM, you know how it makes your life really interesting some times. Like you can not disable the relationship between a custom made entity and notes/activities once you have created it. I am damn sure, it was some pressing dead line or/and regression testing would have shown some strange behavior on removal of the same so dev team might have decided to lock it permanently once it is created. And as usual sometimes you might wanna get rid of Activities from your custom relationship as a result of design change or maybe just for a challenge... in that case... here is a hack that might come handy. Only limitation is you will have to delete the entity and then recreate it after a few changes in the customization xml. So if you have any existing data, this is not what you should be doing[You should be looking for the guy or gal who designed your solution right?].</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">Standard ToCs applies and... yes.. you get me right... if something goes wrong I DO NOT Take any responsibility of any kind of damage that might occur due to this little hack.</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">Here is what I did to remove activities from my custom entity.<br />- Export the customization.<br />- Extract and open the customization xml.<br />- Open the xml file in Visual Studio or any other xml/text editor of your choice.<br />- Change<br /><HasRelatedActivities>True</HasRelatedActivities><br />to<br /><HasRelatedActivities>False</HasRelatedActivities><br />- Remove<br /><EntityMask>ActivityPointer</EntityMask><br />- Remove ActivityPointerRegardingName from <DisplayMaskElement><br />- Remove following <EntityRelationship> elements.<br />- _ActivityPointers<br />- _Appointments<br />- _Emails<br />- _Faxes<br />- _Letters<br />- _PhoneCalls<br />- _ServiceAppointments<br />- _Tasks </span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">- Save the xml file.<br />- Import and publish the customization xml file. </span></p><div align="justify"><span style="font-family:verdana;font-size:85%;">Let me know how it goes, as I would love to hear whether it worked for you or not.</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-26748785881310642232009-06-29T20:42:00.005+05:302009-06-29T20:51:15.219+05:30Adding a Custom Button to Advanced Find in CRM 4.0<div align="justify"><p><span style="font-family:verdana;font-size:85%;">Have you ever observed how powerful Advanced Find dialogue can be in the right hands? Well apart from looking at the customized result set and providing total control to filter the data Advanced Find can be used for some really cool tricks. Recently, I had to face a situation where I needed to turn Advanced Find into some bit simpler find by removing some functionalist and by adding a simple button on the Grid Toolbar.</span></p><p><span style="font-family:verdana;font-size:85%;">I managed it somehow in few hours and thought to share it with you, just in case you also fall in the same trap some day. So here it goes, just note that, modifying Advanced Find is <strong>NOT</strong> at all supported and I <strong>DO NOT</strong> take any responsibility what so ever if you follow the steps I've mentioned below and end up with any kind of damage[mental\physical\financial\social\...]. </span></p><p><span style="font-family:verdana;font-size:85%;">Here are steps to add a button to advanced find window<br />1. Go to CRM Installation directory and navigate to \CRMWeb\AdvancedFind\. Mostly you will have to go to C:\Program Files\Microsoft Dynamics CRM\CRMWeb\AdvancedFind.<br />2. Take a back up of AdvFind.aspx.<br />3. Open AdvFind.aspx in any text editor. [Visual Studio is recommended though].<br />4. locate the first </form> tag.<br />5. Copy-paste the following line : <input type="button" onclick="Alert('Hey!!!... I am in Advanced Find Window...')" value="Click Me!!!" /><br />6. Save and Close the file.<br />7. Go to CRM and click on Advanced Find... Dialogue. You will see a long ugly button on top. Click on it to see the message.<br />This is a simple approach I've followed. There can be tons of things you can do. You can skin it to look like the real CRM buttons and then replace the alert message with some really useful and complex logic. </span></p><p><span style="font-family:verdana;font-size:85%;">Anyways, I took it little further and added the following script and removed the button from the previous step.</span></p><p><span style="font-family:verdana;font-size:85%;"><script language="javascript" type="text/javascript"><br />function DoIt() {<br />var template = document.getElementById("btnEditProperties");<br />var newNode = document.createElement(template.tagName);<br />newNode.setAttribute("class", "ms-crm-Menu");<br />newNode.setAttribute("tabIndex", "-1");<br />newNode.setAttribute("title", "Visit Metrix...");<br />var magic = "<SPAN class=ms-crm-Menu-Label><A class=ms-crm-Menu-Label tabIndex=-1 onclick='return false;' href='javascript:onclick();' target=_self><IMG class=ms-crm-Menu-ButtonFirst tabIndex=-1 alt='Visit Metrix....' src='/_imgs/vieweditor/16_viewProps.gif'><SPAN class=ms-crm-MenuItem-TextRTL tabIndex=0>http:\\\\</span><a href="http://metrix.blogspot.com/"><span style="font-family:verdana;font-size:85%;">metrix.blogspot.com</span></a><span style="font-family:verdana;font-size:85%;"></SPAN></A></SPAN>";<br />newNode.insertAdjacentHTML("afterBegin", magic);<br />template.parentNode.appendChild(newNode);<br />}<br />DoIt();<br /></script></span></p><p><span style="font-family:verdana;font-size:85%;">and I got this : </span><span style="font-family:verdana;font-size:85%;"></span></p><a href="http://cid-221ac4cc2c83e3f1.skydrive.live.com/self.aspx/Public/BlogStore/Hacked.png"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 301px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5352768877682311058" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLq1AwkaNj60qXBlhK7dscV4_xoI1wdXjnCu7yVVhKBISZA9wPYLc5b78ubzYUO7RiNzLKP7b3-wj7ItDuFoRo9_VQ_KER-hTRHEBwgFmuL03ba3umpy6e5hlCdf0DhJQTQm3FQQ/s400/Hacked.png" /></a> <p><span style="font-family:verdana;font-size:85%;">Also you might want to add a little delay in the execution of the script by using window.setTimeout method otherwise it will give error in case the grid is not loaded by the time script is called.</span></p></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com3tag:blogger.com,1999:blog-7333476.post-86591890819704084882009-06-22T20:00:00.003+05:302009-06-22T20:01:51.603+05:30Hide Elements on OnLoad in CRM 4.0/CRM 3.0<p align="justify"><span style="font-family:verdana;font-size:85%;">I know it is pretty simple to do but I see there are posts popping up here and there for the same. So here it is, a very simple script to hide form elements in CRM during page load. You can call the function from any where any time once you have put it on OnLoad event of the page.</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">document.HideElement = function(elementId) {<br />if (document.getElementById(elementId))<br />document.getElementById(elementId).style.display = 'none';<br />} </span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">And here how you can use this function to hide various elements when CRM form loads </span><p align="justify"><span style="font-family:verdana;font-size:85%;">document.HideElement("_MBcrmFormSave"); // Hides Save button<br />document.HideElement("_MBcrmFormSaveAndClose"); // Hides Save And Close button </span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">to hide an element say for example : AccountValue, following will be the code snippet </span><p align="justify"><span style="font-family:verdana;font-size:85%;">document.HideElement("skynet_AccountValue_c");<br />document.HideElement("skynet_AccountValue_d");<br />document.HideElement("skynet_AccountValue");<br /></p></span><p align="justify"><span style="font-family:verdana;font-size:85%;"></span></p><p align="justify"><span style="font-family:verdana;font-size:85%;"></span></p><p align="justify"><span style="font-family:verdana;font-size:85%;"></span></p><p align="justify"><span style="font-family:verdana;font-size:85%;"></span></p>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com1tag:blogger.com,1999:blog-7333476.post-28576741061945869282009-06-17T11:23:00.003+05:302009-06-17T11:24:27.548+05:30Will The Real GAC Folder Structure Please Show Up?<div align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">This is taken from a blog here : </span><a href="http://weblogs.asp.net/jkey/archive/2003/02/25/3006.aspx"><span style="font-family:verdana,sans-serif;font-size:85%;">http://weblogs.asp.net/jkey/archive/2003/02/25/3006.aspx</span></a></div><div align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;"></span></div><div align="justify"><span style="font-family:Verdana;font-size:85%;">Just in case the above mentioned blogpost is gone, here is the command to 'mount' GAC as a drive.</span></div><div align="justify"><span style="font-family:Verdana;font-size:85%;"></span></div><div align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">subst x: "c:\windows\assembly\gac"</span></div><div align="justify"><span style="font-family:Verdana;font-size:85%;"></span></div><div align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">It solves the universal problem for the developers who wants to dissemble .net assemblies which are registered in GAC. Enjoy!!!</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-77780628266374304112009-06-16T19:23:00.002+05:302009-06-16T19:24:16.215+05:30Disable Page Close Confirmation in CRM 4.0<p align="justify"><span style="font-family:verdana;font-size:85%;">If you have worked with CRM, then you must have observed an annoying popup message whenever you try to close a form once you have made any changes to it. In certain cases, you might like to avoid showing that dialogue. In one of the recent engagements, I had to change some values on the form when it loads but then users started complaining that even if they don't change anything they are presented with the dialogue box asking to save the record. And then what I had to put a crmForm.Save(); statement after I've changed the values[That's lame I know...]. However, I stumbled upon on this unsupported and undocumented function that helps you get rid of that irritating popup. Use it wisely and you will be good to go :</span></p><div align="justify"><span style="font-family:verdana;font-size:85%;">crmForm.detachCloseAlert()</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-17048840632840839162009-06-03T11:04:00.002+05:302009-06-03T11:05:00.564+05:30Scrolling Announcements on Home Page for CRM 4.0<p class="ExternalClassAC7E00F6E2BA49BA8C72F51F007D1301" align="justify"><span style="font-family:verdana;font-size:85%;">Lately, I've started looking into problems people face when dealing with CRM. Well it is a part of my job and provides me a great learning opportunity. </span></p><p class="ExternalClassAC7E00F6E2BA49BA8C72F51F007D1301" align="justify"><span style="font-family:verdana;font-size:85%;">A day or two before I got this requirement : The end user wanted to scroll Announcements[CRM entity : newsarticle] on top of home page. I made a simple script which can be used. This one fetches all Announcements so you might want to set some filters like expiry date or active on date.</span></p><p class="ExternalClassAC7E00F6E2BA49BA8C72F51F007D1301" align="justify"><span style="font-family:verdana;font-size:85%;">Here are the steps to scroll announcement on CRM Home page. Kindly note that I do not take any responsibility if something goes wrong with this approach.<br />1. Go to CRMWeb\_root\ and take backup of bar_top.aspx and keep it safe somewhere. In case things goes wrong, you will need it to restore things back.<br />2. Open bar_top.aspx in Visual Studio<br />3. Add the following code snippet at the end of the file.</span></p><p class="ExternalClassAC7E00F6E2BA49BA8C72F51F007D1301" align="justify"><span style="font-family:verdana;font-size:85%;"><!-- SCRIPT BEGIN : Scroll Announcements --><br /><br /><script type="text/javascript" language="javascript"><br /> window.attachEvent('onload', ScrollAnnouncement);<br /><br /> function ScrollAnnouncement() {<br /> var xml = "" +<br />"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +<br />"<soap:Envelope xmlns:soap=\"</span><a href="http://schemas.xmlsoap.org/soap/envelope/"><span style="font-family:verdana;font-size:85%;">http://schemas.xmlsoap.org/soap/envelope/</span></a><span style="font-family:verdana;font-size:85%;">\" xmlns:xsi=\"</span><a href="http://www.w3.org/2001/XMLSchema-instance"><span style="font-family:verdana;font-size:85%;">http://www.w3.org/2001/XMLSchema-instance</span></a><span style="font-family:verdana;font-size:85%;">\" xmlns:xsd=\"</span><a href="http://www.w3.org/2001/XMLSchema"><span style="font-family:verdana;font-size:85%;">http://www.w3.org/2001/XMLSchema</span></a><span style="font-family:verdana;font-size:85%;">\">"<br />+ GenerateAuthenticationHeader()<br />+<br />" <soap:Body>" +<br />" <Execute xmlns=\"</span><a href="http://schemas.microsoft.com/crm/2007/WebServices"><span style="font-family:verdana;font-size:85%;">http://schemas.microsoft.com/crm/2007/WebServices</span></a><span style="font-family:verdana;font-size:85%;">\">" +<br />" <Request xsi:type=\"RetrieveMultipleRequest\" ReturnDynamicEntities=\"true\">" +<br />" <Query xmlns:q1=\"</span><a href="http://schemas.microsoft.com/crm/2006/Query"><span style="font-family:verdana;font-size:85%;">http://schemas.microsoft.com/crm/2006/Query</span></a><span style="font-family:verdana;font-size:85%;">\" xsi:type=\"q1:QueryExpression\">" +<br />" <q1:EntityName>businessunitnewsarticle</q1:EntityName>" +<br />" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +<br />" <q1:Attributes>" +<br />" <q1:Attribute>articletitle</q1:Attribute>" +<br />" </q1:Attributes>" +<br />" </q1:ColumnSet>" +<br />" <q1:Distinct>false</q1:Distinct>" +<br />" </Query>" +<br />" </Request>" +<br />" </Execute>" +<br />" </soap:Body>" +<br />"</soap:Envelope>" +<br />"";<br /><br /> var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");<br /><br /> xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);<br /> xmlHttpRequest.setRequestHeader("SOAPAction", "</span><a href="http://schemas.microsoft.com/crm/2007/WebServices/Execute"><span style="font-family:verdana;font-size:85%;">http://schemas.microsoft.com/crm/2007/WebServices/Execute</span></a><span style="font-family:verdana;font-size:85%;">");<br /> xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");<br /> xmlHttpRequest.setRequestHeader("Content-Length", xml.length);<br /> xmlHttpRequest.send(xml);<br /><br /> var resultXml = xmlHttpRequest.responseXML;<br /><br /> var entityNode = resultXml.selectNodes("//BusinessEntities")[0];<br /> var marqueeHTML = "<marquee class='ms-crm-MastHead-SignIn-User'>";<br /> for (var i = 0; i < entityNode.childNodes.length; i++) {<br /> if (i == 0) {<br /> marqueeHTML += entityNode.childNodes[i].childNodes[0].childNodes[0].text<br /> } else {<br /> marqueeHTML += "&nbsp; &nbsp; " + entityNode.childNodes[i].childNodes[0].childNodes[0].text;<br /> }<br /> }<br /> marqueeHTML += "<marquee>";<br /><br /> var headerTD = document.getElementById("tdLogoMastHeadBar");<br /> headerTD.innerHTML += marqueeHTML;<br /> }<br /></script><br /><br /><!-- SCRIPT END : Scroll Announcements --><br /></span></p><span style="font-family:verdana;"><p class="ExternalClassAC7E00F6E2BA49BA8C72F51F007D1301" align="justify"><br /></p><span style="font-size:85%;"></span></span><div class="ExternalClassAC7E00F6E2BA49BA8C72F51F007D1301" align="justify"><span style="font-family:verdana;font-size:85%;">4. Check on home page.<br />You will see a scrolling marquee of the announcements title on CRM Header. </span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com2tag:blogger.com,1999:blog-7333476.post-35110088063746976692009-06-01T13:40:00.009+05:302009-10-12T17:42:51.333+05:30Hiding Menu Items from top menu bar in CRM 4.0<div align="justify"><span style="font-family:verdana;font-size:85%;">Here is a little script which you can call to hide menu item from top menu. </span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span></div><div align="justify"><span style="font-family:verdana;font-size:85%;">Put this script on page load or on any other event where you would like it.<br /></span></div><div align="justify"><span style="font-family:verdana;"><span style="font-size:85%;">You might also wanna add it as document.<em><span id="SPELLING_ERROR_0" class="blsp-spelling-error">HideMenuItem</span> = new function(<span id="SPELLING_ERROR_1" class="blsp-spelling-error">targetMenu</span>, <span id="SPELLING_ERROR_2" class="blsp-spelling-error">targetMenuItem</span>) {//code goes here};<br /><br /></em></span></span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span></div><div align="justify"><em><span style="font-family:verdana;font-size:85%;">function <span id="SPELLING_ERROR_3" class="blsp-spelling-error">HideMenuItem</span>(<span id="SPELLING_ERROR_4" class="blsp-spelling-error">targetMenu</span>, <span id="SPELLING_ERROR_5" class="blsp-spelling-error">targetMenuItem</span>) {<br />var <span id="SPELLING_ERROR_6" class="blsp-spelling-error">menuLIs</span> = document.<span id="SPELLING_ERROR_7" class="blsp-spelling-error">getElementById</span>("<span id="SPELLING_ERROR_8" class="blsp-spelling-error">mnuBar</span>1").<span id="SPELLING_ERROR_9" class="blsp-spelling-error">getElementsByTagName</span>("LI");</span></em></div><div align="justify"><em><span style="font-family:verdana;font-size:85%;">for (var i = 0; i < <span id="SPELLING_ERROR_11" class="blsp-spelling-error">menuLIs</span>.length; i++) {<br />if (<span id="SPELLING_ERROR_12" class="blsp-spelling-error">menuLIs</span>[i].title && menuLIs[i].title.indexOf(targetMenu) > -1) {<br />var <span id="SPELLING_ERROR_13" class="blsp-spelling-error">targetDivs</span> = <span id="SPELLING_ERROR_14" class="blsp-spelling-error">menuLIs</span>[i].<span id="SPELLING_ERROR_15" class="blsp-spelling-error">getElementsByTagName</span>("DIV");<br />for (var j = 0; j < <span id="SPELLING_ERROR_17" class="blsp-spelling-error">targetDivs</span>.length; j++) {<br />var <span id="SPELLING_ERROR_18" class="blsp-spelling-error">targetLIs</span> = <span id="SPELLING_ERROR_19" class="blsp-spelling-error">targetDivs</span>[j].<span id="SPELLING_ERROR_20" class="blsp-spelling-error">getElementsByTagName</span>("LI");<br />for (var k = 0; k < <span id="SPELLING_ERROR_22" class="blsp-spelling-error">targetLIs</span>.length; k++) {<br />if (targetLIs[k].innerHTML.indexOf(targetMenuItem) > -1) {<br />targetLIs[k].style.display = "none";<br />return;<br />}<br />}<br />}<br />}<br />}<br />}<br /><br /></span></em></div><div align="justify"><em><span style="font-family:verdana;font-size:85%;"></span></em></div><div align="justify"><span style="font-family:verdana;font-size:85%;">All you have to do is call it with two parameters </span><span style="font-family:verdana;font-size:85%;">first parameter is the text without space so if you have root menu named Sub Test, you should call it <span id="SPELLING_ERROR_23" class="blsp-spelling-error">SubTest</span>. </span><span style="font-family:verdana;font-size:85%;">And the second parameter is the whole text of the menu item you need to hide.<br /><br /></span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span></div><div align="justify"><em><span style="font-family:verdana;font-size:85%;"><span id="SPELLING_ERROR_24" class="blsp-spelling-error">HideMenuItem</span>("<span id="SPELLING_ERROR_25" class="blsp-spelling-error">ISV</span>.NEW", "Coming Soon...");<br /><span id="SPELLING_ERROR_26" class="blsp-spelling-error">HideMenuItem</span>("<span id="SPELLING_ERROR_27" class="blsp-spelling-error">SubTest</span>", "Test Sub 1");<br /><span id="SPELLING_ERROR_28" class="blsp-spelling-error">HideMenuItem</span>("<span id="SPELLING_ERROR_29" class="blsp-spelling-error">ISV</span>.NEW", "Web Only");<br /><br /></span></em></div><div align="justify"><em><span style="font-family:verdana;font-size:85%;"></span></em></div><div align="justify"><span style="font-family:verdana;font-size:85%;">Let me know if you need any more info on the same.</span></div><div align="justify"><span style="font-family:Verdana;font-size:85%;">PS: Thanks to Andrew, there was a bug in the previous version of script, which didn't work with all the menus but now it has been fixed.</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com14tag:blogger.com,1999:blog-7333476.post-13276979707581193192009-05-29T18:29:00.003+05:302009-05-29T18:31:26.875+05:30Hiding Notes Section from Notes tab from CRM Form<div align="justify"><span style="font-family:verdana;font-size:85%;">If you hit this post, then most probably you were looking to hide Notes Section/Notes Tab. However there is a <span id="SPELLING_ERROR_0" class="blsp-spelling-error">CRM</span> limitation of having only 8 tabs per form[It can be overridden though].</span></div><div align="justify"><span style="font-family:verdana;font-size:85%;">So sometimes you might want to use that notorious Notes tab but then you don't want users to see Notes field in there. </span></div><div align="justify"><span style="font-family:verdana;font-size:85%;">So here is a one line of code which takes care of it. Just copy paste it on the Form Load of your entity form and it should do the rest</span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"><blockquote><div align="justify"><span style="font-family:verdana;font-size:85%;"><em>document.<span id="SPELLING_ERROR_1" class="blsp-spelling-error">getElementById</span>("<span id="SPELLING_ERROR_2" class="blsp-spelling-error">notescontrol</span>_d").parentNode.parentNode.parentNode.parentNode.style.display<br />= "none";</em></span></div></blockquote></span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-64893066212792490002009-05-28T20:40:00.002+05:302009-05-29T18:31:52.868+05:30Removing System Locked Section from CRM Form<div align="justify"><span style="font-family:verdana;font-size:85%;">This is one interesting and as usual unsupported solution that will help you to remove a system locked section from CRM form. Kindly note that I do not take any responsibility if something goes wrong with this approach.<br /><br />Please take backup of your customization before you try this. Here is a step by step guide to remove a system locked section.<br /><br />1. Export Service Appointment entity.[Take a backup of the zip file you just exported].<br />2. Extract content of the zip file -> customization.xml.<br />3. Open the xml in your favourite xml editor. You can use Notepad or Visual Studio to keep it simple.<br />4. locate the following section "scheduling information"<br /><section name="scheduling information" showlabel="true" showbar="true" locklevel="1" id="<GUID>" IsUserDefined="0" layout="varwidth" columns="11">change locklevel 1 to 0.<br />5. Once you have done it, import the customization back to CRM.<br />6. Open the Form.<br />7. Move Start Time and End Time to a choice of your section. You can Duration and All Day Event as well.<br />8. Remove the section.<br />9. Preview and Test.<br /><br />In case things do not work as expected, use the backup and restore the entity. </span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com2tag:blogger.com,1999:blog-7333476.post-66398822694049127222009-03-03T00:59:00.004+05:302009-09-03T11:14:43.370+05:30Dependent Picklist for CRM 4.0<p align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">It's been a while since I posted anything on this blog and there are good reasons for that. Lately I've been quite busy with an integration project which involves a <span id="SPELLING_ERROR_0" class="blsp-spelling-error">WCF</span> Proxy and a lot of troubleshooting here and there. It's definitely fun but then I don't get time nor I've energy to do anything once I am home. </span></p><p align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">Anyways today I could steal some time 'cause of a request to share the code of Dynamic or chained <span id="SPELLING_ERROR_1" class="blsp-spelling-error">Picklists</span> in <span id="SPELLING_ERROR_2" class="blsp-spelling-error">CRM</span> 4.0 There is not much rocket science in here just easy to use <span id="SPELLING_ERROR_3" class="blsp-spelling-error">scriptlets</span> and pure <span id="SPELLING_ERROR_4" class="blsp-spelling-error">DHTML</span> fun.</span></p><p align="left"><span style="font-family:verdana,sans-serif;font-size:85%;">I have uploaded it here : </span><a title="https://cid-b6a90e5b5092759c.skydrive.live.com/self.aspx/BlogStore/Chained%20Picklists.zip" href="https://cid-b6a90e5b5092759c.skydrive.live.com/self.aspx/BlogStore/Chained%20Picklists.zip"><span style="font-family:verdana,sans-serif;font-size:85%;color:#002570;">https://cid-b6a90e5b5092759c.skydrive.live.com/self.aspx/BlogStore/Chained%20Picklists.zip</span></a><span style="font-family:verdana,sans-serif;font-size:85%;"> </span><p align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">The zip has the script file and a helper excel that will make it easier for you to create the <span id="SPELLING_ERROR_5" class="blsp-spelling-error">Picklist</span> arrays. </span><div align="justify"><span style="font-family:verdana,sans-serif;font-size:85%;">If you give it a try kindly let me know how it goes for you.</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com2tag:blogger.com,1999:blog-7333476.post-51842076414897777172009-01-22T22:06:00.003+05:302009-01-22T22:07:41.470+05:30Microsoft will layoff upto 5000 employees worldwide<div align="justify"><span style="font-family:verdana;font-size:85%;">And just came the shocking news... : </span><a href="http://news.cnet.com/8301-10805_3-10147964-75.html"><span style="font-family:verdana;font-size:85%;"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">Ballmer's</span> e-mail to employees regarding layoffs</span></a><span style="font-family:verdana;font-size:85%;">.</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-23659505189997284142009-01-19T22:18:00.002+05:302009-01-19T22:20:50.958+05:30Dirty Fox... heading the risky business apps list<div align="justify"><span style="font-family:verdana;font-size:85%;">Ah... I thought I will give company to <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Mrinal</span>.. and here it is.. a link to the article... check it out ... </span><a href="http://www.insidetech.com/news/articles/3605-firefox-heads-risky-business-app-list"><span style="font-family:verdana;font-size:85%;">http://www.insidetech.com/news/articles/3605-firefox-heads-risky-business-app-list</span></a><span style="font-family:verdana,sans-serif;"><span style="font-family:verdana;font-size:85%;"> oh.. hi.. L(<span class="blsp-spelling-error" id="SPELLING_ERROR_1">inux</span>)users... where are yo?</span> </span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-83657303283504619152009-01-19T10:02:00.004+05:302009-01-19T10:08:09.179+05:30VS2008SP1 on Win7<p class="mobile-photo" align="justify"><span style="font-family:verdana;font-size:85%;">As you all know.. Win7 is out.. and my god it is.. faster beyond my expectations.. and definitely.. faster than my <span class="blsp-spelling-error" id="SPELLING_ERROR_0">XPSP</span>3(Oh I was so proud... about it :(). And just yesterday, I installed VS2008 SP1 on it nad it works like a charm.. not a single glitch in compiling my existing code and on top of that it looks better than Vista. It has got soft <span class="blsp-spelling-error" id="SPELLING_ERROR_1">UI</span> elements and somehow.. I felt really comfortable working with them when compared to Vista. Check out the sample running a demo <span class="blsp-spelling-error" id="SPELLING_ERROR_2">WPF</span> application.</span></p><p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV8R8CI2ulNWkO2-acLCCpq9OMkZGBeO-dKkG7-NalP2JW046fzLyGHTk_9xOpDCRRjtsTRXMRL-tJ9DDfEs_fZ0CfUErXJMGOreHKlZqoNfWdi-s1wAIEluGyRFOJELue3zIwiA/s1600-h/VS2008+on+Win7-774657.png"><span style="font-family:verdana;font-size:85%;"><img id="BLOGGER_PHOTO_ID_5292858169197784834" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV8R8CI2ulNWkO2-acLCCpq9OMkZGBeO-dKkG7-NalP2JW046fzLyGHTk_9xOpDCRRjtsTRXMRL-tJ9DDfEs_fZ0CfUErXJMGOreHKlZqoNfWdi-s1wAIEluGyRFOJELue3zIwiA/s320/VS2008+on+Win7-774657.png" border="0" /></span></a></p><div align="justify"><span style="font-family:verdana;font-size:85%;">And no matter... what they are saying, it was piece of cake to install VS2008 it took less than 10 minutes and YES I <span class="blsp-spelling-corrected" id="SPELLING_ERROR_3">don't</span> want to talk about how long it took to install SP1(I was running some heavy processes in background.. eh.. :P)</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-81205879081492407442009-01-18T14:43:00.004+05:302009-01-18T14:44:41.770+05:30Microsoft .NET Framework 2.0 Service Pack 2<div align="justify"><strong><span style="font-family:verdana;font-size:85%;">Link:</span></strong></div><div align="justify"><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f&displaylang=en"><span style="font-family:verdana;font-size:85%;">http://www.microsoft.com/downloads/details.aspx?FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f&displaylang=en</span></a></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span></div><div align="justify"><span style="font-family:verdana;"><span style="font-size:85%;"><strong>Download Overview:</strong> </span></span></div><div class="downloadInfo" align="justify"><a name="Description"></a><span style="font-family:verdana;font-size:85%;">The .NET Framework 2.0 Service Pack 2 provides cumulative roll-up updates for customer reported issues found after the release of the .NET Framework 2.0. In addition, this release provides performance improvements, and prerequisite feature support for the .NET Framework 3.5 Service Pack 1.<br /><br />Please review the supported operating systems for this deployment package in the System Requirements section. The corresponding updates for Windows Vista and Microsoft Windows 2008 are deployed via the full .NET Framework 3.5 service pack 1.</span></div><div class="downloadInfo" align="justify"><a name="Description"><span style="font-family:verdana;font-size:85%;"></span></a></div><div class="downloadInfo" align="justify"><span style="font-family:verdana;font-size:85%;">Just be careful, there is a follow up update patch - </span><a href="http://go.microsoft.com/fwlink/?LinkId=136730"><span style="font-family:verdana;font-size:85%;">KB959209</span></a><span style="font-family:verdana;font-size:85%;"> needed, once you install .Net Framework 2.0 SP2. </span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-85849670641938469082009-01-17T22:10:00.004+05:302009-01-18T00:08:44.279+05:30CircuitCity short-circuited<span style="font-family:verdana;font-size:85%;">I just came to know about this... very very sad :(</span><br /><a href="http://www.circuitcity.com/closed.html"><span style="font-family:verdana;font-size:85%;">http://www.circuitcity.com/closed.html</span></a><br /><span style="font-family:verdana,sans-serif;"></span>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-61791728047077552272008-12-24T13:23:00.002+05:302008-12-24T13:24:00.184+05:30Opera... you too?<div align="justify"><span style="font-family:verdana;font-size:85%;">Today is a bad day.. really really bad day.. I didn't expect this from Opera.. at least.. if Google does it.. it is in their nature... but Opera you too? </span></div><div align="justify"><span style="font-family:verdana;font-size:85%;">Microsoft has done the same thing in early 90s but they changed and they paid a lot of money for what they did earlier.</span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span> </div><div align="justify"><span style="font-family:verdana;font-size:85%;">What happened is, I got an "There is a new version of Opera available for download." message, and as a die hard fan of Opera, I immediately click on Download and once it downloaded, I started installation. I love my existing settings and customizations in Opera, so I always upgrade rather than clean install. And as usual I was about to click on Next when I noticed a small, pre-checked check box at bottom of the installer. And my instincts told me.... HEY!!!! STOP!!!... and I looked at it.. the check box read ... <strong>Make Opera Default Browser</strong>..and I was like : Oh my lord.. did Microsoft(Old days) took over or what? or it is Google now? Well.. for those who didn't get it.. that check box will make Opera my default browser.. and yes.. I am no idiot who doesn't understand flexibility of IE.. most of the sites I look at looks the BEST on IE.. and most of the good sites works fine.. with IE.. no problem so far...while Opera.. is the best browser.. for the sites which normal users might not want to give a look.. for me it works.. but Opera as my default browser.. NO NO.. BIG NO!!!... anyways.. I survived the attack(This is a kindda browser replacement attack.. aahh I coined a new term... :P)</span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span> </div><div align="justify"><span style="font-family:verdana;font-size:85%;">This was definitely a dirty move.. and well thought and.. yes.. I can tell it was no accident.. Opera did the same the Microsoft was used to do earlier. But that was a different time.. but now? NO NO!!!! Opera.. 5 cents down.. you guys are.. so next time you install Opera..just be careful.. they are not as good as they were used to be.. anymore..</span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-16441740714967986602008-12-24T13:11:00.003+05:302008-12-24T13:14:46.779+05:30Google.. does it again...<div align="justify"><span style="font-family:verdana;font-size:85%;">I dunno what kind of idiot some one has to be to push an update to a product.. which just changes the version number... I wish I could be that idiot.. and then.. google would have hired me as a Product Manager(Phew.. thank god.. I am smart.. and I won't have to be that guy..)</span></div><div align="justify"><span style="font-family:verdana;font-size:85%;"></span></div><div align="justify"><span style="font-family:verdana;font-size:85%;">According to </span><a href="http://cultofmac.com/google-mobile-app-upgrade-adds-essential-version-number-enhancement/6145"><span style="font-family:verdana;font-size:85%;">this</span></a><span style="font-family:verdana;font-size:85%;"> blog as well as few other trusted resources I just came to know, Google pushed a product update on iPhone that changes the version number... YA... just the version number.. that's it.. </span></div>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-24822958677736573982008-12-17T19:08:00.003+05:302008-12-17T19:10:24.814+05:30Killing a Process running on Remote Computer(The batch file way..)<p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">This morning when I came to office, I had a set of tasks which needed to be completed ASAP. My current engagement requires me to work on customer server via RDP. Now RDP has an interesting behavior, in certain cases if the server has a limited resources, it will simply refuse to allow RDP access. And unfortunately, it happened to me today. One of my colleague ran a time-consuming, resource-hungry custom code over the weekend so we can work smoothly during the weekdays, however the application could not complete its work during the weekend and was still running and consuming whatever resources were available and in turn caused a DoS (Denial Of Service). I thought to use VBScript/WMI to kill the remote process as I had the name of the process to be killed and have had used it in past effectively. I started working with the script but, I felt it will take too much time to figure out the script that will help me so I decided to search on my favorite search engine for easier and faster options. Within a few minutes I got the pointers to use tasklist.exe and taskkill.exe. I killed the process manually and easily got my access restored. However at end of the day, spending some time one this and making a batch file will come handy as we run into this situation more often. So I spent few minutes in notepad and here is the batch file that I got. This batch file is not polished but should get the job done in time of needs. And as usual I don't take any responsibility of any kind if you use this script and get into some trouble. So use it at your own risk... </span></p><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">@ECHO OFF<br />@ECHO WARNING : This script will forcefully kill the process and will not ask for confirmation before killing the process. </span></p><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">SET MESSAGE=<br />SET SYSTEMNAME=<br />SET USERNAME=<br />SET PASSWORD=<br />SET PID= </span></p><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">SET /P MESSAGE=Press any key to continue... </span><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">SET /P SYSTEMNAME=Enter target computer name or IP :<br />SET /P USERNAME=Enter User Name (domain\username) :<br />SET /P PASSWORD=Enter Password : </span></p><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">@ECHO Please wait while we get the list of processes... </span><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">TASKLIST.EXE /S %SYSTEMNAME% /U %USERNAME% /P %PASSWORD% </span><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">SET /P PID=Enter PID(Process ID) of the process you want to kill : </span><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">TASKKILL.EXE /F /S %SYSTEMNAME% /U %USERNAME% /P %PASSWORD% /PID %PID% </span><p class="ExternalClass3F398F5A9AE147EF856C112D0DA96B1B" align="justify"><span style="font-family:verdana;font-size:85%;">SET /P MESSAGE=Press any key to continue...</span></p>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-34243080843278417782008-12-17T18:59:00.002+05:302008-12-17T19:00:58.219+05:30Generic Serializer-Deserializer<p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">Around one and half year back, I was handling an interesting situation. There were few different systems sending in XML messages, and my component had to accept the message, interpret it and take appropriate actions. </span></p><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">It was easy till I came to know about XML message and its elements and alternate messages. The possibilities were unlimited, and it sounded stupid to hand code/hard code XML elements. Rather than that the solution was designed so that we converted XML -> XSD -> CS. After few changes made here and there to fine tune the CS files with XML, we faced another challenge, we had to serialize/deserialize incoming/outgoing messages. After few minutes of R&D I could pull out this. I've listed the method signature and minor code implementation. It is so simple that you can easily get it working in few minutes. </span></p><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">public static string Serialize<T>(<br /> T data<br /> )<br /> {</span></p><blockquote class="ExternalClass3499D146534D42ECA49D504886736265"><p align="justify"><span style="font-family:verdana;font-size:85%;">//Create the Serializer</span></p></blockquote><blockquote class="ExternalClass3499D146534D42ECA49D504886736265"><p align="justify"><span style="font-family:verdana;font-size:85%;">XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">//Use the serializer we have just created and serialize the object.</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">}</span></p></blockquote><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">the same goes with the Deserializer</span></p><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">public static T Deserialize<T>(<br /> string serializedData<br /> )<br /> { </span></p><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">//check whether the incoming data is not a null string<br /> if (string.IsNullOrEmpty(serializedData))<br /> return default(T); //This can be controversial, so handle with care and as per your requirements, in certain cases you can return null as well, kindly let me know if you have anything that can improvise this code </span></p><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;"> //create a serializer<br /> XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); </span></p><blockquote class="ExternalClass3499D146534D42ECA49D504886736265"><p align="justify"><span style="font-family:verdana;font-size:85%;">//Use the deserializer we have just created and deserialize the object.</span></p><p align="justify"><span style="font-family:verdana;font-size:85%;">} </span></p></blockquote><p class="ExternalClass3499D146534D42ECA49D504886736265" align="justify"><span style="font-family:verdana;font-size:85%;">I must thank my friend Sidhartha </span><a onclick="_linkInterstitial('http://iamjunk.spaces.live.com/'); return false;" href="javascript:void(0);" target="_blank"><span style="font-family:verdana;font-size:85%;">http://IamJunk.spaces.live.com</span></a><span style="font-family:verdana;font-size:85%;">, as he helped me a lot to enhance the code. I've not published the whole code, in case you need it, drop me an email/comment. I will be more than happy to help you out.</span></p>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-30284240712047395152008-12-17T18:38:00.004+05:302008-12-17T18:43:58.288+05:30All In One Entity for CRM 4.0<p align="justify"><span style="font-family:verdana;font-size:85%;">Sometimes back I was doing a research on a script(It is coming soon.. just wait and watch...) and that script required me to try all the CRM datatypes one by one on the form. And trust me, it was a pretty boring job to create the element on a CRM form and then check compatibility of that script with it. Anyway, I thought I can help out my friends out there just in case they face the similar situation. So here is a SkyDrive link : </span></p><p align="justify"><a href="https://cid-b6a90e5b5092759c.skydrive.live.com/self.aspx/BlogStore/AllInOneEntity.zip"><span style="font-family:verdana;font-size:85%;">https://cid-b6a90e5b5092759c.skydrive.live.com/self.aspx/BlogStore/AllInOneEntity.zip</span></a><br /><span style="font-family:verdana;font-size:85%;">If you find that I've missed out something, kindly drop me a note. Thanks in advance.</span><br /></p>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-7192085078081782182008-11-21T11:10:00.004+05:302008-11-21T11:16:44.776+05:30Google Launches Themes for Gmail<div align="justify"><span style="font-family:verdana;font-size:85%;">Well.. <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Google's</span> flagship beta(err... <span class="blsp-spelling-error" id="SPELLING_ERROR_1">hmm</span>.. ya.. for a while..or forever?) product has just got another feature(well.. you can add 31 features a month and remove 17 of them if you are in beta.. ain't it?). It is themes...(Oh and I was thinking they will get me free land line/cell calling from <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">Gmail</span> browser interface :D). Anyways.. I tried.. one and it looks good.. :D.. check out the screenshot below..</span><br /></div><p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpuQZqKiAEY7C1Y63K3N0Fd1v6YviF1TkuwoetLwF89R_yWrJSu1P7g3GabnKAxYMTssQTGqRJwK3rx_6YSe_UkOlhX-OJ0_VnVrUSQqTUAMusN3-OD-Pzp6LiH5uL7ncPJEU7tA/s1600-h/googlethemes-757078.PNG"><span style="font-family:verdana;font-size:85%;"><img id="BLOGGER_PHOTO_ID_5270981680374967314" alt="My Gmail Inbox...after applying Terminal theme" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpuQZqKiAEY7C1Y63K3N0Fd1v6YviF1TkuwoetLwF89R_yWrJSu1P7g3GabnKAxYMTssQTGqRJwK3rx_6YSe_UkOlhX-OJ0_VnVrUSQqTUAMusN3-OD-Pzp6LiH5uL7ncPJEU7tA/s320/googlethemes-757078.PNG" border="0" /></span></a></p>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0tag:blogger.com,1999:blog-7333476.post-18699210391866422362008-11-19T13:33:00.003+05:302008-11-19T13:42:33.555+05:30Download Yahoo! messenger 9 setup from Yahoo!<p class="mobile-photo" align="justify"><span style="font-family:verdana;font-size:85%;">I wanted to install Y!'s new messenger.. version 9... (oh it is beautiful I must say.. check out the screenshot..) on one of the Virtual PC... and I didn't want to connect to Internet for the sake of installing Y!.. so .. after looking here and there.. somewhere... I found that Y! keeps its installation images under </span><a href="http://download.yimg.com/ycs/msg/dl/msgr9/"><span style="font-family:verdana;font-size:85%;">http://download.yimg.com/ycs/msg/dl/msgr9/</span></a><span style="font-family:verdana;font-size:85%;">, This path doesn't have directory browsing enabled so you will not find anything there... however if you want to do an offline installation .. all you have to do is.. to click </span><a href="http://download.yimg.com/ycs/msg/dl/msgr9/us/ymsgr900_2034_us.exe"><span style="font-family:verdana;font-size:85%;">here</span></a></p><p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje2Q0s7vEu7BdKJWoDj3jYu02oqdrb3rRXsCoMQx6GAU2U-Jo865idoQeo7CcSDm6ozjz-KRNRamVlYk7s5eF5UfGRPo2_NbPXbEuXmO9y2TefKWU8Oe1KwKO75SlA2SWQ6p0m8Q/s1600-h/Y!-786133.PNG"><span style="font-family:verdana;font-size:85%;"><img id="BLOGGER_PHOTO_ID_5270276144506063842" alt="New UI of Y! Messenger 9. Click on the image to see the larger version." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje2Q0s7vEu7BdKJWoDj3jYu02oqdrb3rRXsCoMQx6GAU2U-Jo865idoQeo7CcSDm6ozjz-KRNRamVlYk7s5eF5UfGRPo2_NbPXbEuXmO9y2TefKWU8Oe1KwKO75SlA2SWQ6p0m8Q/s320/Y!-786133.PNG" border="0" /></span></a></p>Chinmayhttp://www.blogger.com/profile/04840312975984005682noreply@blogger.com0