<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7537883066669588552</id><updated>2012-01-21T07:45:26.572-08:00</updated><category term='selectors'/><category term='gridview'/><category term='almacenas'/><category term='punto net'/><category term='ranking'/><category term='server controls'/><category term='selectores'/><category term='cisco'/><category term='datalist'/><category term='encrypt'/><category term='popup'/><category term='encriptar'/><category term='inicio'/><category term='invitar'/><category term='roles'/><category term='animate'/><category term='background'/><category term='dotnet'/><category term='instalacion ajax'/><category term='procedimientos'/><category term='facebook'/><category term='cr_net_2005_mm_mlb_x86.zip'/><category term='checkbox'/><category term='amigos'/><category term='magia'/><category term='connect'/><category term='ajax'/><category term='merge module'/><category term='mms'/><category term='juego'/><category term='updatepanel'/><category term='tutorial'/><category term='procedure'/><category term='store'/><category term='julio cesar guzman'/><category term='WebSite Administration Tool'/><category term='game'/><category term='move'/><category term='sql server'/><category term='WAT'/><category term='scriptmanager'/><category term='visual studio'/><category term='jquery'/><category term='hyperlink'/><category term='Invoke or BeginInvoke cannot be called on a control until the window handle has been created'/><category term='packet tracer'/><category term='70-528'/><category term='funciones'/><category term='asp.net'/><category term='id'/><category term='crystal reports'/><category term='potision'/><title type='text'>Julio César Guzmán</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-1601167541583850225</id><published>2011-03-15T13:11:00.000-07:00</published><updated>2011-03-15T13:11:33.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Invoke or BeginInvoke cannot be called on a control until the window handle has been created'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Invoke or BeginInvoke cannot be called on a control until the window handle has been created</title><content type='html'>When installing SQL Server 2008 Express appears this weird error, "Invoke or BeginInvoke cannot be called on a control until the window handle has been created", looking around on the web we can find a lot of solutions, some are simple, some are weird but no specific solution works for everyone, the solution was find &lt;a href="http://weblogs.asp.net/jeffwids/archive/2010/05/30/sql-server-2008-service-pack-1-and-the-invoke-or-begininvoke-cannot-be-called-error-message.aspx"&gt;here&lt;/a&gt;, when I read that I think it doesn't have any sense, but the error refers to something with some window... The solution it's simple and weird, when the "Wait" dialog appears, we should click on the window, just set the focus in the dialog every time that appears, &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-i63B0FqYons/TX_HHPnQpTI/AAAAAAAAAW8/NZA9wl9s5bM/s1600/image_thumb_6B381DEC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="86" src="https://lh4.googleusercontent.com/-i63B0FqYons/TX_HHPnQpTI/AAAAAAAAAW8/NZA9wl9s5bM/s320/image_thumb_6B381DEC.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You should click and set the focus on that bastard window everytime it's show... after that you could install SQL SQL Server without any problem... funny and fuck*** error&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-1601167541583850225?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/1601167541583850225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=1601167541583850225' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1601167541583850225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1601167541583850225'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2011/03/invoke-or-begininvoke-cannot-be-called.html' title='Invoke or BeginInvoke cannot be called on a control until the window handle has been created'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-i63B0FqYons/TX_HHPnQpTI/AAAAAAAAAW8/NZA9wl9s5bM/s72-c/image_thumb_6B381DEC.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-3676853695394093740</id><published>2011-02-25T06:33:00.000-08:00</published><updated>2011-02-25T06:33:11.162-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='animate'/><category scheme='http://www.blogger.com/atom/ns#' term='background'/><category scheme='http://www.blogger.com/atom/ns#' term='move'/><category scheme='http://www.blogger.com/atom/ns#' term='potision'/><title type='text'>Move background with jQuery</title><content type='html'>With one simple sentence of jQuery we can animate the position of the background image , in the following example we have a div with a background image.&lt;br /&gt;&lt;blockquote&gt;#left&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; width:250px;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; height:500px;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; background-image:url(Images/test.png);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; background-position:0px;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; background-repeat:no-repeat;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; float:left;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; overflow:hidden;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; z-index:-1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;lt;div id="left"&amp;gt;&amp;lt;/div&amp;gt;&lt;/blockquote&gt;The jQuery instruction: &lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$("#left").animate({ backgroundPosition: "-500px" }, 700);&lt;/blockquote&gt;We just put in the animate the property backgroundPosition and the new position, after define the speed of the animation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-3676853695394093740?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/3676853695394093740/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=3676853695394093740' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/3676853695394093740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/3676853695394093740'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2011/02/move-background-with-jquery.html' title='Move background with jQuery'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-799337795153717794</id><published>2011-02-01T13:29:00.000-08:00</published><updated>2011-02-01T13:29:24.624-08:00</updated><title type='text'>Rammstein Rammlied Colombia !!!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/Wyti8ZDAnAc/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Wyti8ZDAnAc?f=videos&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/Wyti8ZDAnAc?f=videos&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;Severo concierto !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-799337795153717794?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/799337795153717794/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=799337795153717794' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/799337795153717794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/799337795153717794'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2011/02/rammstein-rammlied-colombia.html' title='Rammstein Rammlied Colombia !!!'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-8432616702768706429</id><published>2010-11-18T14:36:00.000-08:00</published><updated>2010-11-18T14:50:48.888-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='invitar'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='amigos'/><category scheme='http://www.blogger.com/atom/ns#' term='connect'/><title type='text'>Facebook Connect Invitar Amigos</title><content type='html'>Para sacar el control de invitar amigos de facebook en una pagina normal, debemos primero añadir el siguiente namespace en el html:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" &lt;span class="Apple-style-span" style="color: red;"&gt;xmlns:fb="http://www.facebook.com/2008/fbml"&lt;/span&gt; &amp;gt;&lt;/blockquote&gt;&lt;br /&gt;Con el siguiente script haremos aparecer la ventana de invitar de facebook,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;//Esta variable es para controlar el tamaño del popup&lt;/span&gt;&lt;br /&gt;var oldSize = FB.UIServer.Methods["fbml.dialog"].size;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FB.UIServer.Methods["fbml.dialog"].size = { width: 760, height: 150 };&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;//Esta variable controla el codigo FBML para mostrar el popup con el invitar&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var dialog = {&lt;br /&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;method: 'fbml.dialog',&lt;br /&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;display: 'dialog',&lt;br /&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fbml: "&amp;lt;fb:fbml&amp;gt;&amp;lt;fb:request-form action='http://dotnetjuliocesar.blogspot.com/' method='GET' invite='true' type='DotNet Julio Cesar.' content='Visita este blog http://dotnetjuliocesar.blogspot.com/' label='Visita' &amp;gt;&amp;lt;fb:multi-friend-selector showborder='false' actiontext='Invita a tus amigos a ver este blog.'&amp;gt;&amp;lt;/fb:request-form&amp;gt;&amp;lt;/fb:fbml&amp;gt;",&lt;br /&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 700,&lt;br /&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;height: 150&lt;br /&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; &amp;nbsp; &amp;nbsp;};&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;//Muestra el dialogo&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FB.ui(dialog, function(result) { console.log(result); });&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;//Cambia el tamaño para que no sobre espacio con el invitar&lt;/span&gt;&lt;br /&gt;&amp;nbsp;FB.UIServer.Methods["fbml.dialog"].size = oldSize;&lt;/blockquote&gt;este script se puede meter dentro de una funcion javascript dejando de esta forma una manera de controlar la aparicion de la ventana, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;a id="DivInvite" href="#" &lt;span class="Apple-style-span" style="color: red;"&gt;onclick="invite();"&lt;/span&gt; style="display:none;"&amp;gt;Invita a tus amigos!&amp;lt;/a&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;El resultado final sera algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_k58aAptH-Js/TOWtsqFhTqI/AAAAAAAAAWw/WJDcUUqazkg/s1600/invite.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://3.bp.blogspot.com/_k58aAptH-Js/TOWtsqFhTqI/AAAAAAAAAWw/WJDcUUqazkg/s400/invite.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-8432616702768706429?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/8432616702768706429/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=8432616702768706429' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8432616702768706429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8432616702768706429'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/facebook-connect-invitar-amigos.html' title='Facebook Connect Invitar Amigos'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_k58aAptH-Js/TOWtsqFhTqI/AAAAAAAAAWw/WJDcUUqazkg/s72-c/invite.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-5651766239100133547</id><published>2010-11-17T08:17:00.000-08:00</published><updated>2010-11-17T08:17:52.175-08:00</updated><title type='text'>Facebook Login Button</title><content type='html'>Lo primero que se debe hacer es añadir el namespace xmlns:fb="http://www.facebook.com/2008/fbml" en el tag html (con esto se pueden interpretar los tags FBML).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" &amp;gt;&lt;/blockquote&gt;&lt;br /&gt;Para el login button añadimos:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;fb:login-button autologoutlink="true" perms="publish_stream"&amp;gt;&amp;lt;/fb:login-button&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;Por ultimo añadimos este codigo&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;div id="fb-root"&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script src="http://connect.facebook.net/en_US/all.js"&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FB.init({ appId: '&lt;span class="Apple-style-span" style="color: red;"&gt;YOUR APPLICATION ID&lt;/span&gt;', status: true, cookie: true, xfbml: true });&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FB.Event.subscribe('auth.sessionChange', function(response) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (response.session) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// A user has logged in, and a new cookie has been saved&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The user has logged out, and the cookie has been cleared&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;Debemos registrar nuestra aplicacion para obtener el ID, esto lo realizamos desde&amp;nbsp;&lt;a href="http://developers.facebook.com/setup/"&gt;http://developers.facebook.com/setup/&lt;/a&gt;&amp;nbsp;al reemplazarlo en el codigo anterior deberia aparecer el boton de login dentro de la pagina&lt;br /&gt;&lt;br /&gt;Para tener en cuenta:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La aplicacion en facebook debe tener el mismo dominio que la pagina donde se localiza la pagina, es decir, si mi aplicacion esta en www.myserver.com en ese mismo sitio debe quedar alojado el html.&lt;/li&gt;&lt;li&gt;Debe tener un ID valido de aplicacion.&lt;/li&gt;&lt;li&gt;Se puede elegir los diferentes permisos para acceder a la aplicacion.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-5651766239100133547?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/5651766239100133547/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=5651766239100133547' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/5651766239100133547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/5651766239100133547'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/facebook-login-button-invitar-amigos.html' title='Facebook Login Button'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-8343066391763182117</id><published>2010-11-16T11:36:00.000-08:00</published><updated>2010-11-16T14:41:34.228-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='julio cesar guzman'/><category scheme='http://www.blogger.com/atom/ns#' term='juego'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='ranking'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Ranking in asp.net with jQuery</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;The ranking is as follows:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_k58aAptH-Js/TOLDjBfgJVI/AAAAAAAAAWE/PvEj6R-psxk/s1600/ranking.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="http://1.bp.blogspot.com/_k58aAptH-Js/TOLDjBfgJVI/AAAAAAAAAWE/PvEj6R-psxk/s400/ranking.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Everything is build with divs and background images, the stored procedure returns the players' points and their position on the rank&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_k58aAptH-Js/TOLFt-xRH2I/AAAAAAAAAWI/712Slu2s_vI/s1600/ranking2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="68" src="http://2.bp.blogspot.com/_k58aAptH-Js/TOLFt-xRH2I/AAAAAAAAAWI/712Slu2s_vI/s400/ranking2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;Yellows are ImageButtons, The Red Labels, blue images and the rest are pure images and divs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;In fact, the ranking is on a div with the following style&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width:438px;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;height:129px; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float:left; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&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;&amp;nbsp;overflow:hidden;&lt;/blockquote&gt;Really we will have the full ranking with the top 10 but only will see the first 5 because they are the only ones who fit into the above div (438px wide) and the overflow hidden hides the rest (6 to 10), then using jQuery we can use Click on the arrow next to simply move the div's rank:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#btnNext").click(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#RankPointsList").css('margin-left', '-450px');&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#btnBack").show('fast');&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#btnNext").hide('fast');&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;This jQuery code move the div to the left, leaving visible only the last 5 ranking as we see in the image:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_k58aAptH-Js/TOLYheHviTI/AAAAAAAAAWM/HpI6aopYyTs/s1600/ranking3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="68" src="http://4.bp.blogspot.com/_k58aAptH-Js/TOLYheHviTI/AAAAAAAAAWM/HpI6aopYyTs/s400/ranking3.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;This way is much easier to manipulate, avoiding postbacks and saving server resources&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-8343066391763182117?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/8343066391763182117/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=8343066391763182117' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8343066391763182117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8343066391763182117'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/ranking-in-aspnet-with-jquery.html' title='Ranking in asp.net with jQuery'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k58aAptH-Js/TOLDjBfgJVI/AAAAAAAAAWE/PvEj6R-psxk/s72-c/ranking.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-6673145967554912852</id><published>2010-11-16T11:17:00.000-08:00</published><updated>2010-11-16T11:27:26.537-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='julio cesar guzman'/><category scheme='http://www.blogger.com/atom/ns#' term='juego'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='ranking'/><title type='text'>Ranking en asp.net con jQuery</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;El ranking es como el siguiente:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_k58aAptH-Js/TOLDjBfgJVI/AAAAAAAAAWE/PvEj6R-psxk/s1600/ranking.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="http://1.bp.blogspot.com/_k58aAptH-Js/TOLDjBfgJVI/AAAAAAAAAWE/PvEj6R-psxk/s400/ranking.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Todo esta armado con divs&amp;nbsp;con imagenes de fondo, el procedimiento almacenado de la base de datos retorna los "jugadores" con su puntaje y la posicion en el ranking,&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_k58aAptH-Js/TOLFt-xRH2I/AAAAAAAAAWI/712Slu2s_vI/s1600/ranking2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="68" src="http://2.bp.blogspot.com/_k58aAptH-Js/TOLFt-xRH2I/AAAAAAAAAWI/712Slu2s_vI/s400/ranking2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Los amarillos son ImageButtons, Los rojos Labels, el azul images y el resto son puras images y divs con fondos.&lt;br /&gt;&lt;br /&gt;En realidad el ranking esta metido dentro de un div con el siguiente estilo,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width:438px;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;height:129px; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float:left; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&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;&amp;nbsp;overflow:hidden;&lt;/blockquote&gt;En realidad tendremos el ranking completo con los 10 primeros pero solo se veran los 5 primeros, son los unicos que caben dentro de div anterior (438px de ancho) y el overflow oculta el resto (del 6 al 10),despues mediante jquery podemos usar el click en la flecha de siguiente para simplemente mover el div del ranking:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#btnNext").click(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#RankPointsList").css('margin-left', '-450px');&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#btnBack").show('fast');&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#btnNext").hide('fast');&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;/blockquote&gt;&lt;br /&gt;Con este codigo de jQuery movemos el div a la izquierda, dejando visibles unicamente los 5 ultimos del ranking como veremos en la siguiente imagen:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_k58aAptH-Js/TOLYheHviTI/AAAAAAAAAWM/HpI6aopYyTs/s1600/ranking3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="68" src="http://4.bp.blogspot.com/_k58aAptH-Js/TOLYheHviTI/AAAAAAAAAWM/HpI6aopYyTs/s400/ranking3.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;De esta forma es mucho mas facil manipularlo, evitando postbacks y ahorrando recursos del servidor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-6673145967554912852?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/6673145967554912852/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=6673145967554912852' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/6673145967554912852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/6673145967554912852'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/el-ranking-es-como-el-siguiente-todo.html' title='Ranking en asp.net con jQuery'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k58aAptH-Js/TOLDjBfgJVI/AAAAAAAAAWE/PvEj6R-psxk/s72-c/ranking.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-4572619724900181978</id><published>2010-11-11T11:40:00.000-08:00</published><updated>2010-11-16T09:43:01.033-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='id'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><title type='text'>Get the ID of an element using jQuery</title><content type='html'>To get the ID of an element using jQuery we must do the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$("a").click(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var oID = $(this).&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;attr("id");&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;In the former case we get the id &amp;lt;a&amp;gt; element that was selected, how is this useful?&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;in the following example in a gridview&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;is generated a dynamically link, this one's ID is the ID of the row&lt;/span&gt;,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 16px;"&gt;By clicking on the link to obtain the ID and query information related to this code from the client side, in this case opens a popup with the details of the consultation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_k58aAptH-Js/TNwSc5IS5YI/AAAAAAAAAWA/1-wCdUDZkUI/s1600/details.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_k58aAptH-Js/TNwSc5IS5YI/AAAAAAAAAWA/1-wCdUDZkUI/s320/details.jpg" width="318" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-4572619724900181978?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/4572619724900181978/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=4572619724900181978' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/4572619724900181978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/4572619724900181978'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/get-id-of-element-using-jquery.html' title='Get the ID of an element using jQuery'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k58aAptH-Js/TNwSc5IS5YI/AAAAAAAAAWA/1-wCdUDZkUI/s72-c/details.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-5370807788026954201</id><published>2010-11-11T08:07:00.000-08:00</published><updated>2010-11-16T09:44:02.428-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hyperlink'/><category scheme='http://www.blogger.com/atom/ns#' term='popup'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='id'/><title type='text'>Obtener el id de un elemento mediante jQuery</title><content type='html'>Para obtener el id de un elemento mediante jQuery debemos realizar lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$("a").click(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var oID = $(this).&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;attr("id");&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;/blockquote&gt;&lt;br /&gt;En el caso anterior obtendremos el id del elemento &amp;lt;a&amp;gt; que fue seleccionado, como puede ser util esto ?, en el ejemplo siguiente en un gridview se genera un link dinamicamente, este tiene como id el ID de la fila, al dar click en el link se obtiene el ID y se consulta informacion relacionada con ese codigo desde el lado del cliente, en este caso abre un popup con los detalles de la consulta&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_k58aAptH-Js/TNwSc5IS5YI/AAAAAAAAAWA/1-wCdUDZkUI/s1600/details.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_k58aAptH-Js/TNwSc5IS5YI/AAAAAAAAAWA/1-wCdUDZkUI/s320/details.jpg" width="318" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-5370807788026954201?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/5370807788026954201/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=5370807788026954201' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/5370807788026954201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/5370807788026954201'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/obtener-el-id-de-un-elemento-mediante.html' title='Obtener el id de un elemento mediante jQuery'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k58aAptH-Js/TNwSc5IS5YI/AAAAAAAAAWA/1-wCdUDZkUI/s72-c/details.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-1706788509623106020</id><published>2010-11-04T15:39:00.000-07:00</published><updated>2010-11-16T09:45:34.242-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server controls'/><category scheme='http://www.blogger.com/atom/ns#' term='checkbox'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='selectors'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><category scheme='http://www.blogger.com/atom/ns#' term='datalist'/><title type='text'>jQuery ASP.NET</title><content type='html'>To select an ASP.NET server control with jQuery we could use:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$("#&lt;%=idOfControl.ClientID%&gt;")&lt;br /&gt;&lt;/blockquote&gt;The ClientID represents the unique ID asigned to the control at runtime&lt;br /&gt;Another easy way to select all the controls that it's ID ends with the specified text is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$("[id$='_idControl']").each(function() {&lt;br /&gt;});&lt;/blockquote&gt;&lt;br /&gt;Where idControl is replaced for the controls' ID that we want to select, this is pretty useful when you hace for example a Datalist with checkboxes inside.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-1706788509623106020?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/1706788509623106020/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=1706788509623106020' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1706788509623106020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1706788509623106020'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/jquery-aspnet.html' title='jQuery ASP.NET'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-6625632170115942793</id><published>2010-11-04T15:28:00.000-07:00</published><updated>2010-11-16T09:42:12.690-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='checkbox'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='selectores'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><category scheme='http://www.blogger.com/atom/ns#' term='datalist'/><title type='text'>jQuery ASP.NET</title><content type='html'>Para seleccionar un control de servidor de ASP.NET con jQuery usamos:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$("#&lt;%=idDelControl.ClientID%&gt;")&lt;br /&gt;&lt;/blockquote&gt;El ClientID representa el ID unico que le asigna en runtime al control.&lt;br /&gt;&lt;br /&gt;Otra sencilla manera de seleccionar todos los controles que su ID termine con nuestro texto buscado es:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$("[id$='_idControl']").each(function() {&lt;br /&gt;&lt;br /&gt;});&lt;/blockquote&gt;&lt;br /&gt;Donde idControl se reemplaza por el id del control o los controles que queremos recorrer, muy util si tenemos por ejemplo un datalist con checkboxes en el.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-6625632170115942793?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/6625632170115942793/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=6625632170115942793' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/6625632170115942793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/6625632170115942793'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/blog-post.html' title='jQuery ASP.NET'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-1051986902179596038</id><published>2010-11-04T07:07:00.000-07:00</published><updated>2010-11-16T09:45:57.786-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='encrypt'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='store'/><category scheme='http://www.blogger.com/atom/ns#' term='procedure'/><title type='text'>Encrypted SQL procedures</title><content type='html'>To create an encrypted stored procedure in SQL Server we must use the WITH ENCRYPTION intruccion after CREATE or ALTER statement&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#3a3aff"&gt;CREATE PROCEDURE&lt;/span&gt; procedureName&lt;br /&gt;&lt;span style="color:#008000"&gt; /*&lt;br /&gt;(&lt;br /&gt;@parameter1 int = 5,&lt;br /&gt;@parameter2 datatype OUTPUT&lt;br /&gt;)&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3a3aff"&gt; WITH ENCRYPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3a3aff"&gt;AS&lt;br /&gt;SELECT * FROM&lt;/span&gt; Table &lt;br /&gt;&lt;span style="color:#3a3aff"&gt; RETURN&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;We must be carefull because in theory, al least, it's not possible to decrypt it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-1051986902179596038?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/1051986902179596038/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=1051986902179596038' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1051986902179596038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1051986902179596038'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/encrypted-sql-procedures.html' title='Encrypted SQL procedures'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-1215782277242198789</id><published>2010-11-04T06:51:00.000-07:00</published><updated>2010-11-16T09:46:26.642-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='encrypt'/><category scheme='http://www.blogger.com/atom/ns#' term='almacenas'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='procedimientos'/><category scheme='http://www.blogger.com/atom/ns#' term='store'/><category scheme='http://www.blogger.com/atom/ns#' term='procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='encriptar'/><title type='text'>Procedimientos Encriptados SQL</title><content type='html'>Para Crear un procedimiento almacenado encriptado en SQL SERVER debemos usar la intruccion WITH ENCRYPTION despues del CREATE o el ALTER&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #3a3aff;"&gt;CREATE PROCEDURE&lt;/span&gt; procedureName&lt;br /&gt;&lt;span style="color: green;"&gt; /*&lt;br /&gt;(&lt;br /&gt;@parameter1 int = 5,&lt;br /&gt;@parameter2 datatype OUTPUT&lt;br /&gt;)&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3a3aff;"&gt; WITH ENCRYPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3a3aff;"&gt;AS&lt;br /&gt;SELECT * FROM&lt;/span&gt; Table &lt;br /&gt;&lt;span style="color: #3a3aff;"&gt; RETURN&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Debemos tener cuidado porque en teoría, al menos, no es posible descifrarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-1215782277242198789?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/1215782277242198789/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=1215782277242198789' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1215782277242198789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/1215782277242198789'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/11/procedimientos-encriptados-sql.html' title='Procedimientos Encriptados SQL'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-8003146549812620718</id><published>2010-10-29T06:23:00.001-07:00</published><updated>2010-10-29T06:25:39.281-07:00</updated><title type='text'>Actualizacion</title><content type='html'>Después de mucho tiempo sin actualizar el blog, vuelvo a el con un renovado diseño... ya estoy terminandolo.. espero la próxima semana empezar a postear nuevamente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-8003146549812620718?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/8003146549812620718/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=8003146549812620718' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8003146549812620718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8003146549812620718'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2010/10/actualizacion.html' title='Actualizacion'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-2847732923665381039</id><published>2008-11-08T18:17:00.000-08:00</published><updated>2008-11-08T18:45:14.156-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crystal reports'/><category scheme='http://www.blogger.com/atom/ns#' term='merge module'/><category scheme='http://www.blogger.com/atom/ns#' term='cr_net_2005_mm_mlb_x86.zip'/><category scheme='http://www.blogger.com/atom/ns#' term='mms'/><title type='text'>crystal reports merge module for visual studio 2005</title><content type='html'>como es medio HdP, o muy dificil encontrar el merge module de crystal reports que viene incluido con el visual studio 2005, lo publico en la siguiente direccion&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bibliosalesneiva.net/cr_net_2005_mm_mlb_x86.zip"&gt;http://www.bibliosalesneiva.net/cr_net_2005_mm_mlb_x86.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-2847732923665381039?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/2847732923665381039/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=2847732923665381039' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/2847732923665381039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/2847732923665381039'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2008/11/crystal-reports-merge-module-for-visual.html' title='crystal reports merge module for visual studio 2005'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-5628948953227740561</id><published>2008-08-06T19:37:00.000-07:00</published><updated>2008-08-07T11:51:08.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packet tracer'/><category scheme='http://www.blogger.com/atom/ns#' term='julio cesar guzman'/><category scheme='http://www.blogger.com/atom/ns#' term='cisco'/><title type='text'>Packet tracer 5</title><content type='html'>&lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_611349797205291" name="doc_611349797205291" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" align="middle" height="500"&gt;  &lt;param name="movie" value="http://documents.scribd.com/ScribdViewer.swf?document_id=4567479&amp;amp;access_key=key-txjttp5kw9wmn98opn1&amp;amp;page=&amp;amp;version=1&amp;amp;auto_size=true"&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;      &lt;embed src="http://documents.scribd.com/ScribdViewer.swf?document_id=4567479&amp;amp;access_key=key-txjttp5kw9wmn98opn1&amp;amp;page=&amp;amp;version=1&amp;amp;auto_size=true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_611349797205291_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" width="100%" align="middle" height="500"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;div style="font-size: 10px; text-align: center; width: 100%;"&gt;&lt;a href="http://www.scribd.com/doc/4567479/PT5-0-Overview"&gt;PT5 0 Overview&lt;/a&gt; - &lt;a href="http://www.scribd.com/upload"&gt;Upload a Document to Scribd&lt;/a&gt;&lt;/div&gt;&lt;div style="display: none;"&gt; Read this document on Scribd: &lt;a href="http://www.scribd.com/doc/4567479/PT5-0-Overview"&gt;PT5 0 Overview&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Release del packet tracer 5, ademas de soportar mas protocolos tiene la opcion de interactuar con otras simulaciones de packet tracer, creando una simlucion multi-usuario.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-5628948953227740561?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/5628948953227740561/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=5628948953227740561' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/5628948953227740561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/5628948953227740561'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2008/08/packet-tracert-5.html' title='Packet tracer 5'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-4843994117749593544</id><published>2007-10-09T11:05:00.000-07:00</published><updated>2008-12-10T20:42:24.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='funciones'/><category scheme='http://www.blogger.com/atom/ns#' term='julio cesar guzman'/><category scheme='http://www.blogger.com/atom/ns#' term='roles'/><category scheme='http://www.blogger.com/atom/ns#' term='magia'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='WAT'/><category scheme='http://www.blogger.com/atom/ns#' term='70-528'/><category scheme='http://www.blogger.com/atom/ns#' term='WebSite Administration Tool'/><title type='text'>Manejo de roles mediante el WAT (WebSite Administration Tool)  -  ASP.NET 2.0</title><content type='html'>Este post describira el uso de WAT para administrar y crear roles para los usuario, gracias a una duda que surgio en &lt;a href="http://www.forosdelweb.com/"&gt;http://www.forosdelweb.com&lt;/a&gt; sobre el tema.&lt;br /&gt;&lt;br /&gt;Primero, creamos un nuevo sitio web; a nuestro proyecto, en el explorador de soluciones agregamos 3 nuevas carpetas, nombradas, User, Admin y Estudiante y a la pagina defaul.aspx que esta en el directorio principal ( la del sitio web que creamos) le agregamos 3 linkbuttons a los cuales les cambiaremos la propiedad Text por el nombre de una de las carpetas que creamos.. asi que tendremos algo como esto (&lt;span style="font-weight: bold;"&gt;NOTA: en windows vista debemos ejecutar nuestro visual studio o la version express con permisos de administrador&lt;/span&gt;):&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvFLK5wlkI/AAAAAAAAAGo/oyzMOESPBNM/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 473px; height: 400px;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvFLK5wlkI/AAAAAAAAAGo/oyzMOESPBNM/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5119402197132547650" border="0" /&gt;&lt;/a&gt;Despues en el menu "Sitio Web" vamos a "Configuracion de ASP.NET", donde aparecera esto en nuestro browser ( Usa Firefox ).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvF7a5wllI/AAAAAAAAAGw/GnD6meNf1QQ/s1600-h/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 450px; height: 248px;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvF7a5wllI/AAAAAAAAAGw/GnD6meNf1QQ/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5119403026061235794" border="0" /&gt;&lt;/a&gt;Ahora, vamos a la pestaña seguridad, donde nos encontraremos con esto.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvHXa5wlmI/AAAAAAAAAG4/V8SLvjenz8E/s1600-h/wizard.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvHXa5wlmI/AAAAAAAAAG4/V8SLvjenz8E/s400/wizard.jpg" alt="" id="BLOGGER_PHOTO_ID_5119404606609200738" border="0" /&gt;&lt;/a&gt;La unica diferencia sera que en la parte que dice funciones existentes sera 0, no 3.. pues es que me adelante un poquito XD;  siguiendo con el tema, damos click donde señala la flecha roja, para abrir el asistente de configuracion de seguridad de la aplicacion, donde veremos algo como esto.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_k58aAptH-Js/RwvIQq5wlnI/AAAAAAAAAHA/nrz3FdVxCuo/s1600-h/wizard1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_k58aAptH-Js/RwvIQq5wlnI/AAAAAAAAAHA/nrz3FdVxCuo/s400/wizard1.jpg" alt="" id="BLOGGER_PHOTO_ID_5119405590156711538" border="0" /&gt;&lt;/a&gt;Listo, entonces ahora seguiremos los pasos del wizard, en este paso tendremos que elegir el metodo de acceso de la aplicacion, en este caso seria una Intranet o acceso a traves de Internet, aca se usa acceso a traves de internet.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvJNK5wloI/AAAAAAAAAHI/7swwwpJVS8g/s1600-h/wizard2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvJNK5wloI/AAAAAAAAAHI/7swwwpJVS8g/s400/wizard2.jpg" alt="" id="BLOGGER_PHOTO_ID_5119406629538797186" border="0" /&gt;&lt;/a&gt;Nuestro siguiente paso del wizard servira para configurar nuestro proveedor de datos, en mi caso seria sqlserver express ( si esta asi debe decir La aplicación está configurada actualmente para utilizar: Configuración de Proveedores Avanzada) .. si se requiere configurar de otra manera debemos hacerlo en la pestaña proveedor del WAT, (esto no se cubre aca), asi que seguiremos con nuestro paso 4..  aca decidimos si  nuestra aplicacion usara roles o no.. asi que en este caso obviamente los habilitaremos.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvJ3K5wlpI/AAAAAAAAAHQ/24TaamOPMPM/s1600-h/wizard4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvJ3K5wlpI/AAAAAAAAAHQ/24TaamOPMPM/s400/wizard4.jpg" alt="" id="BLOGGER_PHOTO_ID_5119407351093302930" border="0" /&gt;&lt;/a&gt;En este paso agregaremos nuestros roles, en este caso solo necesitamos 3. Administrador, Estudiante, User; cuando acabemos de añadir roles hacemos click en siguiente&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_k58aAptH-Js/RwvK1q5wlqI/AAAAAAAAAHY/1MHXNtcycRk/s1600-h/wizard5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_k58aAptH-Js/RwvK1q5wlqI/AAAAAAAAAHY/1MHXNtcycRk/s400/wizard5.jpg" alt="" id="BLOGGER_PHOTO_ID_5119408424835126946" border="0" /&gt;&lt;/a&gt;Luego estaremos en el paso de creacion de usuarios, para este ejemplo agregare 2, uno llamado crassr3cords al cual luego se le asiganara el rol administrador, y julio, el cual no sera nada, y por lo tanto no podra acceder a lo que se encuentre en la carpeta Admin.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvLPa5wlrI/AAAAAAAAAHg/Xv8AoMezQKI/s1600-h/wizard6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvLPa5wlrI/AAAAAAAAAHg/Xv8AoMezQKI/s400/wizard6.jpg" alt="" id="BLOGGER_PHOTO_ID_5119408867216758450" border="0" /&gt;&lt;/a&gt;Paso 6: aca agregaremos nuestras reglas de acceso, por ejemplo "solo los usuario que esten dentro del rol administrador pueden acceder a los archivos de la carpeta Admin", ( con el WAT es tan sencillo xD.. parece magia ajajja) aca debemos estar parados en la carpera (en el arbol de directorios que se ve a la izquierda),  seleccionar a quien se va a aplicar la regla ( si elegimos funcion estamos diciendo que esta regla se va aplicar a todos los usuario que pertenezcan a el rol que elijamos, si elegimos Usuario vamos a aplicar la regla a un solo usuario, por ejemplo un usuario con nick MrX, si elegimos todos los usuario pues por deduccion se saca a quien se va a aplicar la regla, si elegimos usuarios anonimos pues se la aplicaremos a los usuarios que no esten autenticados o logueados), y luego elegimos si le permitimos acceso al directorio que elegimos o se lo denegamos, agregamos la regla y listo..  tengamos en cuenta que si por ejemplo yo quiero poner que a la carpeta Admin solo puedan entrar los del rol Administrador debo hacer 2 reglas, la primera tendria que decirle que Permita a los usuario con rol o funcion Administrador entrar a la carpeta Admin, y la segunda tendria que decirle que Deniegue a todos los usuarios la entrada a esta carpeta, con ello, solo los usuarios, a excepcion de aquellos con rol Administrador no podran ingresar a estos archivos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvMCa5wltI/AAAAAAAAAHw/68n6Q_yOaFk/s1600-h/wizard7.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvMCa5wltI/AAAAAAAAAHw/68n6Q_yOaFk/s400/wizard7.jpg" alt="" id="BLOGGER_PHOTO_ID_5119409743390086866" border="0" /&gt;&lt;/a&gt;Por ultimo despues de hacer las reglas para nuestras carpetas ( en este ejemplo solo primero se le dice que en la carpeta Admin denegar a todos los usuarios, y edspues en la misma carpeta se da otra instruccion, permitir a los administradores, por lo que no hay problemas en nuestra jerarquia de permisos.. )&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvOWa5wluI/AAAAAAAAAH4/iOPMMAxr0p4/s1600-h/wizard8.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvOWa5wluI/AAAAAAAAAH4/iOPMMAxr0p4/s400/wizard8.jpg" alt="" id="BLOGGER_PHOTO_ID_5119412286010726114" border="0" /&gt;&lt;/a&gt;Acabamos nuestra configuracion de seguridad, ahora pongamos a nuestro usuario crassr3cords dentro del rol o funcion "Administrador". en la pestaña seguridad del WAT, vamos a donde señala la flecha roja en nuestra siguiente imagen.&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvO2K5wlvI/AAAAAAAAAIA/UmXxIBzTXb0/s1600-h/wizard9.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvO2K5wlvI/AAAAAAAAAIA/UmXxIBzTXb0/s400/wizard9.jpg" alt="" id="BLOGGER_PHOTO_ID_5119412831471572722" border="0" /&gt;&lt;/a&gt;Después veremos todos los usuarios registrados como se muestra en la siguiente imagen, donde podremos administrar a que rol o a que funcion pertenecen ( esas traducciones son muy malas XD), vamos a enrolar a crassr3cords.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvPNK5wlwI/AAAAAAAAAII/TPHsiJox6v0/s1600-h/wizard10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvPNK5wlwI/AAAAAAAAAII/TPHsiJox6v0/s400/wizard10.jpg" alt="" id="BLOGGER_PHOTO_ID_5119413226608563970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Después de dar click en "editar funciones" seleccionamos en el cuadro que aparece el rol al que pertenece, en este caso Administrador y listo, podemos cerrar el WAT cuando recargue la pagina.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvP0a5wlxI/AAAAAAAAAIQ/t4iNX1NxUCs/s1600-h/wizard11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvP0a5wlxI/AAAAAAAAAIQ/t4iNX1NxUCs/s400/wizard11.jpg" alt="" id="BLOGGER_PHOTO_ID_5119413900918429458" border="0" /&gt;&lt;/a&gt;Ahora, en nuestro proyecto agregaremos una pagina llamada login.aspx ( en el directorio principal ), y en ella agregaremos un control Login.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_k58aAptH-Js/RwvQY65wlyI/AAAAAAAAAIY/eybH6fUa7Ow/s1600-h/login1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_k58aAptH-Js/RwvQY65wlyI/AAAAAAAAAIY/eybH6fUa7Ow/s400/login1.jpg" alt="" id="BLOGGER_PHOTO_ID_5119414527983654690" border="0" /&gt;&lt;/a&gt;Ahora crearemos en nuestro explorador de soluciones una pagina default.aspx para las 3 carpetas que ya habiamos creado, User, Admin y Estudiante.. su explorador de soluciones debe verse parecido al mio xD.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_k58aAptH-Js/RwvQ1q5wlzI/AAAAAAAAAIg/5WW6mveqLT0/s1600-h/wizard12.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_k58aAptH-Js/RwvQ1q5wlzI/AAAAAAAAAIg/5WW6mveqLT0/s400/wizard12.jpg" alt="" id="BLOGGER_PHOTO_ID_5119415021904893746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora, en la pagina Default.aspx de nuestro sitio web.. la pagina principal.. la que no esta ni en Admin, Estudiante ni en User, le damos la ruta de la propiedad PostBackUrl de nuestro linkbutton a su apropiada pagina default ( si es el boton con Text admin.. pues la propiedad postBackUrl sera asignada a la pagina Default.aspx de la carpeta Admin y asi... )&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_k58aAptH-Js/RwvRx65wl0I/AAAAAAAAAIo/AZ_NqGOyRL4/s1600-h/wizard14.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_k58aAptH-Js/RwvRx65wl0I/AAAAAAAAAIo/AZ_NqGOyRL4/s400/wizard14.jpg" alt="" id="BLOGGER_PHOTO_ID_5119416056992012098" border="0" /&gt;&lt;/a&gt;Ahora ejecutamos nuestro Defaul.aspx y damos click en el vinculo Admin.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_k58aAptH-Js/RwvSR65wl1I/AAAAAAAAAIw/3nLnxB8WMYc/s1600-h/wizard13.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_k58aAptH-Js/RwvSR65wl1I/AAAAAAAAAIw/3nLnxB8WMYc/s400/wizard13.jpg" alt="" id="BLOGGER_PHOTO_ID_5119416606747826002" border="0" /&gt;&lt;/a&gt;Esto nos llevara a la pagina login.aspx pues aun no estamos logueados, asi que Iniciemos Sesión !!!!! (vamos de una vez con nuestro administrador).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvSna5wl2I/AAAAAAAAAI4/y1canmwUctk/s1600-h/wizard15.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvSna5wl2I/AAAAAAAAAI4/y1canmwUctk/s400/wizard15.jpg" alt="" id="BLOGGER_PHOTO_ID_5119416976115013474" border="0" /&gt;&lt;/a&gt;Al dar click en el boton de inicio de sesion este nos llevara a la pagina default.aspx de nuestra carpeta admin (se puede ver claramente en la url que estamos dentro del directorio admin).. por lo que veremos que va funcionando nuestro ejercicio.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_k58aAptH-Js/RwvTLa5wl3I/AAAAAAAAAJA/VujLESgD7IU/s1600-h/wizard16.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_k58aAptH-Js/RwvTLa5wl3I/AAAAAAAAAJA/VujLESgD7IU/s400/wizard16.jpg" alt="" id="BLOGGER_PHOTO_ID_5119417594590304114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora, vamos a iniciar sesion como julio (nuestro usuario sin permisos) intentando ingresar obviamente en nuestra pagina default.aspx exclusiva para administradores&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvTcK5wl4I/AAAAAAAAAJI/h2kHlQjRn9E/s1600-h/wizard17.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvTcK5wl4I/AAAAAAAAAJI/h2kHlQjRn9E/s400/wizard17.jpg" alt="" id="BLOGGER_PHOTO_ID_5119417882353112962" border="0" /&gt;&lt;/a&gt;Como veremos..  no nos funciono la aplicacion !! xC  . ajajaja. no mentiras .. perfecto !!!.. esta nos envía otra vez a iniciar sesión.. no nos deja entrar a nuestra carpeta admin.. justo lo que queríamos.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k58aAptH-Js/RwvUFK5wl6I/AAAAAAAAAJY/9RHKkl6yKwo/s1600-h/wizard18.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_k58aAptH-Js/RwvUFK5wl6I/AAAAAAAAAJY/9RHKkl6yKwo/s400/wizard18.jpg" alt="" id="BLOGGER_PHOTO_ID_5119418586727749538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bueno, obviamente, toca ponerle mas vínculos y pues un control para poder crear usuarios ( el createUserWizard), pero lo básico es esto.. espero sirva.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-4843994117749593544?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/4843994117749593544/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=4843994117749593544' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/4843994117749593544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/4843994117749593544'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2007/10/manejo-de-roles-mediante-el-wat-website.html' title='Manejo de roles mediante el WAT (WebSite Administration Tool)  -  ASP.NET 2.0'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k58aAptH-Js/RwvFLK5wlkI/AAAAAAAAAGo/oyzMOESPBNM/s72-c/1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537883066669588552.post-8018786499854195411</id><published>2007-10-01T17:52:00.000-07:00</published><updated>2007-10-05T18:03:53.255-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='julio cesar guzman'/><category scheme='http://www.blogger.com/atom/ns#' term='instalacion ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='inicio'/><category scheme='http://www.blogger.com/atom/ns#' term='punto net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='updatepanel'/><category scheme='http://www.blogger.com/atom/ns#' term='scriptmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Inicio con ASP.NET AJAX</title><content type='html'>Primero, acá esta la definición de &lt;a href="http://es.wikipedia.org/wiki/AJAX"&gt;AJAX (&lt;i&gt;&lt;b&gt;A&lt;/b&gt;synchronous &lt;b&gt;J&lt;/b&gt;avaScript &lt;b&gt;A&lt;/b&gt;nd &lt;b&gt;X&lt;/b&gt;ML&lt;/i&gt;)&lt;/a&gt; parte fundamental para las &lt;a href="http://es.wikipedia.org/wiki/Rich_Internet_Application"&gt;RIA(Rich Internet Applications)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En este post trataremos la instalación de la extensión de AJAX en ASP.NET específicamente con el Visual Web Developer Express Edition y el uso básico del Update Panel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para añadir la funcionalidad de AJAX dentro de nuestro IDE, debemos ir a esta pagina &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&amp;amp;displaylang=en&lt;/a&gt; donde descargaremos y posteriormente instalaremos las extensiones de AJAX para ASP.NET 2.0.&lt;br /&gt;&lt;br /&gt;Después de instaladas abrimos el Visual Web Developer y creamos un Web site de tipo AJAX enabled Web Site .... al ver en vista de diseño la pagina por defecto, veremos un control llamado ScriptManager, este control maneja el script básico para hacer una aplicación con AJAX, sencillamente mediante este las implementaciones de AJAX pueden usarse, de otra manera nuestro sitio no podría usar AJAX o tocaría hacer el script manualmente.&lt;br /&gt;&lt;br /&gt;Si vamos al cuadro de herramientas veremos que hay una nueva pestaña (AJAX Extensions), ahora usaremos el updatePanel; el updatePanel es un contenedor de controles, tal como un groupBox o un Panel normal, pero este tiene la habilidad de poder ejecutar instrucciones asincronicas, evitando el postback ( envió de información al servidor) cada vez que el usuario ejecuta una acción, actualizando solo la parte que le digamos, y no la pagina por completo. Veamos en acción este control para entender mejor este concepto.&lt;br /&gt;&lt;br /&gt;Agreguemos 2 labels y un dropdownlist.&lt;br /&gt;&lt;br /&gt;uno de los labels se usara solo para ver la incidencia de AJAX, en el label2 ponemos en el &lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;text&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:180%;"&gt;0&lt;/span&gt;&lt;/span&gt; (numero cero).&lt;br /&gt;&lt;br /&gt;el dropDownList lo llenamos de varios elementos ( en las propiedades, vamos a Items, hacemos click en el cuadro que aparece al lado de "Coleccion()" y empezamos a agregar elementos) ..  y le ponemos el autoPostBack en true (  en las propiedades, buscamos autoPostBack y lo cambiamos a true), después, damos doble click en el dropDownList para programar en el evento SelectedIndexChanged donde pondremos&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  &lt;span style="font-weight: bold; font-style: italic;"&gt;   Me.Label1.Text = Me.DropDownList1.Text&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Y en el form load ponemos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; Me.Label2.Text = CStr(CInt(Me.Label2.Text) + 1)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Al ejecutar vemos que al elegir un elemento de la lista el texto de nuestro label cambia, pero toda la pagina es enviada al servidor (se puede comprobar al ver que el label2 se actualiza), en una aplicación grande esto seria perjudicial para nosotros, pues tendría que volver a cargar elementos que en ningún momento se actualizaron, perdiendo recursos absurdamente; así que, como hacemos para enviar solo los elementos que necesitamos actualizar ??.&lt;br /&gt;&lt;br /&gt;Agreguemos un updatePanel a nuestro webForm, en el agregaremos nuestro label1 y nuestro dropDownList, y ejecutaremos nuestra aplicación.. al seleccionar un elemento de la lista veremos que nuestro label1 cambia.. pero el 2 no..  solo se reenvía lo necesario, no toda la pagina por completo, ahorrándonos valiosos recurso; pero entonces el dropDownList tiene necesariamente que estar dentro del updatePanel ?, No.&lt;br /&gt;&lt;br /&gt;sacamos el DDL de el updatePanel y cambiamos a vista de edición de HTML , donde veremos nuestro updatePanel, en el cual hay un tag&lt;span style="font-weight: bold; font-style: italic;"&gt; "&lt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ContentTemplate&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&gt;" &lt;/span&gt;donde se encuentran los elementos que pertenecen a este (debe estar adentro nuestro label1); después de el cierre del &lt;span style="font-weight: bold; font-style: italic;"&gt;"&lt;contenttemplate&gt;&lt;&lt;/contenttemplate&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ContentTemplate&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;contenttemplate&gt;&gt;"&lt;/contenttemplate&gt;&lt;/span&gt; &lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;contenttemplate&gt; &lt;/contenttemplate&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;contenttemplate&gt;&lt;/contenttemplate&gt;&lt;/span&gt; agregaremos un &lt;span style="font-weight: bold;"&gt;"&lt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Triggers&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;triggers&gt;&lt;/triggers&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;triggers&gt;&lt;/triggers&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&gt;"&lt;/span&gt; (los desencadenadores) dentro del cual agregaremos esto:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;asp:asyncpostbacktrigger controlid="DropDownList1" eventname="SelectedIndexChanged"&gt;&lt;/asp:asyncpostbacktrigger&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;asp:asyncpostbacktrigger controlid="DropDownList1" eventname="SelectedIndexChanged"&gt;&lt;/asp:asyncpostbacktrigger&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; asp:AsyncPostBackTrigger controlid="DropDownList1" EventName="SelectedIndexChanged"  /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;estamos agregando una llamada asincronica al evento SelectedIndexChanged del control DropDownList1 .. lo que causara que sin estar dentro del updatePanel este pueda actualizar nuestro label1 sin causar un PostBack no necesario.&lt;br /&gt;&lt;br /&gt;Ejecutamos y veremos que todo funciona perfectamente, usamos solo lo que necesitamos y comprendimos el funcionamiento de el updatePanel y la utilidad de AJAX en nuestro sitio web.&lt;br /&gt;&lt;br /&gt;Este fue el primer tutorial de AJAX en ASP.NET 2.0  ..  luego veremos el AJAXControlToolKit&lt;br /&gt;Cualquier duda, comentario o lo que sea pues háganle jaja.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537883066669588552-8018786499854195411?l=dotnetjuliocesar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotnetjuliocesar.blogspot.com/feeds/8018786499854195411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7537883066669588552&amp;postID=8018786499854195411' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8018786499854195411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537883066669588552/posts/default/8018786499854195411'/><link rel='alternate' type='text/html' href='http://dotnetjuliocesar.blogspot.com/2007/10/inicio-con-aspnet-ajax.html' title='Inicio con ASP.NET AJAX'/><author><name>Julio César Guzmán</name><uri>http://www.blogger.com/profile/09496317134795310760</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_k58aAptH-Js/TOMBBydV7NI/AAAAAAAAAWQ/YJlV-6a7qSo/S220/IMG0356A.jpg'/></author><thr:total>7</thr:total></entry></feed>
