<?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:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-25379007</id><updated>2010-06-09T20:42:57.766+02:00</updated><title type='text'>Oriol Quinquillà Capdevila</title><subtitle type='html'>Thoughts about my every day work.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default?orderby=updated'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-25379007.post-5134582711172265930</id><published>2010-03-10T19:30:00.001+01:00</published><updated>2010-03-10T19:31:57.300+01:00</updated><title type='text'>IE blocking a cookie in an iframe</title><content type='html'>&lt;p&gt;Today I have found a quite criptic error. It happends to IE8 and probably previous versions, but not in Firefox 3.5. If you try to send a cookie in an iframe (to the same domain as the parent page) IE will block it. The solution to this is quite criptic, but easy: just add the following line:&lt;/p&gt; &lt;pre&gt;HttpContext.Current.Response.AddHeader(&amp;quot;p3p&amp;quot;,&amp;quot;CP=\&amp;quot;IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\&amp;quot;&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Thanks to the author of this post where I found the solution: &lt;a title="http://adamyoung.net/IE-Blocking-iFrame-Cookies" href="http://adamyoung.net/IE-Blocking-iFrame-Cookies"&gt;http://adamyoung.net/IE-Blocking-iFrame-Cookies&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-5134582711172265930?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/5134582711172265930/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=5134582711172265930' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/5134582711172265930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/5134582711172265930'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2010/03/ie-blocking-cookie-in-iframe.html' title='IE blocking a cookie in an iframe'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-562058944899568007</id><published>2009-12-29T17:40:00.001+01:00</published><updated>2009-12-29T17:40:25.549+01:00</updated><title type='text'>An error has occured which stops Business Contact manager for Outlook from starting</title><content type='html'>&lt;p&gt;You install BCM successfully, you start Outlook normally, a dialog to configure BCM turns into the screen, you follow the wizard and at the end of the process you receive the following message which prevents from configuring:&lt;/p&gt;  &lt;p&gt;An error has occured which stops Business Contact manager for Outlook from starting.&lt;/p&gt;  &lt;p&gt;Try the following: &lt;strong&gt;run Outlook as administrator&lt;/strong&gt;,&lt;strong&gt; only once&lt;/strong&gt;. It worked for me.&lt;/p&gt;  &lt;p&gt;My configuration: W7 32 bits + Office 2007 + BCM&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-562058944899568007?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/562058944899568007/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=562058944899568007' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/562058944899568007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/562058944899568007'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/12/error-has-occured-which-stops-business.html' title='An error has occured which stops Business Contact manager for Outlook from starting'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-8603468327474809139</id><published>2009-12-20T12:51:00.001+01:00</published><updated>2009-12-20T12:51:38.888+01:00</updated><title type='text'>BPOS: Application is unable to connect;  if this problem persists, contact your service administrator</title><content type='html'>&lt;p&gt;Configuring the BPOS Sign in tool the following message appears:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Application is unable to connect;&amp;#160; if this problem persists, contact your service administrator.&lt;/li&gt;    &lt;li&gt;La aplicación no puede conectarse; si el problema persiste, contacte con su administrador.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The root of the problem is a miss-configuration of the permissions of the certificates store. To solve it try the following command (run it from an admin account):&lt;/p&gt;  &lt;p&gt;cacls &amp;quot;%appdata%\Microsoft\Crypto\RSA&amp;quot; /t /e /c /g %userdomain%\%username%:F&lt;/p&gt;  &lt;p&gt;Solution originally posted here: &lt;a title="http://social.technet.microsoft.com/Forums/en/onlineservicessigninapplication/thread/548c57b4-dc62-4638-9e81-57eabc8af6d2" href="http://social.technet.microsoft.com/Forums/en/onlineservicessigninapplication/thread/548c57b4-dc62-4638-9e81-57eabc8af6d2"&gt;http://social.technet.microsoft.com/Forums/en/onlineservicessigninapplication/thread/548c57b4-dc62-4638-9e81-57eabc8af6d2&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-8603468327474809139?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/8603468327474809139/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=8603468327474809139' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/8603468327474809139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/8603468327474809139'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/12/bpos-application-is-unable-to-connect.html' title='BPOS: Application is unable to connect;  if this problem persists, contact your service administrator'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-793419350651100597</id><published>2009-11-28T22:15:00.001+01:00</published><updated>2009-11-28T22:15:42.190+01:00</updated><title type='text'>Using a GridView only with code in a SharePoint (2007) WebPart, or in asp.net</title><content type='html'>&lt;p&gt;(Without using SmartPart)&lt;/p&gt;  &lt;p&gt;Using a GridView binded to a (Sql)DataSource is pretty easy in a asp.net application where we can drag and drop the components onto the designer, and follow the related wizards. However, this is not that easy in a SharePoint WebPart, as we have to do everything programmatically.&lt;/p&gt;  &lt;p&gt;My objective was creating a grid in a WebPart in which one of the columns was editable, with a drop down list. I started playing with the WebPart, but as the problem was how to use the components by code I switched to a asp.net application, to make it work. What I am presenting here is how to create a GridView linked to a SqlDataSource by code. Moving this to a WebPart is trivial.&lt;/p&gt;  &lt;p&gt;First of all the scenario:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We are going to create a GridView. &lt;/li&gt;    &lt;li&gt;Linked to a SqlDataSource &lt;/li&gt;    &lt;li&gt;We are going to use Northwind database. &lt;/li&gt;    &lt;li&gt;We will present the Products table, only two fields for simplicity:      &lt;ul&gt;       &lt;li&gt;ProductId: readonly &lt;/li&gt;        &lt;li&gt;SupplierId: editable with a combo &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To better illustrate the example below you have two screenshots. The first one is the GridView showing all the values. The second one is the GridView in editing mode, with the drop down list on the supplier column.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rSA8BTQFKhI/SxGS83DdMnI/AAAAAAAAAH8/AaGDOfLNZK0/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_rSA8BTQFKhI/SxGS9XxEtAI/AAAAAAAAAIA/WqKTyg3qCfA/image_thumb.png?imgmax=800" width="195" height="149" /&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/_rSA8BTQFKhI/SxGS930dieI/AAAAAAAAAIE/mTBUBfgsvMM/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_rSA8BTQFKhI/SxGS-M8kr8I/AAAAAAAAAII/74OsFkdXXDw/image_thumb%5B1%5D.png?imgmax=800" width="235" height="166" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As I told you to make it easy I started creating an asp.net application. As we want to do everything by code I just added a simple Panel to dinamically add the GridView inside afterwards.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Page&lt;/span&gt; &lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&amp;#160; &lt;span style="color: red"&gt;CodeFile&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Default.aspx.cs&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;_Default&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #a31515"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color: red"&gt;html&lt;/span&gt; &lt;span style="color: red"&gt;PUBLIC&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;html&lt;/span&gt; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;head&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;form&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Panel&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Panel1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the code behind is where we find the interesting part. Here you have the using statements I needed.&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Data;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Specialized;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;This is the Page definition. In case of a WebPart this would be a child class of the asp.net WebPart class. &lt;/font&gt;&lt;font face="Verdana"&gt;We will need to use both a SqlDataSource and a GridView in many events, so we declare them globally and we create them. &lt;/font&gt;&lt;/p&gt;  &lt;p style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;To bind data to a GridView there are many other ways, but SqlDataSource just streamlines all the operations of selecting and modifying data to the database.&lt;/font&gt;&lt;/p&gt;  &lt;p style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;Please do not take into account I didn’t follow any naming conventions and some good practices were just ignored –I just created it to discover how to make it work.&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;_Default&lt;/span&gt; : System.Web.UI.&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt; {&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;SqlDataSource&lt;/span&gt; sqlSource = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;SqlDataSource&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;GridView&lt;/span&gt; datagrid = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;GridView&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;According to MSDN documentation the event to create controls is PreInit, so we will configure the GridView and SqlDataSource properties here. I was not sure if the Init method would be suitable to do this too; if someone wants to post his/her opinion it will be appreciated. In a WebPart the equivalent to this event is OnPreInit –just write down override inside the class definition and Intellisense will show you the event signature.&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px; font-family: courier new; background: white; color: black; font-size: 10pt"&gt;&lt;font face="Verdana"&gt;First of all we create the SqlDataSource. Some tips to avoid weird errors, and annotations:&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;ul&gt;     &lt;li&gt;       &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;Remember to add the SqlDataSource control to the Controls matrix.&lt;/font&gt;&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;Obviously, substitute the connection string with a suitable one for you, as well as the select and update commands. Remember to add the parameters if you change them.&lt;/font&gt;&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;UpdateCommand, DeleteCommand and InsertCommand are actually optional. In this example I just implemented UpdateCommand, because it was the only operation (appart from selecting) that I needed.&lt;/font&gt;&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;Notice that we set an ID of the control.&lt;/font&gt;&lt;/div&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/div&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_PreInit(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqlSource.ConnectionString = &lt;span style="color: #a31515"&gt;&amp;quot;Data Source=MUNTANER\\sqlexpress;Initial Catalog=Northwind;Integrated Security=True&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqlSource.SelectCommand = &lt;span style="color: #a31515"&gt;&amp;quot;SELECT [ProductID], [SupplierID] FROM [Products]&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqlSource.UpdateCommand = &lt;span style="color: #a31515"&gt;&amp;quot;UPDATE [Products] SET [SupplierID] = @SupplierID WHERE [ProductID] = @ProductID&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//DeleteCommand=&amp;quot;DELETE FROM [Products] WHERE [ProductID] = @ProductID&amp;quot; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//InsertCommand=&amp;quot;INSERT INTO [Products] ([SupplierID]) VALUES (@SupplierID)&amp;quot; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqlSource.UpdateParameters.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Parameter&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;supplierid&amp;quot;&lt;/span&gt;, System.&lt;span style="color: #2b91af"&gt;TypeCode&lt;/span&gt;.Int32));&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqlSource.UpdateParameters.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Parameter&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;productid&amp;quot;&lt;/span&gt;, System.&lt;span style="color: #2b91af"&gt;TypeCode&lt;/span&gt;.Int32));&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqlSource.ID = &lt;span style="color: #a31515"&gt;&amp;quot;sqlSource&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Controls.Add(sqlSource);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font face="Verdana"&gt;After configuring the SqlDataSource we configure the GridView. A GridView is composed of a sequence of fields (columns). We could make the GridView to create them automatically, but then we could not use a dropdownlist for the Supplier field (instead I think it always present a Textbox). Therefore we set the attribute AutoGenerateColumns to false and we create:&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;One CommandField, the column with the edit button.&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;One BoundField, the column with the ID. A boundField is the default field type. It just displays information and it presents a textbox to edit it. In this case we set it readonly, as we do not want to edit it.&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin: 0px"&gt;&lt;font face="Verdana"&gt;One TemplateField. If we want to use custom controls in a column we have to use this kind of field. A template field has templates for some usages of the field, for example a template when it is presented without editing (Item template) and a template when it is in edit mode (EditItemTemplate). There are more templates to be customized, such as Header and Footer templates. Here we find one of the tricky aspects we we use GridView in code: we have to create a template field, which means we have to create a class following a special interface. We will see it after.&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin: 0px"&gt;Some configurations of the GridView I used:&lt;/div&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;div style="margin: 0px"&gt;As I told you: AutoGenerateColumns must be false.&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div style="margin: 0px"&gt;DataKeyNames: this is the primary key of the table. I think it should be mandatory, but I didn’t try to run the example without setting this property.&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div style="margin: 0px"&gt;AllowSorting: optional; it creates a link on the headers to sort the columns.&lt;/div&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;div style="margin: 0px"&gt;Be very careful on this attribute: DataSourceID. We use it to bind with the datasource. There is something very weird on this: I tried to set the property DataSource&amp;#160; with the variable sqlSource and do a DataBind (which is for me the normal way) but it didn’t work. But setting it with the ID it does work. I do not understand why, if anyone has the solution it will be appreciated.&lt;/div&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;As I told you before remember to add the GridView to the Controls matrix.&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Columna 0&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;CommandField&lt;/span&gt; buttons = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CommandField&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; buttons.ShowEditButton = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.Columns.Add(buttons);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Columna 1&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;BoundField&lt;/span&gt; productIdField = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;BoundField&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; productIdField.HeaderText = &lt;span style="color: #a31515"&gt;&amp;quot;Product&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; productIdField.DataField = &lt;span style="color: #a31515"&gt;&amp;quot;productid&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 38&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; productIdField.SortExpression = &lt;span style="color: #a31515"&gt;&amp;quot;productid&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 39&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; productIdField.InsertVisible = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 40&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; productIdField.ReadOnly = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 41&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.Columns.Add(productIdField);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 42&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 43&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Columna 2&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 44&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TemplateField&lt;/span&gt; comboField = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TemplateField&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 45&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; comboField.HeaderText = &lt;span style="color: #a31515"&gt;&amp;quot;Supplier&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 46&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; comboField.SortExpression = &lt;span style="color: #a31515"&gt;&amp;quot;supplierid&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 47&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; comboField.ItemTemplate = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ComboTemplate&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Item, &lt;span style="color: #a31515"&gt;&amp;quot;supplierid&amp;quot;&lt;/span&gt;);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 48&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; comboField.EditItemTemplate = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ComboTemplate&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.EditItem, &lt;span style="color: #a31515"&gt;&amp;quot;supplierid&amp;quot;&lt;/span&gt;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 49&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.Columns.Add(comboField);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 50&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 51&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.AutoGenerateColumns = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 52&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.DataKeyNames = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;[] { &lt;span style="color: #a31515"&gt;&amp;quot;productid&amp;quot;&lt;/span&gt; };&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 53&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.AllowSorting = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 54&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; datagrid.DataSourceID = &lt;span style="color: #a31515"&gt;&amp;quot;sqlSource&amp;quot;&lt;/span&gt;;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 55&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Panel1.Controls.Add(datagrid);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 56&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;This is the template class. One of the tricky things I had to discover is that it has to implement IBindableTemplate. Be careful as in MSDN there is an example with ITemplate, which works fine to show information but it is not suitable to return back information when the user changes it in editing mode.&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;Most important to understand about this class is:&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="margin: 0px"&gt;&lt;font color="#000000"&gt;There is a method called InstantiateIn (automatically created by Visual Studio when the interface is created). Here is where we are going to create the control in Item mode, Edit mode or others. In our example in Item mode we will create a simple literal, and in edit mode a dropdownlist.&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin: 0px"&gt;&lt;font color="#000000"&gt;ExtractValues method is where we push back the user changes in edit mode.&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin: 0px"&gt;&lt;font color="#000000"&gt;We facilitate the usage of the templates by storing the template type (Item, Edit, other) and the column name which relates the information (in the database, in our case). This information is initialized in the constructor of the class.&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;Here you can see the class definition, the class members and the constructor. The DropDownList must be a class member as it is used in some events.&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 57&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 58&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ComboTemplate&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IBindableTemplate&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 59&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 60&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt; templateType;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 61&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; columnName;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 62&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DropDownList&lt;/span&gt; ddl = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DropDownList&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 63&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 64&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 65&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; ComboTemplate(&lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt; type, &lt;span style="color: blue"&gt;string&lt;/span&gt; colname)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 66&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 67&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; templateType = type;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 68&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; columnName = colname;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 69&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 70&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;Maybe you should read this part after you have understood instantiateIn. Here is where we create the data binding between the literal, in item mode, and the database information. &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;To do this we use the DataBinding event. This event occurs when the binding should be done. To be sincere I copied and pasted this code from a MSDN example of DataBinding, and it worked. I guess what the code does: it stores the database value by using a DataBinder object and evaluating the data of the container, and taken the given column… but I do not understand fully the details, so I can not really explain you (again if someone knows…).&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;What you should care in this method is the type of control you use for assigning the value. &lt;/font&gt;&lt;font color="#000000"&gt;If you use a Literal control its ok; if you instead use another control (such a Label) you should cast the sender to a Label type (or the appropriate one for you). Maybe you should change as well the lc.Text line accordingly.&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 71&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; lc_DataBinding(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 72&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 73&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt; lc = (&lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt;)sender;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 74&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;GridViewRow&lt;/span&gt; container = (&lt;span style="color: #2b91af"&gt;GridViewRow&lt;/span&gt;)lc.NamingContainer;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 75&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; dataValue = &lt;span style="color: #2b91af"&gt;DataBinder&lt;/span&gt;.Eval(container.DataItem, columnName);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 76&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (dataValue != &lt;span style="color: #2b91af"&gt;DBNull&lt;/span&gt;.Value)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 77&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 78&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = dataValue.ToString();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 79&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 80&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 81&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;ExtractValues is the method to push back the changed information to the SqlDataSource. It gets the value and assigns to a newly created dictionary (the method expects a hashtable to be returned). &lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;Be careful if you do not use a DropDownList to change the 88th line. In this line you should assign the data that the user has edited.&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 82&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; IBindableTemplate Members&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 83&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 84&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.Collections.Specialized.&lt;span style="color: #2b91af"&gt;IOrderedDictionary&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IBindableTemplate&lt;/span&gt;.ExtractValues(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; container)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 85&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 86&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;OrderedDictionary&lt;/span&gt; dict = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;OrderedDictionary&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 87&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 88&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; value = ddl.SelectedValue.ToString();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 89&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dict.Add(columnName, value);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 90&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 91&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; dict;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 92&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 93&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 94&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 95&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 96&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; ITemplate Members&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 97&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;InstantiateIn is the method that creates the controls. As we designed the class to allow many templates to be created, it checks which template should be created and it creates a control according to it.&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;The only interesting ones for this example are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="margin: 0px"&gt;Item template: it creates a Literal control. To databind this literal control DataBinding event must be implemented (see upwards). Remember to add it to the container Controls array.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="margin: 0px"&gt;EditItem: it creates a DropDownList control. When we edit our combo should show us a list of suppliers, which actually is not the same datasource as our GridView (products). Here a new SqlDataSource with a select query for suppliers should be done, but with the aim of reducing the amount of code the same datasource as before is used. If you try this example you will see that the dropdown show a lot of suppliers, and repetitions of them, as it actually queries the column suppliers of the product table. But as I told you the aim of this was just learning about how to use it.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 98&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InstantiateIn(System.Web.UI.&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; container)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 99&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 100&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt; lc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 101&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;switch&lt;/span&gt; (templateType)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 102&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 103&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Header:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 104&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;B&amp;gt;&amp;quot;&lt;/span&gt; + columnName + &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;/B&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 105&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(lc);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 106&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 107&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Item:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 108&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.DataBinding += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(lc_DataBinding);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 109&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(lc);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 110&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 111&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.EditItem:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 112&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ddl.DataSourceID = &lt;span style="color: #a31515"&gt;&amp;quot;sqlSource&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 113&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ddl.DataTextField = &lt;span style="color: #a31515"&gt;&amp;quot;supplierid&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 114&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ddl.DataValueField = &lt;span style="color: #a31515"&gt;&amp;quot;supplierid&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 115&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(ddl);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 116&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 117&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Footer:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 118&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;I&amp;gt;&amp;quot;&lt;/span&gt; + columnName + &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;/I&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 119&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(lc);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 120&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 121&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 122&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 123&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 124&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 125&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 126&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;That’s all, what it comes now is not necessary for the example.&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;I also did a trial with a TextBox template; I just posted it just in case it is useful for someone.&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 127&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TexBoxTemplate&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IBindableTemplate&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 128&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 129&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt; templateType;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 130&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; columnName;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 131&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TextBox&lt;/span&gt; tb = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TextBox&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 132&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 133&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 134&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; TexBoxTemplate(&lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt; type, &lt;span style="color: blue"&gt;string&lt;/span&gt; colname)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 135&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 136&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; templateType = type;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 137&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; columnName = colname;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 138&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 139&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 140&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; lc_DataBinding(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 141&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 142&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt; lc = (&lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt;)sender;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 143&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;GridViewRow&lt;/span&gt; container = (&lt;span style="color: #2b91af"&gt;GridViewRow&lt;/span&gt;)lc.NamingContainer;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 144&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; dataValue = &lt;span style="color: #2b91af"&gt;DataBinder&lt;/span&gt;.Eval(container.DataItem, columnName);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 145&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (dataValue != &lt;span style="color: #2b91af"&gt;DBNull&lt;/span&gt;.Value)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 146&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 147&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = dataValue.ToString();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 148&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 149&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 150&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 151&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; tb_DataBinding(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 152&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 153&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TextBox&lt;/span&gt; lc = (&lt;span style="color: #2b91af"&gt;TextBox&lt;/span&gt;)sender;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 154&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;GridViewRow&lt;/span&gt; container = (&lt;span style="color: #2b91af"&gt;GridViewRow&lt;/span&gt;)lc.NamingContainer;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 155&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; dataValue = &lt;span style="color: #2b91af"&gt;DataBinder&lt;/span&gt;.Eval(container.DataItem, columnName);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 156&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (dataValue != &lt;span style="color: #2b91af"&gt;DBNull&lt;/span&gt;.Value)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 157&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 158&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = dataValue.ToString();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 159&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 160&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 161&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 162&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; IBindableTemplate Members&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 163&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 164&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.Collections.Specialized.&lt;span style="color: #2b91af"&gt;IOrderedDictionary&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IBindableTemplate&lt;/span&gt;.ExtractValues(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; container)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 165&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 166&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;OrderedDictionary&lt;/span&gt; dict = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;OrderedDictionary&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 167&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 168&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; value = tb.Text;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 169&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dict.Add(columnName, value);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 170&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 171&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; dict;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 172&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 173&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 174&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 175&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 176&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; ITemplate Members&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 177&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 178&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InstantiateIn(System.Web.UI.&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; container)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 179&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 180&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt; lc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Literal&lt;/span&gt;();&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 181&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;switch&lt;/span&gt; (templateType)&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 182&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 183&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Header:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 184&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;B&amp;gt;&amp;quot;&lt;/span&gt; + columnName + &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;/B&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 185&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(lc);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 186&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 187&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Item:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 188&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.DataBinding += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(lc_DataBinding);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 189&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(lc);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 190&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 191&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.EditItem:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 192&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tb.DataBinding += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(tb_DataBinding);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 193&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(tb);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 194&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 195&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ListItemType&lt;/span&gt;.Footer:&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 196&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lc.Text = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;I&amp;gt;&amp;quot;&lt;/span&gt; + columnName + &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;/I&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 197&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; container.Controls.Add(lc);&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 198&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 199&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 200&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 201&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 202&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 203&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 204&lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 205&lt;/span&gt; }&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I hope this helps to anyone that needs to use GridView programmatically in a WebPart or asp.net application.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-793419350651100597?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/793419350651100597/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=793419350651100597' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/793419350651100597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/793419350651100597'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/11/using-gridview-only-with-code-in.html' title='Using a GridView only with code in a SharePoint (2007) WebPart, or in asp.net'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-4948805346950425731</id><published>2009-06-04T18:45:00.001+02:00</published><updated>2009-06-04T18:45:03.828+02:00</updated><title type='text'>Recursos de MOSS2007 para Project Managers</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Planificación y metodología&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Home de SharePoint en Technet: &lt;a href="http://technet.microsoft.com/en-us/office/sharepointserver/default.aspx"&gt;http://technet.microsoft.com/en-us/office/sharepointserver/default.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Planning: &lt;a href="http://technet.microsoft.com/en-us/library/cc261834.aspx"&gt;http://technet.microsoft.com/en-us/library/cc261834.aspx&lt;/a&gt;, fijaros que aquí podéis encontrar:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262757.aspx"&gt;Downloadable book: Planning and architecture for Office SharePoint Server 2007&lt;/a&gt;, que es un documento Word de especificación/diseño “maestro” para guiar un proyecto, &lt;/li&gt;      &lt;li&gt;“&lt;a href="http://technet.microsoft.com/en-us/library/cc263199.aspx"&gt;Technical diagrams and other supplemental documentation&lt;/a&gt;”, que son diagramas Visio (en mi opinión más interesantes comercialmente que técnicamente)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Template Microsoft Office Project para un deploy de SharePoint: &lt;a href="http://office.microsoft.com/search/redir.aspx?assetid=TC102750081033&amp;amp;QueryID=xRZF5vZ0U0&amp;amp;respos=1&amp;amp;rt=2&amp;amp;pid=CT102530621033"&gt;http://office.microsoft.com/search/redir.aspx?assetid=TC102750081033&amp;amp;QueryID=xRZF5vZ0U0&amp;amp;respos=1&amp;amp;rt=2&amp;amp;pid=CT102530621033&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Arquitectura y diseño tecnológico&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Best practices: Sharepoint Guidance (on-line) &lt;a href="http://msdn.microsoft.com/en-us/library/dd203468.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd203468.aspx&lt;/a&gt;, download offline: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C3722DBA-6EE7-4E0E-82B5-FDAF3C5EC927&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=C3722DBA-6EE7-4E0E-82B5-FDAF3C5EC927&amp;amp;displaylang=en&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;SDK (que es básicamente unos ficheros de ayuda y algunos “starters” de código): &lt;a href="http://msdn.microsoft.com/en-us/library/ms550992.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms550992.aspx&lt;/a&gt;, versión para descargar: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6D94E307-67D9-41AC-B2D6-0074D6286FA9&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=6D94E307-67D9-41AC-B2D6-0074D6286FA9&amp;amp;displaylang=en&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Dentro del SDK encontraréis los Visual How-tos, en mi opinión muy útiles: &lt;a href="http://msdn.microsoft.com/en-us/library/dd146863.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd146863.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Aceleradores de desarrollo&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;El código incluido en el SDK&lt;/li&gt;    &lt;li&gt;Recursos en CodePlex: &lt;a href="http://www.codeplex.com/site/search?projectSearchText=sharepoint"&gt;http://www.codeplex.com/site/search?projectSearchText=sharepoint&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Herramienta comercial BDC: &lt;a href="http://www.lightningtools.com/bdc-meta-man/default.aspx"&gt;http://www.lightningtools.com/bdc-meta-man/default.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-4948805346950425731?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/4948805346950425731/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=4948805346950425731' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/4948805346950425731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/4948805346950425731'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/06/recursos-de-moss2007-para-project.html' title='Recursos de MOSS2007 para Project Managers'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-7722636075736435153</id><published>2009-03-29T11:49:00.001+02:00</published><updated>2009-03-29T12:11:24.088+02:00</updated><title type='text'>Generic code to serialize a DataTable</title><content type='html'>Just add this code in your project, and call to the XmlSerialize solution:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;/// &lt;summary&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;/// Gets the XML of the passed object.        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;/// &lt;/summary&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;        public static string XmlSerialize(object obj)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            // Validate argument 'obj'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            if (obj == null)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;                throw new ArgumentNullException("obj", "Argument 'obj' is null");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            XmlSerializer ser = new XmlSerializer(obj.GetType());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            UTF8Encoding utf8 = new UTF8Encoding(false, false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            string xml = null;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            using (MemoryStream ms = new MemoryStream())&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;                using (StreamWriter sw = new StreamWriter(ms, utf8))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;                    ser.Serialize(sw, obj);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;                    xml = utf8.GetString(ms.GetBuffer());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;            return xml;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-7722636075736435153?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/7722636075736435153/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=7722636075736435153' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/7722636075736435153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/7722636075736435153'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/03/generic-code-to-serialize-datatable.html' title='Generic code to serialize a DataTable'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-3446762442954669089</id><published>2009-02-17T17:07:00.001+01:00</published><updated>2009-02-17T17:15:01.794+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows mobile'/><title type='text'>Microsoft en el Mobile World Congress</title><content type='html'>A parte de la visita de Steve Ballmer, que después de algunas presentaciones&lt;br /&gt;un tanto estrafalarias aparece en los cursos de oradores (recordemos&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=wvsboPUjrGc"&gt;http://www.youtube.com/watch?v=wvsboPUjrGc&lt;/a&gt;), la atención de esta edición del&lt;br /&gt;Mobile World Congress se me la ha llevado un par de novedades. &lt;p&gt;HTC continua sorprendiéndoos en positivo con dos magníficos teléfonos: la&lt;br /&gt;HTC Diamond 2&lt;br /&gt;&lt;image src="http://www.htc.com/uploadedImages/Common/Shared_Image/Gallery/HTC_Touch_Diamond_2/large1.jpg" width="322"&gt;&lt;/img&gt; y la HTC Touch Dual&lt;br /&gt;&lt;img src="http://www.htc.com/uploadedImages/WWW/Product/HTC_Touch_Pro/Gallery/large2.jpg" width="322"&gt;&lt;/img&gt;. &lt;p&gt;Por cierto que ambos teléfonos llavan preinstalados la segunda novedad que&lt;br /&gt;destaco: Windows Mobile 6.5. Aunque mejor que sus predecesores, Microsoft&lt;br /&gt;parece ser que lo único que puede hacer por el momento es seguir los pasos&lt;br /&gt;(muy evidentemente por detrás) del famoso iPhone. No obstante, aparte de lo&lt;br /&gt;obvio (interfaz táctil) se empieza a ver un filón de algo interesante de lo&lt;br /&gt;que probablemente pueda ser un factor diferencial en los próximos meses o&lt;br /&gt;próximas versiones: la sincronización de datos entre todos los dispositivos.&lt;br /&gt;Si no conocéis todavía la tecnología Live Mesh os recomiendo que la provéis&lt;br /&gt;(es gratuita) (&lt;a href="https://www.mesh.com/Welcome/Default.aspx"&gt;Live Mesh Website&lt;/a&gt;). &lt;p&gt;&lt;iframe src="http://www.microsoft.com/presspass/silverlightApps/videoplayer2/standalone.aspx?contentId=MobileWorldCongres_newwindowsphones&amp;src=/presspass/events/MobileWorldCongress/pageResources/playlist.xml&amp;WT.cg_n=MobileWorldCongress&amp;WT.z_convert=embed" width="400" height="334" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-3446762442954669089?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/3446762442954669089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=3446762442954669089' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/3446762442954669089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/3446762442954669089'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/02/microsoft-en-el-mobile-world-congress.html' title='Microsoft en el Mobile World Congress'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-3219530856195279506</id><published>2009-02-01T13:29:00.002+01:00</published><updated>2009-02-01T14:07:47.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FormsServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Infopath2007'/><title type='text'>Infopath and Forms Server: Schema validation found non-datatype errors</title><content type='html'>While developing a browser enabled Infopath 2007 Form with code I got this&lt;br /&gt;error: " Schema validation found non-datatype errors". &lt;p&gt;The error was thrown when I tried to set a field of the form to a blank&lt;br /&gt;value (&lt;span style="font-family:courier new;"&gt;String.Empty&lt;/span&gt;). &lt;p&gt;&lt;span style="font-family:courier new;"&gt;XPathNavigator nav =&lt;br /&gt;this.MainDataSource.CreateNavigator().SelectSingleNode("/my:" +&lt;br /&gt;DATASOURCE_ROOT + "/my:" + field, NamespaceManager);&lt;/span&gt; &lt;p&gt;&lt;span style="font-family:courier new;"&gt;Nav.SetValue(value);&lt;/span&gt; &lt;p&gt;After many times of trial and error I found that the problem was actually to&lt;br /&gt;set a value to a field that had not had yet a value, so just making this&lt;br /&gt;check was enough: &lt;p&gt;&lt;span style="font-family:courier new;"&gt;if (nav.Value != value)&lt;br /&gt;{&lt;br /&gt;nav.SetValue(value);&lt;br /&gt;}&lt;/span&gt; &lt;p&gt;I.e. if the value is still empty and I want to set String.Empty it actually&lt;br /&gt;does nothing.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-3219530856195279506?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/3219530856195279506/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=3219530856195279506' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/3219530856195279506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/3219530856195279506'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/02/schema-validation-found-non-datatype.html' title='Infopath and Forms Server: Schema validation found non-datatype errors'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-2252090915200934549</id><published>2009-01-31T16:11:00.002+01:00</published><updated>2009-01-31T16:20:45.037+01:00</updated><title type='text'>This site may harm your computer - a Google's bug?</title><content type='html'>No matter the search I do just below each link in Google there is another&lt;br /&gt;which says "This site may harm your computer", and if I want to browse it&lt;br /&gt;I get a big advert from Google. May this be a Google search bug? &lt;p&gt;The first image shows a search of "Microsoft", and the second one the&lt;br /&gt;message I get when I click the link. &lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_rSA8BTQFKhI/SYRptEJq4JI/AAAAAAAAAHA/-Rbu4eq_2rM/s1600-h/GooglesBug1-780641.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5297475284623876242" alt="" src="http://1.bp.blogspot.com/_rSA8BTQFKhI/SYRptEJq4JI/AAAAAAAAAHA/-Rbu4eq_2rM/s320/GooglesBug1-780641.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_rSA8BTQFKhI/SYRpte3DYXI/AAAAAAAAAHI/rnt2Yaacp8Q/s1600-h/GooglesBug2-781057.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5297475291793547634" alt="" src="http://3.bp.blogspot.com/_rSA8BTQFKhI/SYRpte3DYXI/AAAAAAAAAHI/rnt2Yaacp8Q/s320/GooglesBug2-781057.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-2252090915200934549?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/2252090915200934549/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=2252090915200934549' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/2252090915200934549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/2252090915200934549'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2009/01/this-website-can-damage-your-computer.html' title='This site may harm your computer - a Google&apos;s bug?'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rSA8BTQFKhI/SYRptEJq4JI/AAAAAAAAAHA/-Rbu4eq_2rM/s72-c/GooglesBug1-780641.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-1297653581450963995</id><published>2008-12-01T18:59:00.000+01:00</published><updated>2008-12-01T18:58:10.950+01:00</updated><title type='text'>Troubleshooting Excel Services</title><content type='html'>I got an &amp;quot;Access denied. You do not have permission to perform this action&lt;br&gt;or access this resource&amp;quot; while trying to render an Excel in Web Browser&lt;br&gt;mode. After one hour carefully examining logs I found the problem. The&lt;br&gt;Shared Services Application Pool was configured with anonymous&lt;br&gt;authentication in IIS, which lead to an authentication problem.&lt;p&gt;Excel Services logs, at 12 hive showed the authentication problem:&lt;br&gt;ExcelService.ProcessRequestIdentity: IIS didn&amp;#39;t pass us an authenticated&lt;br&gt;user, Check that the virtual folder is set to authenticate using&lt;br&gt;WindowsIntegrated	 &lt;br&gt;A user attempted to access Excel Services, but was denied because they do&lt;br&gt;not have a domain or local machine identity. [User: ]	 &lt;br&gt;Access denied. You do not have permission to perform this action or access&lt;br&gt;this resource.     At (..)&lt;p&gt;IIS logs showed no user was passed to application:&lt;br&gt;2008-12-01 17:50:24 W3SVC1720207907 VMSHPP &lt;a href="http://127.0.0.1"&gt;127.0.0.1&lt;/a&gt; POST&lt;br&gt;/SharedServices1/ExcelCalculationServer/ExcelService.asmx - 56737&lt;br&gt;VMSHPP\Administrator &lt;a href="http://127.0.0.1"&gt;127.0.0.1&lt;/a&gt; HTTP/1.1&lt;br&gt;Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+Protocol+2.0.50727&lt;br&gt;.3053) - - vmshpp:56737 200 0 0 27634 1207 78&lt;p&gt;Hope this helps...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-1297653581450963995?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/1297653581450963995/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=1297653581450963995' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/1297653581450963995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/1297653581450963995'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2008/12/troubleshooting-excel-services.html' title='Troubleshooting Excel Services'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-6833402524222387907</id><published>2008-11-14T18:52:00.001+01:00</published><updated>2008-11-14T18:52:10.685+01:00</updated><title type='text'>Tunning a development virtual machine for Sharepoint</title><content type='html'>One of the rules I have set up in my team when developing Sharepoint&lt;br&gt;projects is to use Virtual Machines. We may use VMWare or Virtual PC,&lt;br&gt;depending on the machine pattern we take at the beginning of the project.&lt;br&gt;Though our hardware is usually a high-profiled Dell laptop, it sometimes&lt;br&gt;becomes a quite slow environment to work.&lt;p&gt;Four tips to run Sharepoint virtual machines faster I have found so far are:&lt;br&gt;- Running the machine in an external disk.&lt;br&gt;- Assigning at least 2 Gb of RAM Memory.&lt;br&gt;- Stoping search service (when not needed).&lt;br&gt;- Defragmenting the virtual machine. If you use VMWare you can do it from&lt;br&gt;the disk tools, in machine settings, which is much more faster.&lt;p&gt;Hope this helps to anyone working in a similar way...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-6833402524222387907?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/6833402524222387907/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=6833402524222387907' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/6833402524222387907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/6833402524222387907'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2008/11/tunning-development-virtual-machine-for.html' title='Tunning a development virtual machine for Sharepoint'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-4299867201040210102</id><published>2008-11-07T18:09:00.001+01:00</published><updated>2008-11-07T18:09:46.708+01:00</updated><title type='text'>Troubleshooting Excel Web Service and Visual Studio 2008</title><content type='html'>&lt;p dir="ltr"&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;After&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;some hours developing with Excel Web Service and Visual Studio 2008 I have discovered that an only single con&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;sideration can save you a lot of time.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;When you add the Excel Web Service in Visual Studio 2008 operations will have a different signature compared to MSDN samples, and if you try for example to set a range you may experience some problems with an object&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;of type&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;ArrayOfAnyType&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;However all these issues and differences can be avoided with one simple configuration change:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;1.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;Add the Excel Web Service.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;2.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;Click the Visual Studio button to&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;“&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;Show All Files&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;”&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;, in Solution Explorer.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;3.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;The Web Service will appear as a f&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;older. You can click on it and some files appear. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;4.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;You will see a file called Reference.svcmap. Open it.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;5.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;In element: ReferenceGroup&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;a.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;In ClientOptions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;i.     &lt;/span&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;In Serializer: Change Auto to&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;XmlSerializer&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Courier New;"&gt;&amp;lt;Serializer&amp;gt;XmlSerializer&amp;lt;/Serializer&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;And everything will work fine!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;In&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;the link below&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt; there is a comment that explains&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt; what we have done. By default Visual Studio uses a&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;span style="font-family:Calibri;"&gt;DataContractSerializer&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;, but an XmlSerializer should be used instead.&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointexcel/thread/2fd36e6b-5fa7-47a4-9d79-b11493d18107/"&gt;&lt;span lang="ca"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;u&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;color:#0000ff;"&gt;http://social.msdn.microsoft.com/Forums/en-US/sharepointexcel/thread/2fd36e6b-5fa7-47a4-9d79-b11493d18107/&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ca"&gt;&lt;/span&gt;&lt;span lang="en-us"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-4299867201040210102?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/4299867201040210102/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=4299867201040210102' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/4299867201040210102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/4299867201040210102'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2008/11/troubleshooting-excel-web-service-and.html' title='Troubleshooting Excel Web Service and Visual Studio 2008'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-2623770959570343119</id><published>2008-11-07T16:50:00.001+01:00</published><updated>2008-11-07T17:05:15.145+01:00</updated><title type='text'>The requested range is not a valid sheet location</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;I tried the example in MSDN for setting a range of an Excel by using the Excel Web Service. A simplified way of this example is calling the web service in this way:&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;object[] o1 = new object[1];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;object[] o2 = new object[1];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;o1[0] = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;o2[1] = o1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;excel.SetRangeA1(sessionId, "Hoja1", "c2:c2", o1);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Notice that the last parameter must be an array with an array in each position (a jagged array).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;If you add a reference in Visual Studio 2008 this does not work as the last parameter must be of type of ArrayOfAnyType. If you try the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;ArrayOfAnyType aoat = new ArrayOfAnyType();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;aoat.Add(1); // we add an object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;excel.SetRangeA1(sessionId, "Hoja1", "c2:c2", aoat);object[] o1 = new object[1];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;This will generate an exception: The requested range is not a valid sheet location. The solution is it needs the second dimension:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;ArrayOfAnyType aoat = new ArrayOfAnyType();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;ArrayOfAnyType aoat2 = new ArrayOfAnyType();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;aoat2.Add(1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;aoat.Add(aoat2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:10;"&gt;excel.SetRangeA1(sessionId, "Hoja1", "c2:c2", aoat);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;This code will work fine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-2623770959570343119?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/2623770959570343119/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=2623770959570343119' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/2623770959570343119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/2623770959570343119'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2008/11/requested-range-is-not-valid-sheet.html' title='The requested range is not a valid sheet location'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-3354171614795002842</id><published>2008-07-10T21:41:00.003+02:00</published><updated>2008-11-07T16:30:32.943+01:00</updated><title type='text'>Growing in IT world</title><content type='html'>After many time blogging about Microsoft technology I have a frustration: I have only captured the attention of the blogsphere in career related postings!&lt;br /&gt;&lt;br /&gt;Maybe I should only post my thougts about something that really pationates me: how can I be a better IT professional tomorrow?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-3354171614795002842?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/3354171614795002842/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=3354171614795002842' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/3354171614795002842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/3354171614795002842'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2008/07/growing-in-it-world.html' title='Growing in IT world'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-5228112184737653948</id><published>2007-03-04T20:56:00.000+01:00</published><updated>2007-09-19T15:55:43.472+02:00</updated><title type='text'>Why Excel opens inside IE window?</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;When&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;click&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;an&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Excel&lt;/span&gt; file &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;on&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;web&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;may&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;experienced&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;different&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;behavious&lt;/span&gt;: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;sometimes&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Excel&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;opens&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;inside&lt;/span&gt; Internet &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Explorer&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;sometimes&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;in&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Excel&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Window&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;found&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;usefull&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;tip&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;in&lt;/span&gt; Microsoft &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;Excel&lt;/span&gt; blog &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;understand&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;why&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;happends&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;how&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;ensure&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;allways&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;works&lt;/span&gt; as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;expected&lt;/span&gt;: &lt;a href="http://blogs.msdn.com/excel/archive/2006/09/26/771221.aspx"&gt;http://blogs.msdn.com/excel/archive/2006/09/26/771221.aspx&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-5228112184737653948?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/5228112184737653948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/5228112184737653948'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2007/03/why-excel-opens-inside-ie-window.html' title='Why Excel opens inside IE window?'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-8938764112381799962</id><published>2007-02-20T23:18:00.000+01:00</published><updated>2007-02-21T08:32:59.455+01:00</updated><title type='text'>BlogOriol Vista SlideBar Gadget</title><content type='html'>&lt;a href="http://bp2.blogger.com/_rSA8BTQFKhI/Rdv1k2U-7bI/AAAAAAAAAAY/PmbTv9Gplv4/s1600-h/BlogOriolGadget.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_rSA8BTQFKhI/Rdv1k2U-7bI/AAAAAAAAAAY/PmbTv9Gplv4/s320/BlogOriolGadget.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5033887021924281778" /&gt;&lt;/a&gt;&lt;br /&gt;I'm proud to announce the first beta realease of BlogOriol Vista SlideBar Gadget. This gadget shows the last posts headlines, and links to the whole content, in the Vista SlideBar.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gallery.live.com/liveItemDetail.aspx?li=d5c9730e-f389-4443-af33-f658312d7481&amp;l=1"&gt;Click here to download it.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope you enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-8938764112381799962?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/8938764112381799962/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=8938764112381799962' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/8938764112381799962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/8938764112381799962'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2007/02/blogoriol-vista-slidebar-gadget.html' title='BlogOriol Vista SlideBar Gadget'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_rSA8BTQFKhI/Rdv1k2U-7bI/AAAAAAAAAAY/PmbTv9Gplv4/s72-c/BlogOriolGadget.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-6823241368819590428</id><published>2007-01-31T08:58:00.000+01:00</published><updated>2007-01-31T09:01:09.920+01:00</updated><title type='text'>Excel 2007 does not support synchronization with Sharepoint lists</title><content type='html'>There is a loose of functionality when you move from Excel 2003 to Excel 2007. The later can not synchronize with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0" onclick="BLOG_clickHandler(this)"&gt;Sharepoint&lt;/span&gt; lists, as the predecessor could do. This behaviour is by design, as you can see en this Microsoft KB Article: &lt;a href="http://support.microsoft.com/kb/930006/en-us"&gt;http://support.microsoft.com/kb/930006/en-us&lt;/a&gt;. The workaround suggested is creating a macro and keeping the file to be synchronized in 2003 format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-6823241368819590428?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/6823241368819590428/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=6823241368819590428' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/6823241368819590428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/6823241368819590428'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2007/01/excel-2007-does-not-support.html' title='Excel 2007 does not support synchronization with Sharepoint lists'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-83755071469811224</id><published>2007-01-29T17:36:00.000+01:00</published><updated>2007-01-29T17:51:23.416+01:00</updated><title type='text'>How to develop both accessible and outstanding-looking websites</title><content type='html'>More and more customers are asking us for developing accessible websites, or or updating existing ones. In most cases they ask to complain &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0" onclick="BLOG_clickHandler(this)"&gt;WAI&lt;/span&gt; standards (&lt;a href="http://www.w3.org/WAI/"&gt;http://www.w3.org/WAI/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Designing a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1" onclick="BLOG_clickHandler(this)"&gt;WAI&lt;/span&gt; compliant website (even at the lowest level of the standard) with a nice-looking appearance is complex and expensive.&lt;br /&gt;&lt;br /&gt;However I have just discovered another approach, at &lt;a href="http://www.gartner.com/"&gt;www.gartner.com&lt;/a&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2" onclick="BLOG_clickHandler(this)"&gt;Gartner&lt;/span&gt; has a secondary accessible website and therefore the main site can still use all the user experience resources available. Great idea!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-83755071469811224?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/83755071469811224/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=83755071469811224' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/83755071469811224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/83755071469811224'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2007/01/how-to-develop-both-wai-compliant-and.html' title='How to develop both accessible and outstanding-looking websites'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-116090021594957931</id><published>2006-10-15T10:11:00.000+02:00</published><updated>2006-10-15T10:16:55.960+02:00</updated><title type='text'>Is Windows Workflow + MOSS enough?</title><content type='html'>Interesting post at &lt;a href="http://ablog.apress.com/?p=1275"&gt;http://ablog.apress.com/?p=1275&lt;/a&gt;. According to Scot Hillier WF + MOSS will not obsolete workflow vendors. The main reason he points is the difficulty to customize workflows by a business user: out-of-the-box workflow implementations are too simplistic; Sharepoint Designer will require techical stuff to help business users and Visual Studio 2005 developments will require too much development effords when changes are required. Additionally he points that WF + MOSS has not enough montitoring and auditing capabilities (without development).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-116090021594957931?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/116090021594957931/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=116090021594957931' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/116090021594957931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/116090021594957931'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/10/is-windows-workflow-moss-enough.html' title='Is Windows Workflow + MOSS enough?'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-115635320817858983</id><published>2006-07-29T19:02:00.000+02:00</published><updated>2006-08-24T09:36:45.453+02:00</updated><title type='text'>Microsoft® .NET Framework 2.0—Application Development Foundation</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/2106/854/1600/10940843b.3.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/2106/854/200/10940843b.0.jpg" border="0" /&gt;&lt;/a&gt;I read "MCTS Self-Paced Training Kit (Exam 70-536): Microsoft® .NET Framework 2.0—Application Development Foundation" (Microsoft Press, 2006, ISBN 0-7356-2277-9) to prepare for exam 70-536.&lt;br /&gt;&lt;br /&gt;The book covers quite deeply the .NET 2.0 Framework, and it is very advisable for developers and architects that will create applications within this architecture.&lt;br /&gt;&lt;br /&gt;The most usefull aspects of the book for me to are explaining the different avaliable collection types; how generics works (I discovered it is a wider concept compared to C++), how to check regular expresions, how to code multithreaded applications, the security model and the explanation of what are application domains.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-115635320817858983?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/115635320817858983/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=115635320817858983' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/115635320817858983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/115635320817858983'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/07/microsoft-net-framework-20application.html' title='Microsoft® .NET Framework 2.0—Application Development Foundation'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-115635128555736648</id><published>2006-08-23T18:41:00.000+02:00</published><updated>2006-08-23T18:50:17.270+02:00</updated><title type='text'>Introducing to Windows Workflow Fundation</title><content type='html'>&lt;p&gt;&lt;a href="http://photos1.blogger.com/blogger/2106/854/1600/10706742.3.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/2106/854/200/10706742.1.jpg" border="0" /&gt;&lt;/a&gt;I have just read Presenting Windows Workflow Fundation Beta Edition (Sams, 2005, ISBN: 0672328488). This book has been written by several key members of the Microsoft team responsible for creating and marketing Windows Workflow Foundation, and covers WWF at an introductory level.&lt;br /&gt;&lt;br /&gt;I really encourage .NET Architects to start learning the basics of this technology. From the readings and practices I have coded I believe we are in front of an emerging powerful new framework, that will be certainly usefull not only for &lt;em&gt;typical workflows&lt;/em&gt; but for coding aplication logic in a more comprehensive way.&lt;br /&gt;&lt;br /&gt;In my honest opinion the most interesting aspects of WWF are the posibility to represent and code application logic in a "flowchart way"; the extensibility of the framework (in terms of activities and plugable services); and the provided core activities (call web services, methods, etc.) and services (persistance, transactions, etc.). &lt;/p&gt;&lt;p&gt;The most important drawbacks I have found are the complexity to understand the concepts behind, and the caveheats related with tread management (workflow is a parallell thread of the aplication). &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-115635128555736648?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/115635128555736648/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=115635128555736648' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/115635128555736648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/115635128555736648'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/08/introducing-to-windows-workflow.html' title='Introducing to Windows Workflow Fundation'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-115632888608194512</id><published>2006-07-31T12:20:00.000+02:00</published><updated>2006-08-23T12:28:06.093+02:00</updated><title type='text'>Got 2 more: 70-528 &amp; 70-536!</title><content type='html'>I have just started my way on .net 2.0 certifications with 2 exams. 70-528 (Technology Specialist: Microsoft .NET Framework 2.0 - Web-Based Client Development) and 70-536 (Technology Specialist: Microsoft .NET Framework 2.0—Application Development Foundation).&lt;br /&gt;&lt;br /&gt;First one is a wide-check of your knowledge on web development in 2.0. It is not a difficult exam. Second one is more tricky as it checks the knowledge you have in specificities of .net 2.0 framework. I recommend to specially make an efford to prepare this exam, as it covers many not-so-common classes (drawing and cryptography-related, for example).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-115632888608194512?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/115632888608194512/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=115632888608194512' title='9 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/115632888608194512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/115632888608194512'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/07/got-2-more-70-528-70-536.html' title='Got 2 more: 70-528 &amp; 70-536!'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-114857944013223763</id><published>2006-05-25T19:36:00.000+02:00</published><updated>2006-05-25T20:17:56.346+02:00</updated><title type='text'>Sharepoint 2003 Indexing Rules</title><content type='html'>How Indexing Rules work in Sharepoint 2003 is one of the obscure topics of the product as documentation is quite poor. However, after reading all the available articles and experimenting a lot with it, we have reached some conclusions.&lt;br /&gt;&lt;br /&gt;The following apply when creating rules for the Sharepoint Sites (including a Portal Site):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sharepoint indexer parses sites in an internal format. If you take a look at logs (I really recommend to enable logging of all events when configuring indexing rules) you will see URIs like &lt;a id="url_link6" href="http://amonlanc:8080/_layouts/3082/UrlTranslate.aspx?Xlat=Sts2%3a%2f%2famonlanc%3a8080%2fsites%2fkb%2fwebid%3d000%2flistid%3d%7b5ED439BA-05A2-42A6-BE40-527E7619D82A%7d%2fitemid%3d12" target="_new"&gt;Sts2://amonlanc:8080/sites/kb/webid=000/listid={5ED439BA-05A2-42A6-BE40-527E7619D82A}/itemid=12&lt;/a&gt; (amonlanc:8080 is the Portal Server) or &lt;a id="url_link60" href="http://amonlanc:8080/_layouts/3082/UrlTranslate.aspx?Xlat=sps%3a%2f%2famonlanc%3a8080%2fsite%24%24%24site%2fscope%3d%24%24%24default%24%24%24%2fbucketid%3d3%2f" target="_new"&gt;sps://amonlanc:8080/site$$$site/scope=$$$default$$$/bucketid=3/&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sharepoint indexer also parses the URL associated with these resources, for certain entities: Sites (&lt;a id="url_link10" href="http://amonlanc:8080/sites/kb" target="_new"&gt;http://amonlanc:8080/sites/kb&lt;/a&gt;) and List Items (&lt;a id="url_link39" href="http://amonlanc:8080/sites/kb/Templates/Template%202.html" target="_new"&gt;http://amonlanc:8080/sites/kb/Templates/Template%202.html&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can write rules to include or exclude content to be indexed or searched by specifing Sites and Item URL Patterns. Here are some examples (amonlanc:8080 is a Sharepoint Portal Server):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/"&gt;http://amonlanc:8080/&lt;/a&gt; - Exclude. &lt;a href="http://amonlanc:8080/"&gt;http://amonlanc:8080/&lt;/a&gt; (with a slash) is the root site (or Portal Site). You can decide to include or exclude it.&lt;/li&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/sites/*/templates/"&gt;http://amonlanc:8080/sites/*/templates/&lt;/a&gt;* - Exclude. Do not index items following this URL pattern.&lt;/li&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/sites/test/"&gt;http://amonlanc:8080/sites/test/&lt;/a&gt;* - Exclude. Do not index items following this URL pattern.&lt;/li&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/sites/archive/"&gt;http://amonlanc:8080/sites/archive/&lt;/a&gt; - Exclude. Do not index this site.&lt;/li&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/"&gt;http://amonlanc:8080/&lt;/a&gt;* - Include. Index all items following this URL Pattern.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In the index management page you can see the number of documents in the index. This is not really the number of documents you can search information, but the number of documents processed during the indexing process. In the example before, no items where processed for rule [&lt;a href="http://amonlanc:8080/sites/archive/"&gt;http://amonlanc:8080/sites/archive/&lt;/a&gt; - Exclude] but the site itself; however it will count all the items excluded by the rule [&lt;a href="http://amonlanc:8080/sites/test/"&gt;http://amonlanc:8080/sites/test/&lt;/a&gt;* - Exclude].&lt;/p&gt;&lt;p&gt;Rules apply from first to last, being the first the most prioritary. This is important, as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/sites/kb"&gt;http://amonlanc:8080/sites/kb&lt;/a&gt;* - Excluded&lt;/li&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/"&gt;http://amonlanc:8080/&lt;/a&gt;* - Included&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;means to exclude one site (kb) while&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/"&gt;http://amonlanc:8080/&lt;/a&gt;* - Included&lt;/li&gt;&lt;li&gt;&lt;a href="http://amonlanc:8080/sites/kb"&gt;http://amonlanc:8080/sites/kb&lt;/a&gt;* - Excluded&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;means to index all contents, including kb site. So order matters.&lt;/p&gt;&lt;p&gt;I'm still working on it so I may publish more details. If you have any doubt or comment please add them to the article and hopefully I will be able to answer it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-114857944013223763?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/114857944013223763/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=114857944013223763' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/114857944013223763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/114857944013223763'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/05/sharepoint-2003-indexing-rules.html' title='Sharepoint 2003 Indexing Rules'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-114607692378511091</id><published>2006-04-26T20:30:00.000+02:00</published><updated>2006-05-05T17:19:56.960+02:00</updated><title type='text'>Building Webparts for Sharepoint 2003 with Visual Studio 2005</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff6600;"&gt;Yes, it is possible!&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;Actually jou just have to enable Visual Studio 2005 to generate .NET 1.1 applications. There is a Microsoft-Community add-in for MSBuild that enables this: &lt;strong&gt;MSBuild Extras - Toolkit for .NET 1.1 "MSBee"&lt;/strong&gt;. You can download it from &lt;a href="http://msdn.microsoft.com/vstudio/downloads/tools/msbee/default.aspx"&gt;http://msdn.microsoft.com/vstudio/downloads/tools/msbee/default.aspx&lt;/a&gt; (you will get a MSI file).&lt;/p&gt;&lt;p&gt;Once you have installed it, this &lt;em&gt;2 steps&lt;/em&gt; will be enough to compile webparts for Sharepoint 2003:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;[1]&lt;/strong&gt; Open you project file with a text editor (notepad for example), and do the following (in the MSBee help file you will find the same but with a VB project):&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="color:#000066;"&gt;To import an MSBee .targets file in a C# project file, find the import element for the MSBuild .targets file. For a C# project, the line you are looking for is shown below.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#000066;"&gt;&amp;lt;Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#000066;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000066;"&gt;Immediately under this line, insert the MSBee language-specific target file. For a C# project, you will want to insert the line below.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#000066;"&gt;&amp;lt;Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition=" '$(BuildingInsideVisualStudio)' == '' AND '$(TargetFX1_1)'=='true'" /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#000066;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://photos1.blogger.com/blogger/2106/854/1600/vs2005_1_1.png"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/2106/854/320/vs2005_1_1.png" border="0" /&gt;&lt;/a&gt;[2]&lt;/strong&gt; Open the Visual Studio Command and compile with MSBuild: &lt;span style="font-family:courier new;"&gt;msbuild [project file] /t:Rebuild /p:TargetFX1_1=true&lt;/span&gt;. This generates the binaries under &lt;span style="font-family:courier new;"&gt;bin\FX1_1\Debug&lt;/span&gt; (see the picture).&lt;/p&gt;&lt;p&gt;Maybe you will find usefull to build the solution until no errors are found and afterwards call a script that calls to MSBuild and copies the binaries to the IIS Virtual Directory (usually located at &lt;span style="font-family:courier new;"&gt;server\\c\inetpub\wwwroot\bin&lt;/span&gt;).&lt;/p&gt;&lt;p&gt;I haven't found the way to build the solution inside Visual Studio, yet. I guess it is not that easy (from the help file: "At this time, we are not planning to add IDE support."). Comments are welcome if you know how!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-114607692378511091?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/114607692378511091/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=114607692378511091' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/114607692378511091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/114607692378511091'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/04/building-webparts-for-sharepoint-2003.html' title='Building Webparts for Sharepoint 2003 with Visual Studio 2005'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25379007.post-114416457936493294</id><published>2006-04-04T17:25:00.000+02:00</published><updated>2006-04-04T17:29:39.373+02:00</updated><title type='text'>Blogging again</title><content type='html'>Today I start this blog... for the first time I'm going to blog about technology (guess... my profession!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25379007-114416457936493294?l=oriolqc-blogs.itequia.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oriolqc-blogs.itequia.com/feeds/114416457936493294/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=25379007&amp;postID=114416457936493294' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/114416457936493294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25379007/posts/default/114416457936493294'/><link rel='alternate' type='text/html' href='http://oriolqc-blogs.itequia.com/2006/04/blogging-again.html' title='Blogging again'/><author><name>Oriol</name><uri>http://www.blogger.com/profile/18231531543805588696</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04939473601135477219'/></author><thr:total>0</thr:total></entry></feed>