<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">Chalalo Land</title><subtitle type="html">Tecnologías ASP.NET y un poco Más</subtitle><id>http://geeks.ms/blogs/gperez/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.ms/blogs/gperez/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.ms/blogs/gperez/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2010-01-13T18:25:00Z</updated><entry><title>[Link] Cross Domain Ajax Request con YQL y JQuery , Muy Bueno!!! (Obligatorio para los Web Developer, jejje)</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/18/link-cross-domain-ajax-request-con-yql-y-jquery-muy-bueno-obligatorio-para-los-web-developer-jejje.aspx" /><id>/blogs/gperez/archive/2010/03/18/link-cross-domain-ajax-request-con-yql-y-jquery-muy-bueno-obligatorio-para-los-web-developer-jejje.aspx</id><published>2010-03-18T20:39:00Z</published><updated>2010-03-18T20:39:00Z</updated><content type="html">&lt;p&gt;Se que estoy exagerando, pero es que encontré muy bueno este video, muy explicativo utilizando&amp;#160; &lt;a href="http://developer.yahoo.com/yql/"&gt;Yahoo Query Language&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Prueden probar la consola siguiendo el link    &lt;br /&gt;&lt;a title="http://developer.yahoo.com/yql/console/" href="http://developer.yahoo.com/yql/console/"&gt;http://developer.yahoo.com/yql/console/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_358F02E3.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://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5BC1366E.png" width="532" height="183" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Como saben muchas veces queremos desde Javascript hacer un load de un recurso (sea html, imagen,etc) de´una página fuera de nuestro dominio, con lo que javascript nos da un bonito “Accedo Denegado”, bueno, esta es una excelente solución para este problema, sin más preámbulos, el video!:&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vTCgJo4phso&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vTCgJo4phso&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Fuente Original del articulo, en donde puedes descargar los fuentes y ver más explicación:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/" href="http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/"&gt;http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Saludos!    &lt;br /&gt;Gonzalo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170635" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="jquery" scheme="http://geeks.ms/blogs/gperez/archive/tags/jquery/default.aspx" /><category term="javascript" scheme="http://geeks.ms/blogs/gperez/archive/tags/javascript/default.aspx" /><category term="[Link]" scheme="http://geeks.ms/blogs/gperez/archive/tags/_5B00_Link_5D00_/default.aspx" /></entry><entry><title>[ScreenCast] ASP.NET 4.0 - ClientIDMode</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-clientidmode.aspx" /><id>/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-clientidmode.aspx</id><published>2010-03-14T22:41:02Z</published><updated>2010-03-14T22:41:02Z</updated><content type="html">&lt;p&gt;Serie de ScreenCast de ASP.NET 4.0,ahora ClientID.    &lt;br /&gt;Te dejo el Código por si lo quieres:     &lt;br /&gt;&lt;a href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/charlaUOC.zip"&gt;&lt;strong&gt;Descargar Código&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fFj6xyY1Xpw&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fFj6xyY1Xpw&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Espero que te sea útil.   &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170308" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="ScreenCast" scheme="http://geeks.ms/blogs/gperez/archive/tags/ScreenCast/default.aspx" /></entry><entry><title>[ScreenCast] ASP.NET 4.0 - ViewStateMode</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-viewstatemode.aspx" /><id>/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-viewstatemode.aspx</id><published>2010-03-14T21:34:20Z</published><updated>2010-03-14T21:34:20Z</updated><content type="html">&lt;p&gt;Seguimos con la serie de ScreenCast de ASP.NET 4.0, esta ves, ASP.NET 4 ViewStateMode.    &lt;br /&gt;Te dejo el Código por si lo quieres:     &lt;br /&gt;&lt;a href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/charlaUOC.zip"&gt;Descargar Código&lt;/a&gt;&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0h0enUEud-U&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0h0enUEud-U&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Espero que te sea útil :)   &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170302" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="ScreenCast" scheme="http://geeks.ms/blogs/gperez/archive/tags/ScreenCast/default.aspx" /></entry><entry><title>[ScreenCast] ASP.NET 4.0 - Routing</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-routing.aspx" /><id>/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-routing.aspx</id><published>2010-03-14T21:25:32Z</published><updated>2010-03-14T21:25:32Z</updated><content type="html">&lt;p&gt;Seguimos con la serie de ScreenCast de ASP.NET 4.0, esta ves, ASP.NET 4 Routing.    &lt;br /&gt;Te dejo el Código por si lo quieres:     &lt;br /&gt;&lt;strong&gt;&lt;a href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/demoRouting.zip"&gt;Descárgalo aquí&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UsZcYgWMQdU&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UsZcYgWMQdU&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Espero que les sea de su agrado!   &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170301" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="ScreenCast" scheme="http://geeks.ms/blogs/gperez/archive/tags/ScreenCast/default.aspx" /></entry><entry><title>[ScreenCast] ASP.NET 4.0 - RedirectPermanent</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-redirectpermanent.aspx" /><id>/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-redirectpermanent.aspx</id><published>2010-03-14T21:18:51Z</published><updated>2010-03-14T21:18:51Z</updated><content type="html">&lt;p align="justify"&gt;Lo tenia prometido, una serie de ScreenCast sobre ASP.NET 4, de los temas que vimos en el WebCast para UOC, sobre algunas nuevas características.&lt;/p&gt;  &lt;p&gt;Sin aburrir más, Acá esta el Primero, RedirectPermanent.&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IDpJ7olGBTs&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/IDpJ7olGBTs&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Saludos!   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170300" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="ScreenCast" scheme="http://geeks.ms/blogs/gperez/archive/tags/ScreenCast/default.aspx" /></entry><entry><title>[Off-Topic] SDExplorer, Excelente Cliente para SkyDrive</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/12/off-topic-sdexplorer-excelente-cliente-para-skydrive.aspx" /><id>/blogs/gperez/archive/2010/03/12/off-topic-sdexplorer-excelente-cliente-para-skydrive.aspx</id><published>2010-03-12T22:33:00Z</published><updated>2010-03-12T22:33:00Z</updated><content type="html">&lt;table width="539" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="216" valign="top"&gt;&lt;a target="_blank" href="http://skydrive.live.com/"&gt;&lt;img height="120" width="221" src="http://www.grupogeek.com/wp-content/uploads/2008/07/windows_live_skydrive.png" border="0" style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px;" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="321" valign="top"&gt;
&lt;p align="justify"&gt;Como ya lo sabes (eso espero) &lt;a target="_blank" href="http://skydrive.live.com/"&gt;Skydrive&lt;/a&gt; nos permite respaldar y compartir nuestros archivos en la nube, este es un servicio dentro de la gama Live de Microsoft, personalmente lo utilizo bastante, de hecho todos los archivos demos de mis art&amp;iacute;culos est&amp;aacute;n alojados ah&amp;iacute;, puedo decidir si son p&amp;uacute;blicos o compartirlos solo con alguien espec&amp;iacute;fico.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;Ahora bien, siempre ingresaba a la web y sub&amp;iacute;a a los archivos, pero no es lo m&amp;aacute;s c&amp;oacute;modo, luego de probar varios clientes , me qued&amp;eacute; con:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cloudstorageexplorer.com/download.php"&gt;&lt;img height="102" width="541" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_57850A12.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Permite dejar en nuestro equipo una unidad virtual accesible de manera muy sencilla, solo inst&amp;aacute;lalo, has click en el &amp;iacute;cono, te va a pedir tu LiveID y listo, tienes acceso a Skydive como una unidad com&amp;uacute;n y corriente :)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_34942295.png"&gt;&lt;img height="143" width="542" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5981BD41.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Descarga el Cliente SkyDrive, SDExplorer 2.0: &lt;br /&gt;&lt;a href="http://www.cloudstorageexplorer.com/download.php" title="http://www.cloudstorageexplorer.com/download.php"&gt;http://www.cloudstorageexplorer.com/download.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=170136" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="[Off-Topic]" scheme="http://geeks.ms/blogs/gperez/archive/tags/_5B00_Off-Topic_5D00_/default.aspx" /></entry><entry><title>IE8 WebSlice con la ultima información de Sismos en Chile</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/07/ie8-webslice-con-la-ultima-informaci-243-n-de-sismos-en-chile.aspx" /><id>/blogs/gperez/archive/2010/03/07/ie8-webslice-con-la-ultima-informaci-243-n-de-sismos-en-chile.aspx</id><published>2010-03-07T02:49:00Z</published><updated>2010-03-07T02:49:00Z</updated><content type="html">&lt;p align="left"&gt;Espero que sea de ayuda, quizás un poco tarde (ojalá) , lo hice utilizando la data de &lt;a title="http://earthquake.usgs.gov/" href="http://earthquake.usgs.gov/"&gt;http://earthquake.usgs.gov/&lt;/a&gt; y el artículo &lt;a title="http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx" href="http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Está funcional los links sobre los cuadros que representan los sismos,los rojos son los que han pasado en la última hora.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_27508C8E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_57F36E6C.png" width="374" height="399" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Las flechas a ambos lados no funcionan (no lo he arreglado aún) esta en beta, jejeje, puedes descargarlo en:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.sitiosenprueba.com/ie/sismos.aspx" href="http://www.sitiosenprueba.com/ie/sismos.aspx"&gt;http://www.sitiosenprueba.com/ie/sismos.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Saludos!   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=169111" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="IE8" scheme="http://geeks.ms/blogs/gperez/archive/tags/IE8/default.aspx" /></entry><entry><title>[Tips] Como detectar el fin de Página con Javascript, a lo Facebook :)</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/06/tips-como-detectar-el-fin-de-p-225-gina-con-javascript-a-lo-facebook.aspx" /><id>/blogs/gperez/archive/2010/03/06/tips-como-detectar-el-fin-de-p-225-gina-con-javascript-a-lo-facebook.aspx</id><published>2010-03-06T02:19:39Z</published><updated>2010-03-06T02:19:39Z</updated><content type="html">&lt;p align="justify"&gt;Hola, este post aunque sea sencillo, tiene algo especial (por lo menos para mi, jejeje) debido a que es el primer post post-terremoto que sea articulo, agradezco mucho las palabras de apoyo.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Ahora bien, al articulo.      &lt;br /&gt;&lt;/strong&gt;Te has fijado que en Facebook, al momento de llegar al fin de la pagina, haciendo scroll, se carga nuevo contenido y así sucesivamente, entonces la pregunta, ¿Como puedo simular eso?&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Manos a la Obra      &lt;br /&gt;&lt;/strong&gt;Ya que no existe un evento onScroll, que nos podría ser de ayuda, vamos a tener que construir algo parecido y vamos a utilizar &lt;em&gt;document&lt;/em&gt;.&lt;em&gt;body&lt;/em&gt;.&lt;em&gt;scrollTop, &lt;/em&gt;que representa el numero de pixeles que el usuario se ha desplazado hacia abajo desde la parte superior de la página. El tema es que scrollToplo ocupa IE y los demás navegadores utilizan pageYOffset.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_24F0F79B.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://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_1ADC5670.png" width="240" height="236" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;La idea del ejemplo es tener una grilla y que cuando lleguemos al final , en la barra de estado se setee el texto “Fin de Pagina, ocupe la paginación de la grilla”, y en caso contrario, que indique al usuario que se puede ocupar las barras de desplazamiento. &lt;/p&gt;  &lt;p align="justify"&gt;El siguiente código utiliza la función, “inicioFuncion” como punto de partida, la que será llamada en el tag body: &lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:consolas;color:maroon;font-size:9.5pt;"&gt;body&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; &lt;span style="color:red;"&gt;onload&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InicioFuncion();&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;de tal manera que al momento de cargar la página, se ejecute, y podemos observar que esta función setea la barra de estado y luego llama con un setInterval a la función RevisarPosicion cada 300 milisegundos, esto nos dará el efecto del onScroll. La posición que voy establecer es de 260 pixeles, que es totalmente arbitrario al ejemplo (la ventana de IE la voy a modificar en tamaño para que se vea el efecto).&lt;/p&gt;  &lt;p align="justify"&gt;Es importante remarcar que para que el ejemplo funcionara bien, cambié el Doctype&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="font-family:consolas;color:maroon;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;DOCTYPE&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&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 HTML 4.0 Transitional//EN&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;strong&gt;Ahora el código BLOCKED SCRIPT&lt;/strong&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:consolas;color:maroon;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt; &lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/span&gt; &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 style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160; var&lt;/span&gt; position = 0;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;&amp;#160;&amp;#160; function&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; InicioFuncion() {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.status = &lt;span style="color:maroon;"&gt;&amp;quot;Ocupe las barras de desplazamiento para ir al final de la página&amp;quot;&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; setInterval(&lt;span style="color:maroon;"&gt;&amp;quot;RevisarPosicion()&amp;quot;&lt;/span&gt;, 300);       &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&lt;/span&gt;} &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 style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160; function&lt;/span&gt; RevisarPosicion() {       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (navigator.appName == &lt;span style="color:maroon;"&gt;&amp;quot;Microsoft Internet Explorer&amp;quot;&lt;/span&gt;) &lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;var&lt;/span&gt; position = document.body.scrollTop;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;var&lt;/span&gt; position = window.pageYOffset;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &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 style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; (position &amp;gt; 260) {      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.status = &lt;span style="color:maroon;"&gt;&amp;quot;Fin de Pagina, ocupe la paginación de la grilla&amp;quot;&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;span style="color:blue;"&gt;else&lt;/span&gt; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&lt;/span&gt;window.status = &lt;span style="color:maroon;"&gt;&amp;quot;Ocupe las barras de desplazamiento para ir al final de la página&amp;quot;&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;script&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal" align="justify"&gt;Como es de costumbre te dejo un video, quizás no se distingue mucho, pero lo puedes ver con full Screen y te vas a dar cuenta.   &lt;br /&gt;    &lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/555Ibm9D218&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x234900&amp;amp;color2=0x4e9e00"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/555Ibm9D218&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x234900&amp;amp;color2=0x4e9e00" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Espero que te sirva y ánimo!!,que recién estoy sintiendo una replica(temblor) al subir esto, ejejjeje   &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=168974" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="javascript" scheme="http://geeks.ms/blogs/gperez/archive/tags/javascript/default.aspx" /><category term="Ninja Web" scheme="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx" /></entry><entry><title>[Off-Topic]Saliendo del terremoto- Concepcion-Chile</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/03/03/off-topic-saliendo-del-terremoto-concepcion-chile.aspx" /><id>/blogs/gperez/archive/2010/03/03/off-topic-saliendo-del-terremoto-concepcion-chile.aspx</id><published>2010-03-02T23:18:00Z</published><updated>2010-03-02T23:18:00Z</updated><content type="html">&lt;p&gt;Hola! que bueno escribir, pude salir con mi esposa sin mayores lesiones del terremoto, sinceramente, pense que hasta ahi llegaba, nunca habia pasado por algo parecido&amp;nbsp;(soy de Concepci&amp;ograve;n- Chile), no puedo escribir mucho de como fue, pero Concepci&amp;oacute;n se volvio un infierno en algunas noches, lo bueno es que toda la familia esta bien, espero que todo vuelva a la normalidad, para los amigos que vieron el webcast, estaba a punto de grabarlo nuevamente, y vino el terremoto :S.&lt;/p&gt;
&lt;p&gt;Los dias siguientes al terremoto jaurias de delincuentes amenazaban las casas para saquearlas, increible, todos se volvieron monos, mucho disparo en la noche,vi gente saqueando supermercados llevandose lavadoras, plasmas, netbooks, etc. Pasamos noches en vela armados improvisadamente para resguardar a nuestras familias, bueno, eso sigue hoy por la noche.&lt;/p&gt;
&lt;p&gt;A todos los que sufrieron los problemas de este terrible terremoto, mucha fuerza!&lt;/p&gt;
&lt;p&gt;Nunca el hombre esta vencido, su derrota es siempre breve , un estimulo que mueve.... (de inti-illimani), &lt;/p&gt;
&lt;p&gt;Saludos a Pcampos tambi&amp;eacute;n supe recien que esta bien, MVP que vive en Concepci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;Tambien a la gente de Microsoft Chile, que nos enviaron v&amp;iacute;veres desde Santiago, Muchas gracias!!!!!&lt;/p&gt;
&lt;p&gt;Saludos!, nos vemos!!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=168563" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author></entry><entry><title>[Tutotorial] PasswordStrenght, indícale al usuario que tal fuerte es su password</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/23/tutotorial-passwordstrenght-ind-237-cale-al-usuario-que-tal-fuerte-es-su-password.aspx" /><id>/blogs/gperez/archive/2010/02/23/tutotorial-passwordstrenght-ind-237-cale-al-usuario-que-tal-fuerte-es-su-password.aspx</id><published>2010-02-23T19:29:44Z</published><updated>2010-02-23T19:29:44Z</updated><content type="html">&lt;table border="0" cellspacing="0" cellpadding="2" width="531"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="155"&gt;&lt;img src="http://community.tigranetworks.co.uk/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tigranetworks/6545.MCj044143600001_5F00_6EF63388.png" width="174" height="173" alt="" /&gt;&lt;/td&gt;        &lt;td valign="top" width="374"&gt;         &lt;p align="justify"&gt;El control PasswordStregth nos permite atachar a un textbox la funcionalidad de indicarle al usuario el grado de “fortaleza” de la password que está ingresando, bueno, ya saben, para indicarle que la contraseña “asdasd” o “123” no es la mejor elección (aunque sean de las más repetidas).&lt;/p&gt;          &lt;p align="justify"&gt;El mensaje al usuario puede ser en forma de texto o una barra de progreso, la posición también se la podemos indicar declarativamente, esta mensaje aparece mientras el usuario va escribiendo su password y desaparece cuando se pierde el foco del textbox en donde está escribiendo.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="justify"&gt;El mensaje al usuario puede ser en forma de texto o una barra de progreso, la posición también se la podemos indicar declarativamente, esta mensaje aparece mientras el usuario va escribiendo su password y desaparece cuando se pierde el foco del textbox en donde está escribiendo&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Las propiedades mas importantes que tenemos que tener en cuenta:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;TargetControlID&lt;/strong&gt; : Es el ID del TextBox al que vamos a atachar el control&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;DisplayPosition&lt;/strong&gt;: La posición en donde va a quedar el control respecto al textbox, &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;StrengthIndicatorType&lt;/strong&gt;: El t.ipo de indicador de “fortaleza” (Texto o Indicador como Barra)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;PreferredPasswordLength&lt;/strong&gt;: El largo preferido de la password&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;PrefixText&lt;/strong&gt;: El texto que va antes de la descripción cuando StrengthIndicatorType= Text , por ejemplo : “Complejidad:”&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MinimumNumericCharacters&lt;/strong&gt;: La cantidad mínima de caracteres numéricos en la Password&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MinimumSymbolCharacters&lt;/strong&gt;: La cantidad mínima de caracteres símbolos (% $*)&lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;RequiresUpperAndLowerCaseCharacters&lt;/strong&gt;: Especifica la password debe contener mayúsculas y minúsculas.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MinimumUpperCaseCharacters&lt;/strong&gt;: Solo tiene efecto si RequiresUpperAndLowerCaseCharacters esta activado, y especifica la cantidad &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;TextStrengthDescriptions : &lt;/strong&gt;Lista de valores que corresponden a las descripciones de la complejidad de la password ,separamos por punto y coma, siempre y cuando esté seteado StrengthIndicatorType=Text, el mínimo de valores es dos y el máximo es 10, se ordena de menor a mayor complejidad.        &lt;br /&gt; Ej:&amp;quot;Muy Simple;Simple;Aceptable;Fuerte;Excelente!&amp;quot;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;TextStrengthDescriptionStyles: &lt;/strong&gt;Sirve para seatear los estilos de cada valor de la lista de indicadores de TextStrengthDescriptions, e igualmente es una lista separada por punta y coma&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;&lt;strong&gt;CalculationWeightings: &lt;/strong&gt;Lista separada por puntos y coma, de valores numéricos utilizados para determinar la ponderación de las características que hacen más fuerte la password. Deben existir 4 valores especificados, y la suma de estos valores debe ser 100. La ponderación predeterminada es 50;15;15;20. Esto corresponde a que el criterio de longitud de la contraseña corresponde a un 50% del calculo, el criterio numérico corresponde a un 15% del calculo, el criterio sobre mayúsculas y minúsculas&amp;#160; al 15% del calculo, el criterio de caracteres símbolos a un 20% del calculo ,por lo que es el formato &amp;#39;A; B; C; D&amp;#39; donde A = ponderación largo password, B = ponderación de caracteres numéricos, C = ponderación de mayúsculas y minúsculas, D = ponderación de caracteres&amp;#160; símbolo.&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;El ejemplo, de una vez por todas!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1) Primero que nada (o antes que todo) vamos a tener un formulario con el clásico “Ingrese su Password”&amp;#160; , el textbox, y agregamos el control presionando&lt;em&gt; Add Extender…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image15_5F00_45395B1F.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://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image15_5F00_thumb_5F00_5348244F.png" width="465" height="152" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;2) Luego seleccionamos PasswordStrength (obvio no?) &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_584A61FE.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://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5D4C9FAD.png" width="467" height="114" /&gt;&lt;/a&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;3) Configuramos las opciones, es mucho más cómodo por código declarativo, según mi opinión.&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;cc1&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PasswordStrength&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;tx_pass_PasswordStrength&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;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;TargetControlID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;tx_pass&amp;quot;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:red;"&gt;DisplayPosition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RightSide&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;StrengthIndicatorType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Text&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;PreferredPasswordLength&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;10&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;PrefixText&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Complejidad:&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;TextCssClass&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;TextIndicator_TextBox1&amp;quot;&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;MinimumNumericCharacters&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;MinimumSymbolCharacters&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-no-proof:yes;"&gt;RequiresUpperAndLowerCaseCharacters&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;TextStrengthDescriptions&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Muy Simple;Simple;Bien;Fuerte;Excelente&amp;quot;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:red;"&gt;TextStrengthDescriptionStyles&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MuySimple;Simple;Bien;Fuerte;Excelente&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;CalculationWeightings&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;50;15;15;20&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Como se ve, existen CSS Asociados cada una de las descripciones, los cuales son:    &lt;br /&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;style&lt;/span&gt; &lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;text/css&amp;quot;&amp;gt;        &lt;br /&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:#a31515;"&gt;.MuySimple&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:red;"&gt;color&lt;/span&gt;: &lt;span style="color:blue;"&gt;#FF0000&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:#a31515;"&gt;&amp;#160; .Simple&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:red;"&gt;color&lt;/span&gt;: &lt;span style="color:blue;"&gt;#FF6600&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:#a31515;"&gt;&amp;#160; .Bien&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:red;"&gt;color&lt;/span&gt;: &lt;span style="color:blue;"&gt;#FFCC66&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:#a31515;"&gt;&amp;#160; .Fuerte&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:red;"&gt;color&lt;/span&gt;: &lt;span style="color:blue;"&gt;#66CCFF&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:#a31515;"&gt;&amp;#160; .Excelente&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:red;"&gt;color&lt;/span&gt;: &lt;span style="color:blue;"&gt;#00CC99&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;style&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Ahora a probarlo, ya que esta todo ok, Te dejo un video de como funciona, el código lo puedes &lt;strong&gt;&lt;a href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/Password.zip" target="_blank"&gt;descargar aquí&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;El video:&lt;/strong&gt;&lt;/p&gt; &lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6EJJ034W3vw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6EJJ034W3vw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Como siempre, espero que te sirva este artículo, nos vemos!    &lt;br /&gt;Gonzalo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167999" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="Ajax Control Toolkit" scheme="http://geeks.ms/blogs/gperez/archive/tags/Ajax+Control+Toolkit/default.aspx" /><category term="Tutorial" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tutorial/default.aspx" /></entry><entry><title>[Noticia] Ajax Minifier 4.0 Release, y con soporte de minificar los CSS! :)</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/16/noticia-ajax-minifier-4-0-release-y-con-soporte-de-minificar-los-css.aspx" /><id>/blogs/gperez/archive/2010/02/16/noticia-ajax-minifier-4-0-release-y-con-soporte-de-minificar-los-css.aspx</id><published>2010-02-16T19:42:00Z</published><updated>2010-02-16T19:42:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://aspnet.codeplex.com/"&gt;&lt;img src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aspnet&amp;amp;DownloadId=47571&amp;amp;Build=16271" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hace un tiempo escrib&amp;iacute; el art&amp;iacute;culo: &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx" title="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx&lt;/a&gt; &amp;lt;-que buen art&amp;iacute;culo! jejeje&lt;/p&gt;
&lt;p align="justify"&gt;En donde ense&amp;ntilde;aba a minificar los archivos JS a partir de la herramienta Microsoft Ajax Minifier, la buena noticia es que ahora, est&amp;aacute; el Release 4.0 &lt;strong&gt;y que trae como novedad el soporte para la&amp;nbsp; minificaci&amp;oacute;n de nuestros CSS.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La Minificaci&amp;oacute;n por Defecto de CSS Permite:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remover todos los espacios en blanco que no son relevantes&lt;/li&gt;
&lt;li&gt;Remover todos los comentarios&lt;/li&gt;
&lt;li&gt;Remover los punto y comas innecesarios&lt;/li&gt;
&lt;li&gt;Reducir el c&amp;oacute;digo de color (por un equivalente,obvio)&lt;/li&gt;
&lt;li&gt;Reducir representaciones de enteros, eliminando los ceros iniciales y finales.&lt;/li&gt;
&lt;li&gt;Remover los especificadores de unidad que tienen valor Cero&lt;/li&gt;
&lt;li&gt;Utilizar nombres de colores&amp;nbsp; basados estrictamente en&amp;nbsp; W3C para reducir a&amp;uacute;n m&amp;aacute;s el c&amp;oacute;digo resultante&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y donde puedes conseguir esta herramienta: &lt;br /&gt;&lt;strong&gt;Descarga: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://aspnet.codeplex.com/releases/view/40584" title="http://aspnet.codeplex.com/releases/view/40584"&gt;http://aspnet.codeplex.com/releases/view/40584&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Introducci&amp;oacute;n: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx" title="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentaci&amp;oacute;n completa: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx" title="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx"&gt;http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espero que te sea de utilidad, esta muy bueno! &lt;br /&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167530" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx" /><category term="Ninja Web" scheme="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx" /><category term="Optimizaci&amp;#243;n" scheme="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx" /><category term="Noticia" scheme="http://geeks.ms/blogs/gperez/archive/tags/Noticia/default.aspx" /></entry><entry><title>ASP.NET 4.0 El nuevo RedirectPermanent, otra mejora para los SEO</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/12/asp-net-4-0-el-nuevo-redirectpermanent-otra-mejora-para-los-seo.aspx" /><id>/blogs/gperez/archive/2010/02/12/asp-net-4-0-el-nuevo-redirectpermanent-otra-mejora-para-los-seo.aspx</id><published>2010-02-12T14:12:00Z</published><updated>2010-02-12T14:12:00Z</updated><content type="html">&lt;p align="justify"&gt;Para comenzar a hablar sobre este nuevo m&amp;eacute;todo de la Clase response, tenemos que hablar sobre como funciona el cl&amp;aacute;sico Responde.Redirect.Cuando utilizamos Response.redirect se indica a nuestro server que haga una &lt;strong&gt;redirecci&amp;oacute;n temporal&lt;/strong&gt; a la nueva URL (genera una respuesta HTTP 302) esto no tiene incidencia para el usuario que navega nuestra p&amp;aacute;gina, pero los motores de b&amp;uacute;squeda asumen que solo es un cambio de URL temporal y no actualizaran sus &amp;iacute;ndices.Existe con ASP.NET 4.0 el m&amp;eacute;todo &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent(VS.100).aspx"&gt;Redirectpermanent&lt;/a&gt; que nos va a generar una respuesta HTTP 301, (redirecci&amp;oacute;n permanente) que le indica a los SEO que es la nueva URL a indexar.&lt;br /&gt;Pero veamos un ejemplo pr&amp;aacute;ctico, vamos a tener una aplicaci&amp;oacute;n que utilice los dos m&amp;eacute;todos (redirect y redirectPermanent) y vamos a ver con Firebug es el resultado de la ejecuci&amp;oacute;n de ambos.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_3AE583C3.png"&gt;&lt;img height="352" width="536" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_7F457502.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;y el c&amp;oacute;digo&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt;) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; Button1.Click &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Redirect(&lt;span style="color:#a31515;"&gt;&amp;quot;destino.aspx&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Button2_Click(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt;) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; Button2.Click &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.RedirectPermanent(&lt;span style="color:#a31515;"&gt;&amp;quot;destino.aspx&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Todo listo , entonces &amp;hellip; &lt;br /&gt;Presionando el Primer Bot&amp;oacute;n (HTTP 302) , con response.redirect:&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_6FC26333.png"&gt;&lt;img height="442" width="535" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5581FA0F.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Presionando el Segundo Bot&amp;oacute;n (HTTP 301) , con response.redirectPermanent:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_4CB1F1C3.png"&gt;&lt;img height="446" width="532" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_605EDB57.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Esto es mucho &amp;ldquo;mejor recibido&amp;rdquo; por los SEO de los motores de b&amp;uacute;squeda como Bing o Google, entonces para tener en cuenta esta mejora :).&lt;/p&gt;
&lt;p&gt;El Maestro &lt;strong&gt;Ibon Landa&lt;/strong&gt; tambi&amp;eacute;n escribi&amp;oacute; sobre esto en su blog: &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx" title="http://geeks.ms/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx"&gt;http://geeks.ms/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tambi&amp;eacute;n&lt;strong&gt; Eduard Tomas&lt;/strong&gt; escribi&amp;oacute; sobre esto enfocado a MVC: &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/etomas/archive/2010/02/10/asp-net-mvc-redirecciones-permanentes.aspx" title="http://geeks.ms/blogs/etomas/archive/2010/02/10/asp-net-mvc-redirecciones-permanentes.aspx"&gt;http://geeks.ms/blogs/etomas/archive/2010/02/10/asp-net-mvc-redirecciones-permanentes.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y un completo articulo sobre las diferencias de ambos m&amp;eacute;todos HTTP en: &lt;br /&gt;&lt;a href="http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/" title="http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/"&gt;http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espero que te sirva :) &lt;br /&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167247" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx" /><category term="Visual Studio 2010" scheme="http://geeks.ms/blogs/gperez/archive/tags/Visual+Studio+2010/default.aspx" /><category term="Optimizaci&amp;#243;n" scheme="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx" /></entry><entry><title>[Tips] Medidor de ViewState, mi (in)utilidad gratuita</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/11/tips-medidor-de-viewstate-mi-in-utilidad-gratuita.aspx" /><id>/blogs/gperez/archive/2010/02/11/tips-medidor-de-viewstate-mi-in-utilidad-gratuita.aspx</id><published>2010-02-11T22:07:00Z</published><updated>2010-02-11T22:07:00Z</updated><content type="html">&lt;p align="justify"&gt;Bueno, me preguntaron que podr&amp;iacute;a hacer uno con el ejemplo del articulo anterior &lt;a href="http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx" title="http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx&lt;/a&gt; , entonces se me ocurri&amp;oacute; hacer r&amp;aacute;pidamente un Medidor de ViewState, que muestre el tama&amp;ntilde;o del mismo y la relaci&amp;oacute;n, en peso, con el total de la pagina.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_05C82470.png"&gt;&lt;img height="369" width="387" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5C24336F.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Hay muy poco c&amp;oacute;digo pero lo que quiero mostrar es la facilidad para ocupar gr&amp;aacute;ficos en nuestras p&amp;aacute;ginas ASP.NET. &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;Visual Studio 2010 RC1&lt;/a&gt;, que ya esta disponible, incluye dentro de la suite de controles al componente Chart. Simplemente es arrastrar a nuestro formulario y usar.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_4032FE77.png"&gt;&lt;img height="89" width="200" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_6A32FC9F.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C&amp;oacute;digo del Bot&amp;oacute;n [Ver]&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt;) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; Button1.Click
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; Resultado &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; MyWebClient &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;WebClient &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ArregloBytes() &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Byte &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; total &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Double &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; vs &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Double &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oUTF8 &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;UTF8Encoding &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;ArregloBytes = MyWebClient.DownloadData(tx_url.Text) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Try &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp; Resultado = oUTF8.GetString(ArregloBytes) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp; If&lt;/span&gt; Resultado.Contains(&lt;span style="color:#a31515;"&gt;&amp;quot;__VIEWSTATE&amp;quot;&lt;/span&gt;) &lt;span style="color:blue;"&gt;Then &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt; inicio &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Integer&lt;/span&gt; = Resultado.IndexOf(&lt;span style="color:#a31515;"&gt;&amp;quot;id=&amp;quot;&amp;quot;__VIEWSTATE&amp;quot;&amp;quot; value=&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; subresultado = Resultado.Remove(0, inicio + 24) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; total = ArregloBytes.Length &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vs = subresultado.Substring(0, subresultado.IndexOf(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;)).Length &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lb_total.Text = Format(total / 1000, &lt;span style="color:#a31515;"&gt;&amp;quot;##,##0.00&amp;quot;&lt;/span&gt;) &amp;amp; &lt;span style="color:#a31515;"&gt;&amp;quot; KB&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;lb_viewstate.Text = Format(vs / 1000, &lt;span style="color:#a31515;"&gt;&amp;quot;##,##0.00&amp;quot;&lt;/span&gt;) &amp;amp; &lt;span style="color:#a31515;"&gt;&amp;quot;KB&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;&amp;#39;Armar gr&amp;aacute;fico &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt; yValues &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Double&lt;/span&gt;() = {total, vs} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/span&gt; xValues &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt;() = {&lt;span style="color:#a31515;"&gt;&amp;quot;Total&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;ViewState&amp;quot;&lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Grafico.Series(0).Points.DataBindXY(xValues, yValues) &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp; Else &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lb_mensaje.Text = &lt;span style="color:#a31515;"&gt;&amp;quot;No se encuentra ViewState&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;color:blue;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp; End&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt; &lt;span style="color:blue;"&gt;If &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Exception &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lb_mensaje.Text = &lt;span style="color:#a31515;"&gt;&amp;quot;Error&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Try &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; &lt;span style="color:blue;"&gt;Sub
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Como vez, son solo 3 l&amp;iacute;neas para armar el gr&amp;aacute;fico, la definici&amp;oacute;n de X e Y y agregar a la serie los puntos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pru&amp;eacute;balo tu mismo, lo hice con &lt;/strong&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;&lt;strong&gt;Visual Studio 2010 RC1&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, y el c&amp;oacute;digo lo puedes &lt;/strong&gt;&lt;a target="_blank" href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/Ver^_ViewState.zip"&gt;&lt;strong&gt;descargar ac&amp;aacute;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167207" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /></entry><entry><title>[Off-Topic] Visual Studio 2010 RC se ajusta a la performance de tu PC</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/11/off-topic-visual-studio-2010-rc-se-ajusta-a-la-performance-de-tu-pc.aspx" /><id>/blogs/gperez/archive/2010/02/11/off-topic-visual-studio-2010-rc-se-ajusta-a-la-performance-de-tu-pc.aspx</id><published>2010-02-11T03:58:02Z</published><updated>2010-02-11T03:58:02Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_553043AF.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_01A94DC9.png" width="535" height="340" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Fíjate en la opción Visual Experience, Visual Studio utiliza la aceleración por Hw para acelerar el renderizado, Por eso lo noté mucho más rápido!, Notable!&lt;/p&gt;  &lt;p&gt;Saludos,   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167143" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="[Off-Topic]" scheme="http://geeks.ms/blogs/gperez/archive/tags/_5B00_Off-Topic_5D00_/default.aspx" /></entry><entry><title>[Tips] &amp; en Key de Web.Config</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/09/tips-amp-en-key-de-web-config.aspx" /><id>/blogs/gperez/archive/2010/02/09/tips-amp-en-key-de-web-config.aspx</id><published>2010-02-09T02:12:08Z</published><updated>2010-02-09T02:12:08Z</updated><content type="html">&lt;p&gt;En la seguidilla de tips para los que se van iniciando y de repente tienen se les presenta un problema, el tener un símbolo en el value de un key del appSettings. Ya que si tienes:   &lt;br /&gt;    &lt;br /&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;add&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-no-proof:yes;"&gt;key&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;=&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;miclave&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;uno&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;amp;dos&amp;amp;tres&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;       &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Es incorrecto y arroja un error en tiempo de compilación, entonces a lo que hay que reemplazar es:    &lt;br /&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;add&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-no-proof:yes;"&gt;key&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;=&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;miclave&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;uno&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;amp;amp;&lt;/span&gt;&lt;span style="color:blue;"&gt;dos&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;amp;amp;&lt;/span&gt;&lt;span style="color:blue;"&gt;tres&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Es decir, &amp;amp; por &amp;amp;amp; &amp;lt;- Fácil verdad?&lt;/strong&gt;    &lt;br /&gt;Bueno, espero que esto les pueda ser de utilidad :)    &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166961" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /></entry><entry><title>[Tips] Como leer el HTML de una Pagina desde ASP.NET</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx" /><id>/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx</id><published>2010-02-09T02:05:42Z</published><updated>2010-02-09T02:05:42Z</updated><content type="html">&lt;table border="0" cellspacing="0" cellpadding="2" width="534"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="137"&gt;&lt;img src="http://www.profissionaisti.com.br/wp-content/uploads/2009/04/programador_feliz.jpg" width="132" height="135" alt="" /&gt;&lt;/td&gt;        &lt;td valign="top" width="395"&gt;         &lt;p align="justify"&gt;Pregunta repetida, por lo tanto amerita post, acá te dejo el código y la explicación.           &lt;br /&gt;            &lt;br /&gt;Para esto vamos a utilizar la clase &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx" target="_blank"&gt;WebClient&lt;/a&gt; de System.NET que nos provee métodos para enviar y recibir datos desde un recurso identificado mediante el URI. Luego a descargar los datos y dejarlos en un arreglo de Bytes para luego obtener el texto HTML encodeado. Por último este código HTML lo asignamos aun TextBox Multiline para ver el resultado. &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt; El código necesario es simplemente:  &lt;p align="justify"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; MyWebClient &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; WebClient      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ArregloBytes() &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Byte       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;ArregloBytes = MyWebClient.DownloadData(&lt;span style="color:#a31515;"&gt;&lt;a href="http://www.bing.com/"&gt;http://www.bing.com/&lt;/a&gt;&lt;/span&gt;)      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oUTF8 &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; UTF8Encoding      &lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;resultado.Text = oUTF8.GetString(ArregloBytes)&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_38BA0041.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5356768D.png" width="534" height="382" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Posteriormente puedes buscar cadenas de texto, en el caso que necesites “replicar” algunas cosillas, ejejeje.&lt;/p&gt;  &lt;p&gt;Saludos!   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166959" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /></entry><entry><title>[Tips] Multiples DataKeyName en una Grilla (o cuando la tabla tiene una clave compuesta)</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/02/05/tips-multiples-datakeyname-en-una-grilla-o-cuando-la-tabla-tiene-una-clave-compuesta.aspx" /><id>/blogs/gperez/archive/2010/02/05/tips-multiples-datakeyname-en-una-grilla-o-cuando-la-tabla-tiene-una-clave-compuesta.aspx</id><published>2010-02-05T12:09:06Z</published><updated>2010-02-05T12:09:06Z</updated><content type="html">&lt;p align="justify"&gt;Hola que tal?, ya que me han formulado esta pregunta varias veces, quiero dejarla como tips, no es que no me gusta que me pregunten, pero de este modo, la info está accesible más rápidamente.&lt;/p&gt;  &lt;p align="justify"&gt;El gridview que conocemos , es un control que es muy potente, obviamente podemos potenciarlo más y algunas empresas como Telerik tienen su propia implementación mucho más potente. Una de las características más importantes es su facilidad de uso y de configuración en escenarios “Cero Código”&amp;#160; para agregar comportamientos de Eliminacion, Modificación&amp;#160; y selección. Esto es bastante sencillo cuando se tiene que la grilla está mostrando datos de una tabla que tiene una clave principal que no es compuesta, como por ejemplo un ID Correlativo, pero algunas veces, tenemos que la grilla tiene una clave principal compuesta, este escenario es totalmente soportado por nuestra grilla.&lt;/p&gt;  &lt;p align="justify"&gt;Una de las propiedades de la grilla, necesario para poder agregar declarativamente los comportamientos es el DataKeyName, que representa el campo clave de la grilla. Ahora bien, si tenemos una clave compuesta el DataKeyName sería algo así:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;DataKeyNames&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;=&amp;quot;ID1,ID2&amp;quot;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;" lang="EN-US"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Hasta el momento todo bien, ahora, si tenemos otro control Gridview, para un maestro detalle, en el que tenemos que la selección de la primera grilla, nos muestra los detalles para la segunda grilla, (voy a utilizar un SqlDataSource), vamos a tener el SelectCommand:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;SelectCommand&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;=&amp;quot;SELECT IDDET, GLOSA_DET FROM DETALLE WHERE ID1_DET = @ID1 AND ID2_DET=@ID2&amp;quot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;y la los parámetros: (acá está lo distinto, ya que el asistente no nos permite hacer esto, tenemos que hacerlo a mano)&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SelectParameters&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &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;ControlParameter&lt;/span&gt; &lt;span style="color:red;"&gt;ControlID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;GridView1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ID1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;PropertyName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;SelectedDataKey.Values[ID1]&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Int32&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &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;ControlParameter&lt;/span&gt; &lt;span style="color:red;"&gt;ControlID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;GridView1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ID2&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;PropertyName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;SelectedDataKey.Values[ID2]&amp;quot;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;Type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Int32&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;SelectParameters&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;" lang="EN-US"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Como ves, se extrae del SelectDataKey, los dos parámetros para poder hacer el select.&lt;/p&gt;  &lt;p align="justify"&gt;Ahora bien, si lo que necesitas es , por medio de código programático, obtener estos valores entonces tenemos:&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; GridView1_SelectedIndexChanged(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; GridView1.SelectedIndexChanged      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;SqlDataSource2.SelectParameters(0).DefaultValue = GridView1.DataKeys(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.GridView1.SelectedRow.RowIndex).Values(0)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;SqlDataSource2.SelectParameters(1).DefaultValue = GridView1.DataKeys(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.GridView1.SelectedRow.RowIndex).Values(1)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="justify"&gt;En donde SqlDataSource2 es el DS de la grilla detalle, y GridView1 es la grilla con los datos del Maestro.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Como vez, es bastante sencillo, espero que te sirva el Tip :)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Saludos,   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166723" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term=".NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /></entry><entry><title>Probando Microsoft SEO ToolKit- Free! :)</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/01/26/probando-microsoft-seo-toolkit-free.aspx" /><id>/blogs/gperez/archive/2010/01/26/probando-microsoft-seo-toolkit-free.aspx</id><published>2010-01-26T15:30:00Z</published><updated>2010-01-26T15:30:00Z</updated><content type="html">&lt;p align="justify"&gt;Holas,Ya hace un tiempo que el posicionamiento web ha tomado un papel muy importante , la optimizaci&amp;oacute;n de nuestras paginas para que los SEO puedan indexar m&amp;aacute;s y de mejor en manera nuestro sitio web, de manera que el usuario al momento de buscar en Google, Bing, por ejemplo. &lt;/p&gt;
&lt;p align="justify"&gt;Microsoft SEO Tookkit es una herramienta gratis, que la puedes descargar mediante WPI, se instala en el IIS y puedes hacer los an&amp;aacute;lisis de tus sitios web, puedes obtener reportes de rendimiento y del estado de optimizaci&amp;oacute;n de tu sitio en relaci&amp;oacute;n a los SEO&lt;/p&gt;
&lt;p&gt;&lt;b&gt;La idea principal de Microsoft SEO:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Aumentar el tr&amp;aacute;fico del sitio web y de Ingresos&lt;/b&gt;     &lt;br /&gt;Analizar tu sitio web y encontrar maneras de aumentar su n&amp;uacute;mero de visitas. Utilizar las recomendaciones de SEO para mejorar el tr&amp;aacute;fico y aumentar tu flujo de ingresos.     &lt;br /&gt;&lt;b&gt;     &lt;br /&gt;Influencia y actualizaci&amp;oacute;n de motores de b&amp;uacute;squeda&lt;/b&gt;     &lt;br /&gt;Controlar el acceso y la visualizaci&amp;oacute;n de su contenido en los resultados de b&amp;uacute;squeda. Mantener los motores de b&amp;uacute;squeda con la &amp;uacute;ltima informaci&amp;oacute;n de su sitio web.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Mejorar la experiencia del Usuario&lt;/b&gt;&amp;nbsp; &lt;br /&gt;Descubrir y resolver problemas comunes en el contenido de su sitio web y de dise&amp;ntilde;o para mejorar su experiencia de usuario final. Que sea f&amp;aacute;cil para sus clientes a encontrar lo que est&amp;aacute;s buscando. &lt;/p&gt;
&lt;p&gt;Visita la p&amp;aacute;gina &lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appid=seotoolkit"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_22C6DBF9.png" border="0" height="101" width="556" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.microsoft.com/web/seo/" href="http://www.microsoft.com/web/seo/"&gt;http://www.microsoft.com/web/seo/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un video Demostrativo de&amp;nbsp; como utilizarlo:&lt;/p&gt;
&lt;p&gt;
 
&lt;object height="494" width="575"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/zh-ah8Ya9QI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/zh-ah8Ya9QI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" height="494" width="575"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Como puedes ver, tienes posibilidad de examinar tu sitio de manera muy acabada, para obtener un reporte completo sobre los problemas de tu WebSite.&lt;/p&gt;
&lt;p&gt;Espero que te sirva esta herramienta :)   &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=165969" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /></entry><entry><title>Exportar Grilla a CSV – Migrado a VB.NET</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/01/15/exportar-grilla-a-cvs-migrado-a-vb-net.aspx" /><id>/blogs/gperez/archive/2010/01/15/exportar-grilla-a-cvs-migrado-a-vb-net.aspx</id><published>2010-01-15T02:34:00Z</published><updated>2010-01-15T02:34:00Z</updated><content type="html">&lt;p align="justify"&gt;Hola,&lt;strong&gt; primero que nada, quiero aclarar que no soy el Due&amp;ntilde;o de este c&amp;oacute;digo&lt;/strong&gt;, de hecho un lector de mi blog me poste&amp;oacute; el ejemplo que estaba en C#&amp;nbsp; y lo necesitaba en VB.NET. Resulta que al traducirlo autom&amp;aacute;ticamente con el gran &lt;a target="_blank" href="http://converter.telerik.com/"&gt;TELERIK Converter.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_2BDEF648.png"&gt;&lt;img height="186" width="473" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_3D6EE113.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;El articulo original est&amp;aacute; en: &lt;br /&gt;&lt;a href="http://www.arzion.com/empresa-de-internet/posts/Exportar-un-GridView-a-CSV-con-ASPnet" title="http://www.arzion.com/empresa-de-internet/posts/Exportar-un-GridView-a-CSV-con-ASPnet"&gt;http://www.arzion.com/empresa-de-internet/posts/Exportar-un-GridView-a-CSV-con-ASPnet&lt;/a&gt; &lt;br /&gt;Realizado por &lt;strong&gt;Ernesto Traversaro &lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Luego al traducirlo el Lector lo prob&amp;oacute; y dijo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_54B9E584.png"&gt;&lt;img height="130" width="478" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_2CA73665.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Luego otra persona me dijo lo mismo y lo revis&amp;eacute; y era simplemente que una variable se estaba declarando dos veces entonces lo cambi&amp;eacute; y resulto:&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;Protected&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; ExportarCSV() &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Clear() &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Buffer = &lt;span style="color:blue;"&gt;True &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.AddHeader(&lt;span style="color:#a31515;"&gt;&amp;quot;content-disposition&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;attachment;filename=GridViewExport.csv&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Charset = &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.ContentType = &lt;span style="color:#a31515;"&gt;&amp;quot;application/text&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GridView1.AllowPaging = &lt;span style="color:blue;"&gt;False &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GridView1.DataBind() &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; sb &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; StringBuilder() &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; k &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Integer&lt;/span&gt; = 0 &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;While&lt;/span&gt; k &amp;lt; GridView1.Columns.Count &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sb.Append(GridView1.Columns(k).HeaderText + &lt;span style="color:#a31515;"&gt;&amp;quot;,&amp;quot;c&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Math.Max(System.Threading.Interlocked.Increment(k), k - 1) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;While &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sb.Append(vbCr &amp;amp; vbLf) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; i &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Integer&lt;/span&gt; = 0 &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;While&lt;/span&gt; i &amp;lt; GridView1.Rows.Count &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; k2 &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Integer&lt;/span&gt; = 0 &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;While&lt;/span&gt; k2 &amp;lt; GridView1.Columns.Count &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sb.Append(GridView1.Rows(i).Cells(k2).Text + &lt;span style="color:#a31515;"&gt;&amp;quot;,&amp;quot;c&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Math.Max(System.Threading.Interlocked.Increment(k2), k2 - 1) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;While &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sb.Append(vbCr &amp;amp; vbLf) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;While &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Output.Write(sb.ToString()) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;Response.Flush() &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.End() &lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;Entonces lo hice un ejemplo con VB.NET &lt;br /&gt;&lt;a target="_blank" href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/excelcvs.rar"&gt;&lt;strong&gt;PUEDES DESCARGARLO ACA&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;Y&amp;nbsp; si quieres ver el articulo original C# esta en:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.arzion.com/empresa-de-internet/posts/Exportar-un-GridView-a-CSV-con-ASPnet" title="http://www.arzion.com/empresa-de-internet/posts/Exportar-un-GridView-a-CSV-con-ASPnet"&gt;&lt;strong&gt;http://www.arzion.com/empresa-de-internet/posts/Exportar-un-GridView-a-CSV-con-ASPnet&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=165026" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="ASP.NET" scheme="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx" /><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /></entry><entry><title>Resumen de Post de Optimización Web – Chaloptimaze!</title><link rel="alternate" type="text/html" href="/blogs/gperez/archive/2010/01/13/resumen-de-post-de-optimizaci-243-n-web-chaloptimaze.aspx" /><id>/blogs/gperez/archive/2010/01/13/resumen-de-post-de-optimizaci-243-n-web-chaloptimaze.aspx</id><published>2010-01-13T17:25:00Z</published><updated>2010-01-13T17:25:00Z</updated><content type="html">&lt;table width="604" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="126" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_41DA945D.png"&gt;&lt;img height="80" width="102" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_63D2CA56.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="476" valign="top"&gt;
&lt;p&gt;Hola, ya que algunos me han preguntado &amp;ldquo;tienes alg&amp;uacute;n tip de optimizaci&amp;oacute;n&amp;rdquo; voy a publicar un peque&amp;ntilde;o resumen de algunos de los post m&amp;aacute;s relevantes sobre este tema que he realizado. Obviamente todav&amp;iacute;a estoy en deuda y es en esta &amp;eacute;poca del a&amp;ntilde;o en donde puedo escribir m&amp;aacute;s post, as&amp;iacute; que pr&amp;oacute;ximamente &amp;hellip; m&amp;aacute;s tips de optimizaci&amp;oacute;n!&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Dejo entonces algunos links de este humilde blog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx"&gt;Optimizando tu Web con CSS SPrites&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/01/02/microsoft-ajax-cdn-mejoras-de-rendimiento-a-considerar.aspx"&gt;Utilizar Microsoft Ajax CDN&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/01/02/microsoft-ajax-cdn-mejoras-de-rendimiento-a-considerar.aspx"&gt;Minificar los archivos JavaScript&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/06/04/scriptreferenceprofiler-compositescript-y-pensando-por-que-no-lo-ocupe-antes-optimizaci-243-n-de-request-de-javasscripts.aspx"&gt;CompositeScript &amp;ndash; Combinar para optimizar&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;Mejora para los motores de B&amp;uacute;squeda (ASP.NET 4)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;Mejorar el rendimiento optimizando los ViewState (ASP.NET 4)&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Saludos! &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=164938" width="1" height="1"&gt;</content><author><name>gperez</name><uri>http://geeks.ms/members/gperez/default.aspx</uri></author><category term="Tips" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx" /><category term="Tutorial" scheme="http://geeks.ms/blogs/gperez/archive/tags/Tutorial/default.aspx" /><category term="Ninja Web" scheme="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx" /><category term="Optimizaci&amp;#243;n" scheme="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx" /><category term="Patrones de Dise&amp;#241;o" scheme="http://geeks.ms/blogs/gperez/archive/tags/Patrones+de+Dise_26002300_241_3B00_o/default.aspx" /></entry></feed>