<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Haaron Gonzalez : SharePoint Designer 2007, WSS 3.0, Windows SharePoint Services, SharePoint Designer</title><link>http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer+2007/WSS+3.0/Windows+SharePoint+Services/SharePoint+Designer/default.aspx</link><description>Etiquetas: SharePoint Designer 2007, WSS 3.0, Windows SharePoint Services, SharePoint Designer</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Como validar campos en formularios de listas personalizadas de SharePoint con SharePoint Designer</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/06/15/como-validar-campos-en-formularios-de-listas-personalizadas-de-sharepoint-con-sharepoint-designer.aspx</link><pubDate>Wed, 15 Jun 2011 23:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:196159</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=196159</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/06/15/como-validar-campos-en-formularios-de-listas-personalizadas-de-sharepoint-con-sharepoint-designer.aspx#comments</comments><description>&lt;p&gt;Lo &amp;uacute;nico que puedo decir es que aquellos peque&amp;ntilde;os y finos detalles dejan un sabor mucho m&amp;aacute;s agradable a la experiencia. &lt;/p&gt;
&lt;p&gt;Durante un pasado servicio de soporte se solicit&amp;oacute; un requerimiento de validar que el campo fecha de una lista personalizada, no permitiera ingresar fechas mayores o iguales al d&amp;iacute;a de hoy. Sin duda, de primera mano y como todo un programador piensas en construir un Custom Field que contenga la funcionalidad solicitada, sin embargo, todas las implicaciones y costo de desarrollar, probar, implementar y mantener una funcionalidad como tal no se justifica como para esta necesidad solicitada y el sentido de urgencia. &lt;/p&gt;
&lt;p&gt;El folcl&amp;oacute;rico y temperamental SharePoint Desginer 2007 a.k.a &amp;ldquo;&lt;strong&gt;SPD&lt;/strong&gt;&amp;rdquo; hace su aparici&amp;oacute;n como una alternativa para realizar la validaci&amp;oacute;n solicitada. &lt;/p&gt;
&lt;p&gt;B&amp;aacute;sicamente la soluci&amp;oacute;n ser&amp;aacute;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copiar y pegar la p&amp;aacute;gina NewForm.aspx de la lista en cuesti&amp;oacute;n con el nombre de NewFormEnhancement.aspx &lt;/li&gt;
&lt;li&gt;Abrir la p&amp;aacute;gina y poner invisible el primer WebPart &lt;/li&gt;
&lt;li&gt;Agregar un Custom List Form de tipo New para la lista en cuesti&amp;oacute;n &lt;/li&gt;
&lt;li&gt;Agregar validadores a field donde requerimos la funcionalidad &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;1. Copiar y pegar la p&amp;aacute;gina NewForm.aspx de la lista en cuesti&amp;oacute;n con el nombre de NewFormEnhanced.aspx &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6318.image_5F00_1F26DD4A.png"&gt;&lt;img height="240" width="210" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3276.image_5F00_thumb_5F00_6C56D6D5.png" align="right" alt="image" border="0" title="image" style="border-right-width:0px;margin:15px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cargamos el sitio en cuesti&amp;oacute;n usando &lt;strong&gt;SPD&lt;/strong&gt;, aseg&amp;uacute;rate de firmarte al sitio en cuesti&amp;oacute;n&amp;nbsp; con una cuenta que por lo menos el permiso de &lt;strong&gt;Site Collection owner&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Cuando cargas el sitio podr&amp;aacute;s ver en forma de &amp;aacute;rbol el contenido. &lt;/li&gt;
&lt;li&gt;Expande la carpeta &lt;strong&gt;Lists&lt;/strong&gt; y de los elementos mostrados expandes la lista que deseas personalizar. Observa que se tienen un conjunto de archivos .aspx, selecciona &lt;strong&gt;NewForm.aspx&lt;/strong&gt; y da clic derecho, copia la p&amp;aacute;gina y ah&amp;iacute; mismo pegas con el nombre de &lt;strong&gt;NewFormEnhancements.aspx&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;2. &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1256.image_5F00_4FD9E4F5.png"&gt;&lt;img height="162" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7838.image_5F00_thumb_5F00_0B2D4AB4.png" align="left" alt="image" border="0" title="image" style="border-right-width:0px;margin:15px 35px 15px 15px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/b&gt;&lt;b&gt;Abrir la p&amp;aacute;gina y poner invisible el primer WebPart&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Das doble clic sobre &lt;strong&gt;NewFormEnhanced.aspx&lt;/strong&gt;. &lt;strong&gt;SPD&lt;/strong&gt; carga la p&amp;aacute;gina para poder ser editada. &lt;/li&gt;
&lt;li&gt;Da clic sobre el &amp;uacute;nico &lt;strong&gt;WebPart&lt;/strong&gt; en la p&amp;aacute;gina y da clic derecho para elegir la opci&amp;oacute;n de &lt;strong&gt;WebPart Properties&lt;/strong&gt;. &lt;strong&gt;WebPart Properties&lt;/strong&gt; carga el panel de propiedades correspondiente. &lt;/li&gt;
&lt;li&gt;Expande la secci&amp;oacute;n de &lt;strong&gt;Layout&lt;/strong&gt; y da clic sobre el cuadro de verificaci&amp;oacute;n &lt;strong&gt;Hidden&lt;/strong&gt;. Esto hace que en la p&amp;aacute;gina en cuesti&amp;oacute;n el &lt;strong&gt;WebPart&lt;/strong&gt; pre determinado no este visible. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;3. &lt;/b&gt;&lt;b&gt;Agregar un Custom List Form de tipo New para la lista en cuesti&amp;oacute;n&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5381.image_5F00_6EB058D3.png"&gt;&lt;img height="272" width="434" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5126.image_5F00_thumb_5F00_352D48DC.png" align="right" alt="image" border="0" title="image" style="border-right-width:0px;margin:15px 15px 15px 25px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;En el c&amp;oacute;digo Markup de la p&amp;aacute;gina en cuesti&amp;oacute;n buscamos el lugar donde se encuentra&amp;nbsp; &lt;strong&gt;&amp;lt;/WebPartPages: &lt;br /&gt;ListFormWebPart&amp;gt; &lt;br /&gt;&amp;lt;/ZoneTemplate&amp;gt; &lt;br /&gt;&amp;lt;/WebPartPages: &lt;br /&gt;WebPartZone&amp;gt;&lt;/strong&gt; y justo debajo posicionamos nuestro cursor. &lt;/li&gt;
&lt;li&gt;Seleccionamos del men&amp;uacute; &lt;strong&gt;Insert&lt;/strong&gt; la opci&amp;oacute;n &lt;strong&gt;SharePoint Controls&lt;/strong&gt; y &lt;strong&gt;Custom List Form&lt;/strong&gt;. Esto carga una ventana de dialogo que nos permite seleccionar el tipo de &lt;strong&gt;WebPart&lt;/strong&gt; que deseamos insertar sobre nuestra p&amp;aacute;gina personalizada. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6708.image_5F00_4DBCE62C.png"&gt;&lt;img height="230" width="240" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2117.image_5F00_thumb_5F00_292B58A8.png" align="left" alt="image" border="0" title="image" style="border-right-width:0px;margin:15px 35px 15px 15px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; Configuramos el tipo de forma de captura que ser&amp;aacute; aprovisionado por esta ventana de dialogo. B&amp;aacute;sicamente elegimos la lista de la cual necesitamos una instancia del formulario de captura y muy importante es el tipo de formulario de captura que requerimos como la forma de nuevo elemento, forma de modificaci&amp;oacute;n de un elemento o forma de visualizaci&amp;oacute;n de un elemento. Elegimos &lt;strong&gt;New Item form&lt;/strong&gt;, damos clic en Ok y esto genera una nueva instancia de la forma de captura para nuevos elementos de la lista que elegimos. Esta forma de captura es aprovisionada en c&amp;oacute;digo Markup de tipo &lt;strong&gt;WebPartPages:DataFormWebPart&lt;/strong&gt; el cual expone los fields que el formulario tiene y el layout HTML donde estos fields son ubicados en la forma, esto nos da grandes posibilidades de personalizaci&amp;oacute;n visual. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;4. &lt;/b&gt;&lt;b&gt;Agregar validadores a field donde requerimos la funcionalidad&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6562.image_5F00_68890C38.png"&gt;&lt;img height="291" width="468" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2451.image_5F00_thumb_5F00_2ED64C81.png" align="right" alt="image" border="0" title="image" style="border-right-width:0px;margin:15px 15px 25px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; Buscamos el field de tipo fecha que deseamos validar. &lt;/li&gt;
&lt;li&gt;Nos aseguramos de modificar el tipo de control que se tiene configurado. Simplemente seleccionamos el control en cuesti&amp;oacute;n y damos clic derecho sobre &amp;eacute;l, elegimos la opci&amp;oacute;n de &lt;strong&gt;Show common control task&lt;/strong&gt; cargando con ello una secci&amp;oacute;n donde podemos elegir el tipo de control. Como podemos ver seguramente tenemos la opci&amp;oacute;n de&lt;strong&gt; Form Field&lt;/strong&gt; como &lt;strong&gt;Format As&lt;/strong&gt;, damos clic sobre el cuadro de selecci&amp;oacute;n y elegimos &lt;strong&gt;Date Picker&lt;/strong&gt;. Esto hace una especie de cambio en el control. &lt;/li&gt;
&lt;li&gt;Damos clic derecho Properties sobre el control y buscamos la propiedad &lt;strong&gt;ID&lt;/strong&gt; en mi caso fue &amp;ldquo;ff6_1&amp;rdquo;. Este ID es muy importante ya que con el podremos asociarlos a otros controles del lado servidor como TextBox, Validation Controls,. etc. Lo &amp;uacute;nico importante que se debe de contemplar es que cuando utilizamos los controles de ASP.NET o nativos de SharePoint, estos hacen referencia al control no con el &lt;strong&gt;ID&lt;/strong&gt; como tal, sino con el siguiente patr&amp;oacute;n &amp;ldquo;&lt;strong&gt;ID$IDTipoDeDato&lt;/strong&gt;&amp;rdquo; en otras palabras &lt;strong&gt;&amp;ldquo;ff6_1$ ff6_1Date&lt;/strong&gt;&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;Dentro del c&amp;oacute;digo Markup buscamos la terminaci&amp;oacute;n de la declaraci&amp;oacute;n del control Date Picker &lt;strong&gt;&amp;ldquo;&amp;lt;/SharePoint:DateTimeControl&lt;/strong&gt;&amp;gt;&amp;rdquo; y justo abajo pegamos el siguiente c&amp;oacute;digo: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;&amp;lt;SharePoint:InputFormCustomValidator &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;ClientValidationFunction=&amp;quot;IsValidDate&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;ID=&amp;quot;custvDueDate&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;runat=&amp;quot;server&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;Display=&amp;quot;Dynamic&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;SetFocusOnError=&amp;quot;false&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;ControlToValidate=&amp;quot;ff6_1$ff6_1Date&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;BreakBefore=&amp;quot;true&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;BreakAfter=&amp;quot;false&amp;quot; &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;ErrorMessage=&amp;quot;Date must be grater than today&amp;quot; /&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Como se puede observar, tenemos controles del lado servidor espec&amp;iacute;ficos de SharePoint. Estos controles heredan de los controles de validaci&amp;oacute;n de ASP.NET y agregan otro comportamiento adicional muy similar a los de ASP.NET pero especial para SharePoint. Mediante las directivas pre definidas en la p&amp;aacute;gina podemos acceder a ellos.&amp;nbsp; &lt;a href="http://karinebosch.wordpress.com/"&gt;Karine Bosch&lt;/a&gt; explica &lt;a href="http://karinebosch.wordpress.com/sharepoint-controls/sharepoint-validation-controls/"&gt;aqu&amp;iacute; &lt;/a&gt;cada uno de estos controles y lo hace muy bien. Favor de ver este post antes de continuar.&lt;/p&gt;
&lt;p&gt;En el caso de &lt;strong&gt;InputFormCustomValidator &lt;/strong&gt;lo estamos usando para realizar una validaci&amp;oacute;n sobre el field Due Date. Recuerda que la regla es NO permitir la captura de fechas mayores o iguales al dia de hoy. El control de validaci&amp;oacute;n custom &lt;strong&gt;InputFormCustomValidator&lt;/strong&gt;&amp;nbsp; nos permite asignar c&amp;oacute;digo compilado .NET para realizar la validaci&amp;oacute;n en cuesti&amp;oacute;n, solo que bajo el contexto de ejecuci&amp;oacute;n de SharePoint se requerir&amp;iacute;a hacer algunas modificaciones en el web.config para permitir la compilaci&amp;oacute;n de la p&amp;aacute;gina, sin embargo, este control nos permite hacer lo mismo utilizando c&amp;oacute;digo del lado del cliente. Y justo ese es el escenario que pienso compartir aqu&amp;iacute;. &lt;/p&gt;
&lt;p&gt;B&amp;aacute;sicamente estamos confiando en realizar la validaci&amp;oacute;n desde el navegador de internet utilizando Javascript. Como ven, la propiedad &lt;strong&gt;ClientValidationFunction &lt;/strong&gt;apunta a una funci&amp;oacute;n Javascript &amp;ldquo;&lt;strong&gt;IsValidDate&lt;/strong&gt;&amp;rdquo; encargada de realizar la validaci&amp;oacute;n personalizada y este c&amp;oacute;digo javascript deber&amp;aacute; de estar referenciado o registrado en la p&amp;aacute;gina en cuesti&amp;oacute;n y lo hacemos agregandolo dentro de un Content Place Holder especial. Cuando el usuario capture una fecha sobre el control, este dispara el uso de la funci&amp;oacute;n javascript para validar la informaci&amp;oacute;n capturada, la funcion javascript recibe en sus argumentos el source y args, en otras palabras el objeto que lo dispara y algunos argumentos del objeto como el valor que contiene. Cuando args.IsValid es igual a true significa que la validacion es correcta y por lo tanto hace que el control &lt;strong&gt;InputFormCustomValidator&lt;/strong&gt; no muestre el mensaje de error. Cuando es false, hace lo contrario.&lt;/p&gt;
&lt;p&gt;Este c&amp;oacute;digo javascipt lo podemos agregar justo al inicio de la p&amp;aacute;gina despu&amp;eacute;s de la declaraci&amp;oacute;n de las directivas:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;&amp;lt;asp:Content ContentPlaceHolderId=&amp;quot;PlaceHolderAdditionalPageHead&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;function IsValidDate(source, args)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;var today = new Date(new Date().setHours(0,0,0,0));&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;var arrayDate = args.Value.split(&amp;quot;/&amp;quot;);&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;var controlDate = new Date(arrayDate[2], arrayDate[0]-1, arrayDate[1]);&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;args.IsValid =( today&amp;lt;controlDate);&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;&amp;lt;/script&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#804040;font-size:xx-small;"&gt;&lt;strong&gt;&amp;lt;/asp:Content&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Como podemos ver utilizamos un Content Place Holder que no propiamente estaba declarado dentro de la p&amp;aacute;gina y adentro agregamos el javascript de la funci&amp;oacute;n &lt;strong&gt;IsValidDate&lt;/strong&gt; el cual recibe como argumento el dato que se desea validar. Con funcionalidad javascript se generan variables de tipo date para gestionar la comparaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;El resultado:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4848.image_5F00_4A0EA582.png"&gt;&lt;img height="64" width="460" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1222.image_5F00_thumb_5F00_6DC7CD1C.png" alt="image" border="0" title="image" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;No olvides dar check in a la pagina para poder probarla. Para terminar, asegurate de especificar en las propiedades de la lista en cuestion tu nueva pagina como la pagina principal para agregar elementos en la lista. Con esto cuando un usuario de clic en New dentro de la lista, SharePoint carge la nueva pagina personalizada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En &lt;strong&gt;SPD&lt;/strong&gt;, das clic derecho sobre la lista en cuestion. &lt;/li&gt;
&lt;li&gt;Seleccionas &lt;strong&gt;Properties&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Seleccionas la pesta&amp;ntilde;a &lt;strong&gt;Supporting Files &lt;/strong&gt;y en &lt;strong&gt;new item from&lt;/strong&gt; buscas la nueva pagina creada. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0121.image_5F00_3B63F99D.png"&gt;&lt;img height="453" width="669" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0243.image_5F00_thumb_5F00_6AD26869.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Credito a Hector Mata por el codigo javascript, gracias!&lt;/p&gt;
&lt;p&gt;Originalmente publicado en msmvps.com&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=196159" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Staff/default.aspx">Staff</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer/default.aspx">SharePoint Designer</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/XSLT/default.aspx">XSLT</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/XPath/default.aspx">XPath</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Designer+2007/default.aspx">SharePoint Designer 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Windows+SharePoint+Services/default.aspx">Windows SharePoint Services</category></item></channel></rss>