<?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-2047999072384010161</id><updated>2012-02-05T20:33:01.944-06:00</updated><category term='Libros'/><category term='flash'/><category term='Visual Studio'/><category term='validar css'/><category term='ECMA'/><category term='master page'/><category term='dentro'/><category term='compuestos'/><category term='función'/><category term='personalizado'/><category term='calidad'/><category term='días'/><category term='ip'/><category term='tabpanel'/><category term='xampp'/><category term='convertir'/><category term='extender'/><category term='foros'/><category term='PECL'/><category term='breadcrumbs'/><category term='ms-word'/><category term='controles'/><category term='validadores'/><category term='write'/><category term='xml string'/><category term='comprimir'/><category term='End'/><category term='pagemethods'/><category term='absolutas'/><category term='cascadingdropdownnamevalue'/><category term='gif'/><category term='multiples registros'/><category term='wizard'/><category term='CSS'/><category term='idioma'/><category term='webservices'/><category term='reset css'/><category term='aleatorio'/><category term='descargar'/><category term='GD Image'/><category term='enumeraciones'/><category term='IIS'/><category term='service pack'/><category term='lenguajes'/><category term='Cron'/><category term='desplegable'/><category term='persitir'/><category term='de'/><category term='pear'/><category term='ViewState'/><category term='ubuntu'/><category term='método'/><category term='uploadprogress'/><category term='sonido'/><category term='mail'/><category term='problemas'/><category term='Active'/><category term='Email'/><category term='WebCam'/><category term='importantes'/><category term='CreateUserWizard'/><category term='Traducir páginas Asp'/><category term='meses'/><category term='reiniciar'/><category term='logo'/><category term='calendarextender'/><category term='grid'/><category term='Accesos'/><category term='OnChangeItem'/><category term='IDisposable'/><category term='Capturar'/><category term='response'/><category term='frameworks'/><category term='frases'/><category term='Resources'/><category term='validación'/><category term='ToTitleCase'/><category term='maquetación'/><category term='formato tablas'/><category term='web server'/><category term='image'/><category term='sidebartemplate'/><category term='callbacks'/><category term='Truco'/><category term='focus'/><category term='infragistic'/><category term='botones'/><category term='archivos'/><category term='wallpaper'/><category term='rastrear'/><category term='silverlight'/><category term='phpmyadmin'/><category term='aplicaciones'/><category term='HeidiSQL'/><category term='CodeBehind'/><category term='Open Source'/><category term='netbeans'/><category term='autenticar'/><category term='datagrid'/><category term='meta'/><category term='logos'/><category term='ajax .net'/><category term='Joomla'/><category term='ado.net'/><category term='Earth'/><category term='sql'/><category term='listar'/><category term='problema'/><category term='quickmaps'/><category term='firestarter'/><category term='iniciar'/><category term='expresiones regulares'/><category term='PopupExtender'/><category term='Login'/><category term='RE'/><category term='calendar'/><category term='Directory'/><category term='7.10'/><category term='web'/><category term='años'/><category term='gridview'/><category term='page_load'/><category term='empezar'/><category term='Subdominio'/><category term='codigos'/><category term='gratis'/><category term='xmlhttprequest'/><category term='Open'/><category term='ventajas'/><category term='Source'/><category term='encriptar'/><category term='subir archivos'/><category term='animación'/><category term='punto decimal o coma'/><category term='.net'/><category term='rutas'/><category term='diseño'/><category term='referencia'/><category term='cubo'/><category term='IIS 7.5'/><category term='hakia'/><category term='obstructivo'/><category term='mysql'/><category term='double'/><category term='marcos en HTML'/><category term='mes'/><category term='sketchables'/><category term='Shopping Cart'/><category term='XML'/><category term='dataset'/><category term='callback'/><category term='crystal report'/><category term='state'/><category term='scrollTop'/><category term='bloques'/><category term='filter'/><category term='vertical'/><category term='convertidor'/><category term='Drupal'/><category term='Hora'/><category term='w3c'/><category term='enfocar'/><category term='color de fondo'/><category term='modal'/><category term='ie6-upgrade-warning'/><category term='tabcontainer'/><category term='texto'/><category term='javascript'/><category term='eficiencia'/><category term='traducir'/><category term='aspnet_isapi.dll'/><category term='locualo'/><category term='60'/><category term='evitar link'/><category term='map'/><category term='jaja'/><category term='youtube'/><category term='interesante'/><category term='tooltip'/><category term='sidebar'/><category term='print_r'/><category term='add-ins'/><category term='borrar'/><category term='forum'/><category term='Historia'/><category term='custom validator'/><category term='no existe'/><category term='GetLocalResourceObject'/><category term='Days360'/><category term='Shopping'/><category term='vscript'/><category term='gráficos'/><category term='pagemethod'/><category term='windows'/><category term='envío'/><category term='revista'/><category term='dinámicos'/><category term='crea páginas web'/><category term='calcular'/><category term='enum'/><category term='resetear clave'/><category term='php'/><category term='modem'/><category term='webmaster'/><category term='videos'/><category term='ERP'/><category term='servidor'/><category term='ejemplos'/><category term='textbox'/><category term='SetFocus'/><category term='campo'/><category term='usuarios'/><category term='blogger'/><category term='tamaño'/><category term='carpeta'/><category term='WCF'/><category term='virtual host'/><category term='upload'/><category term='secretos'/><category term='eventos'/><category term='CRP'/><category term='calculadora'/><category term='rollover'/><category term='mozilla'/><category term='maps'/><category term='e-commerce'/><category term='Redes'/><category term='genéricos'/><category term='DTD'/><category term='correos'/><category term='__doPostBack'/><category term='Repeater'/><category term='DEMÁS'/><category term='APC'/><category term='visual basic'/><category term='delve'/><category term='Performance Logging'/><category term='Sigma Grid'/><category term='marcos'/><category term='Pinceles'/><category term='configurationmanager'/><category term='recomendados'/><category term='Request'/><category term='JQuery'/><category term='tablas'/><category term='video'/><category term='MSIL'/><category term='español'/><category term='errores'/><category term='gradient'/><category term='UpdatePanel'/><category term='chiste'/><category term='IBM'/><category term='demos'/><category term='cascadingdropdown'/><category term='consejos'/><category term='operaciones matemáticas'/><category term='Performance logging details'/><category term='buscador'/><category term='Trozos'/><category term='yuicompressor'/><category term='Akax'/><category term='End()'/><category term='2007'/><category term='postback'/><category term='autenticación'/><category term='Synaptic'/><category term='advertencia'/><category term='root'/><category term='contador'/><category term='Accordion'/><category term='template.php'/><category term='conectar'/><category term='altura'/><category term='HttpContext'/><category term='ie6'/><category term='Validar'/><category term='rápido'/><category term='perfomance'/><category term='cargar rápido'/><category term='Item'/><category term='framework'/><category term='ModalPopUp'/><category term='ultrawebgrid'/><category term='error'/><category term='reescribir'/><category term='Extensiones'/><category term='dropdown'/><category term='Aplicacion Web'/><category term='reflection'/><category term='msdn'/><category term='visualizer'/><category term='Captcha'/><category term='obstrusivo'/><category term='manuales'/><category term='WinXP'/><category term='Potedit'/><category term='Oracle'/><category term='png'/><category term='isapi'/><category term='ajax.net'/><category term='transparencias'/><category term='correo'/><category term='fuentes'/><category term='sp1'/><category term='limpiar'/><category term='Treeview'/><category term='expertos'/><category term='Animations'/><category term='cuánto'/><category term='menu'/><category term='row'/><category term='Label1'/><category term='Frameset'/><category term='manual'/><category term='SM56'/><category term='ER'/><category term='Reports'/><category term='competidor'/><category term='registro de windows'/><category term='extensión'/><category term='refresh'/><category term='programas'/><category term='Motorola'/><category term='Libros gratis'/><category term='web services'/><category term='Google'/><category term='revistas'/><category term='menú'/><category term='enumeración'/><category term='evitar'/><category term='Linux'/><category term='identity'/><category term='symfony'/><category term='orden'/><category term='DataItem'/><category term='VS2005'/><category term='aspnet_wp'/><category term='registros'/><category term='programar'/><category term='sp'/><category term='interesantes'/><category term='artículos'/><category term='ejemplo'/><category term='jscript'/><category term='Grids'/><category term='DNS'/><category term='ayuda'/><category term='seguridad'/><category term='código'/><category term='Frames in HTML'/><category term='rendimiento'/><category term='desarrollo'/><category term='Chm'/><category term='PHPMailer'/><category term='c#'/><category term='firefox'/><category term='eliminar'/><category term='Desfragmentador'/><category term='Cart'/><category term='Ubercart'/><category term='inetinfo.exe'/><category term='popup'/><category term='cursor'/><category term='No CSS en Emails'/><category term='tips'/><category term='HoverMenuExtender'/><category term='Feng Gui'/><category term='relativas'/><category term='web service'/><category term='Clamwin'/><category term='link'/><category term='Compiz Fusion'/><category term='MD5'/><category term='Antivirus'/><category term='correo electrónico'/><category term='pasar'/><category term='vb.net'/><category term='codigo'/><category term='LINQ'/><category term='velocidad'/><category term='Resource'/><category term='foreach'/><category term='datakey'/><category term='datatable'/><category term='fecha'/><category term='Asp.Net'/><category term='botón'/><category term='columnas ocultas'/><category term='poner css sin usar archivo *.css'/><category term='Gmail'/><category term='caracteres especiales de HTML'/><category term='complementos'/><category term='tvtime'/><category term='temas'/><category term='links'/><category term='regiones'/><category term='imagen'/><category term='intercambio de variables'/><category term='formato'/><category term='programación'/><category term='inyectar'/><category term='disco dañado'/><category term='estrellas'/><category term='session'/><category term='HTML'/><category term='GPS'/><category term='referencias'/><category term='mostra'/><category term='cursos'/><category term='bloques de código'/><category term='vista'/><category term='base de datos'/><category term='web config'/><category term='Globalization'/><category term='url'/><category term='fechas'/><category term='XP'/><category term='obstrucivo'/><category term='Gimp'/><category term='de todo'/><category term='Brushes'/><category term='personalizar'/><category term='excelente'/><category term='excell'/><category term='Report'/><category term='modalpopupextender'/><category term='codecs'/><category term='validator'/><category term='Ajax'/><category term='virtualhost'/><category term='desarrolloweb'/><category term='tunear'/><category term='escritorio virtual'/><category term='SMTP'/><category term='Noticias'/><category term='horizontal'/><category term='injectar'/><category term='internet'/><category term='datakeynames'/><category term='resetear'/><category term='códigos'/><category term='LosFormatter'/><category term='thunderbird'/><category term='Style'/><category term='sitios web'/><category term='páginas'/><category term='apache'/><category term='dropdownlist'/><category term='visual studio 2008'/><category term='office'/><category term='Recursos'/><category term='cambiar'/><category term='override'/><category term='soluciones'/><category term='indispensables'/><category term='foro'/><category term='desencriptar'/><category term='sql server'/><category term='config'/><category term='scriptmanager'/><category term='recuperar datos'/><category term='var'/><category term='mostrar'/><category term='3D'/><category term='Trucos'/><category term='Request.End()'/><category term='IE'/><category term='customvalidator'/><category term='DHTML'/><category term='wamp'/><category term='My-Bic'/><category term='dichos'/><category term='password'/><title type='text'>Links de Interés sobre Programación, Tips y más!</title><subtitle type='html'>Hablar es barato. Muéstrame el código. (Torvalds)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default?start-index=101&amp;max-results=100'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>315</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-143946673951331573</id><published>2011-12-13T21:54:00.001-06:00</published><updated>2011-12-13T21:54:28.414-06:00</updated><title type='text'>Asp.Net: Recuperar un valor de una celda del GridView</title><content type='html'>&lt;pre class="recuadro"&gt;Una forma de recuperar un valor de una celda en el control GridView: &lt;/pre&gt;&lt;pre class="recuadro"&gt;Protected Sub GridView1_RowDataBound(ByVal sender As Object, _&lt;br /&gt;    ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _&lt;br /&gt;    Handles GridView1.RowDataBound&lt;br /&gt;&lt;br /&gt;    If e.Row.RowType = DataControlRowType.DataRow Then&lt;br /&gt;        Dim precio As Single&lt;br /&gt;        &lt;span style="font-size: large;"&gt;&lt;b&gt;precio = DataBinder.Eval(e.Row.DataItem, "precio")&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;        If precio &amp;gt; 5 Then&lt;br /&gt;            e.Row.ForeColor = System.Drawing.Color.Red&lt;br /&gt;            e.Row.BackColor = System.Drawing.Color.Yellow&lt;br /&gt;            e.Row.Font.Bold = True&lt;br /&gt;        End If&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-143946673951331573?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/143946673951331573/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=143946673951331573&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/143946673951331573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/143946673951331573'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/12/aspnet-recuperar-un-valor-de-una-celda.html' title='Asp.Net: Recuperar un valor de una celda del GridView'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6217237924145026046</id><published>2011-05-22T20:59:00.001-06:00</published><updated>2011-07-25T10:52:05.227-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF: Temario para el examen de certificación 70-513 WCF de Microsoft</title><content type='html'>A continuación pongo el enlace oficial con todos los temas que hay que estudiar para el Examen de WCF con Microsoft .Net Framework 4.0. (70-513) (¡Rayos!, hubiera comenzado buscando esto primero, jeje!)&lt;br /&gt;&lt;br /&gt;El link es: &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-513#tab1"&gt;WCF Framework 4.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otro enlace: &lt;a href="http://www.jamesjfoster.com/blog/2010/resource-links-for-70-513-wcf-certification-exam/"&gt;http://www.jamesjfoster.com/blog/2010/resource-links-for-70-513-wcf-certification-exam/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6217237924145026046?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6217237924145026046/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6217237924145026046&amp;isPopup=true' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6217237924145026046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6217237924145026046'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/05/wcf-temario-para-estudiar-wcf.html' title='WCF: Temario para el examen de certificación 70-513 WCF de Microsoft'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6380366583978618093</id><published>2011-05-14T13:09:00.000-06:00</published><updated>2011-05-14T13:09:38.361-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ip'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF: Cómo detectar la IP del cliente.</title><content type='html'>El código de ejemplo sería así:&lt;br /&gt;&lt;br /&gt;OperationContext context = OperationContext.Current;&lt;br /&gt;MessageProperties messageProperties = context.IncomingMessageProperties;&lt;br /&gt;RemoteEndpointMessageProperty endpointProperty = messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;&lt;br /&gt;&lt;br /&gt;return string.Format("IP: {1}, Puerto: {2}", endpointProperty.Address, endpointProperty.Port);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6380366583978618093?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6380366583978618093/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6380366583978618093&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6380366583978618093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6380366583978618093'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/05/wcf-como-detectar-la-ip-del-cliente.html' title='WCF: Cómo detectar la IP del cliente.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7639167564378541617</id><published>2011-05-14T13:04:00.002-06:00</published><updated>2011-05-14T13:04:51.510-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><title type='text'>Silverlight: Cómo se usa el archivo de configuración de Silverlight</title><content type='html'>&lt;a href="http://www.mohamedibrahim.net/blog/2010/01/27/creating-and-using-silverlight-app-settings-webconfig-configuration-applicatioin-settings-to-change-wcf-service-address-after-deployment-servicereferencesclientconfig-servicereferences-clientconfig/"&gt;Silverlight Web Config&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7639167564378541617?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7639167564378541617/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7639167564378541617&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7639167564378541617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7639167564378541617'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/05/silverlight-como-se-usa-el-archivo-de.html' title='Silverlight: Cómo se usa el archivo de configuración de Silverlight'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-249639553838631132</id><published>2011-05-14T13:02:00.001-06:00</published><updated>2011-05-14T13:10:26.448-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='breadcrumbs'/><title type='text'>Diseño Web: Tipos de Breadcrumbs</title><content type='html'>¿Alguien se ha pregunta que son los Web Crumbs y como usarlo? &lt;a href="http://www.microsoft.com/business/smb/es-es/internet/tipos_breadcrumbs.mspx"&gt;Microsoft nos explica que son los breadcrumbs&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-249639553838631132?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/249639553838631132/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=249639553838631132&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/249639553838631132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/249639553838631132'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/05/diseno-web-tipos-de-breadcrumbs.html' title='Diseño Web: Tipos de Breadcrumbs'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7333262145496434073</id><published>2011-05-14T12:58:00.000-06:00</published><updated>2011-05-14T12:58:56.372-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='datatable'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Linq: Convertir un resultado de LINQ a un DataTable</title><content type='html'>¿Cómo convertir un resultado de LINQ a un DataTable? La respuesta la tenemos en &lt;a href="http://www.c-sharpcorner.com/UploadFile/VIMAL.LAKHERA/LINQResultsetToDatatable06242008042629AM/LINQResultsetToDatatable.aspx"&gt;/www.c-sharpcorner.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7333262145496434073?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7333262145496434073/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7333262145496434073&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7333262145496434073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7333262145496434073'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/05/linq-convertir-un-resultado-de-linq-un.html' title='Linq: Convertir un resultado de LINQ a un DataTable'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5259148291818931841</id><published>2011-05-14T12:56:00.001-06:00</published><updated>2011-05-14T12:57:26.117-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><title type='text'>Silverlight: DataGrid y más</title><content type='html'>- Ejemplos del control &lt;a href="http://geeks.ms/blogs/lmblanco/archive/2008/09/02/silverlight-datagrid-crear-una-columna-a-partir-de-varios-valores.aspx"&gt;DaraGrid&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5259148291818931841?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5259148291818931841/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5259148291818931841&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5259148291818931841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5259148291818931841'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/05/silverlight-datagrid-y-mas.html' title='Silverlight: DataGrid y más'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5992914621879316219</id><published>2011-03-25T22:06:00.002-06:00</published><updated>2011-03-25T22:24:33.270-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS 7.5'/><title type='text'>IIS: Nueva versión de IIS 7.5 Express para desarrolladores.</title><content type='html'>Qué bueno, Microsoft pode a disposición de los desarrolladores una nueva versión llamada IIS 7.5 Express. Según Microsoft mejora el desarrollo y las pruebas que se pueden hacer para las aplicaciones web, es una versión más liviana como la que existe en Visual Studio llamada ASP.NET Development Server (Cassini) pero con la  ventaja de que posee casi las mismas características que un IIS en un servidor de producción como el que encontramos en Windows Server 2008, y eso es bueno, porque siempre que se instala en producción se comienzan a ver errores en el sitio web desarrollado y con éste IIS Express podremos descubrirlos y depurarlos más rápido.&lt;br /&gt;&lt;br /&gt;Otras ventajas aparte de que podremos testear mejor las aplicaciones,  es que no se ocupan derechos de administrador, soporta SSL, URL Rewrite y contiene todos los módulos de IIS 7.X que se han ido agregando, es compatible desde Windows XP con SP 3 y versiones de SO superiores. Y además también sirve para PHP.&lt;br /&gt;&lt;br /&gt;IIS 7.5 Express viene incluido en &lt;a href="http://www.microsoft.com/web/webmatrix/"&gt;WebMatrix&lt;/a&gt;, que es una nueva herramienta de desarrollo de Microsoft la cual trae base de datos, IIS, ASP.Net, PHP, y un motón de cosas más y lo bueno es que es gratis y compatible con varios proyectos web Open Source como Drupal, Joomla, DotNetNuke, etc. &lt;br /&gt;&lt;br /&gt;Para hacerlo compatible con Visual Studio 2010, les puedo decir que es un dolor de ???? porque no hay un buen instalador todavía, pero aquí me encontré una buena descripción: &lt;a href="http://msmvps.com/blogs/siva/archive/2011/01/18/using-iis-express-7-5-with-visual-studio-2010-without-sp1.aspx"&gt;Instalar IIS Express&lt;/a&gt; para Visual Studio 2010. Recordar que hay que instalar el &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5"&gt;SP1 de Visual Studio 2010&lt;/a&gt; el cual tiene nada más y nada menos que 1.5 GB, que poquito verdad!.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5992914621879316219?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5992914621879316219/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5992914621879316219&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5992914621879316219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5992914621879316219'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/03/iis-nueva-version-de-iis-75-express.html' title='IIS: Nueva versión de IIS 7.5 Express para desarrolladores.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-974967571499327713</id><published>2011-03-20T00:02:00.012-06:00</published><updated>2011-03-25T22:13:56.922-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='altura'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><title type='text'>Silverlight: El objeto de silverlight crece pero no aparece el scrollbar</title><content type='html'>En una página web normal, cuando el contenido interno que está en un elemento DIV crece ya sea porque agregamos contenido de texto o porque aparece un control u otros elementos adicionales, generalmente aparece al lado derecho una barra de desplazamiento para poder observar el contenido que no se puede ver.&lt;br /&gt;&lt;br /&gt;Pues resulta que en silverlight no existe el elemento DIV, lo que existe en silverlight y que son equivalentes a los DIV son: Grid, StackPanel, DockPanel, Canvas, ScrollViewer, etc. Esos controles tienen la capacidad de crecer conforme crece su contenido interno. El problema aparece cuando el contenedor principal crece pero el objeto DIV que contiene al objeto de silverlight no crece de ninguna manera. Uno esperaría que aparezca una barra de desplazamiento en el lado derecho de la pantalla, sin embargo, la página no crece en altura.&lt;br /&gt;&lt;br /&gt;Existen dos soluciones una aplicando javascript y otra usando el control ScrollViewer.&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;u&gt;&lt;b style="color: black;"&gt;Usando Javascript&lt;/b&gt;&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;Los pasos para resolver el problema de la altura de la página son los siguientes:&lt;br /&gt;&lt;br /&gt;1º Al control Grid que es por así decir el contenedor principal que generalmente lo tenemos por defecto en la página MainPage.xaml, tenemos que agregarle el evento &lt;b&gt;LayoutUpdated&lt;/b&gt; para que se dispare cada vez que el contenido interno crece en altura. Por más mínimo que sea el cambio de altura o inclusive de anchura de un control interno, ese evento se va a disparar.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-sEbORPsuAb0/TYWHAc4IObI/AAAAAAAAAEM/fZmHnc7WaUg/s1600/Image+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-sEbORPsuAb0/TYWHAc4IObI/AAAAAAAAAEM/fZmHnc7WaUg/s1600/Image+1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2º El segundo paso es agregar una línea de código el cual debe ejecutar el evento &lt;b&gt;LayoutUpdated&lt;/b&gt;cada vez que cambie las dimensiones de un control interno:&lt;br /&gt;&lt;br /&gt;&lt;div id="divSilverlightAltura1" onmouseout="SetBackGround(this.id,'hidden',495)" onmouseover="SetBackGround(this.id,'visible',860)" style="overflow: hidden; width: 495px;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-a8dMUKMnb8g/TYWHMyDOVXI/AAAAAAAAAEQ/wRyuxuXaEHU/s1600/codigo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-a8dMUKMnb8g/TYWHMyDOVXI/AAAAAAAAAEQ/wRyuxuXaEHU/s1600/codigo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;3º Finalmente, hay que poner la función de javascript en la página que contiene al objeto de silverlight:&lt;br /&gt;&lt;br /&gt;&lt;div id="divSilverlightAltura2" onmouseout="SetBackGround(this.id,'hidden',495)" onmouseover="SetBackGround(this.id,'visible',630)" style="overflow: hidden; width: 495px;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-51TzvRjgX8o/TYWHg3SeGCI/AAAAAAAAAEU/QjRyG1YFtsg/s1600/javascript.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-51TzvRjgX8o/TYWHg3SeGCI/AAAAAAAAAEU/QjRyG1YFtsg/s1600/javascript.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Noten que la función getElementId de javascript devuelve la referencia del elemento de silverlight que previamente se le asignó el nombre "silverlightControlHost".&lt;br /&gt;&lt;br /&gt;Cada vez que se dispare el evento &lt;b&gt;LayoutUpdated&lt;/b&gt;, éste invoca a una función de javascript la cual se encarga de cambiar la altura del control DIV que contiene al objeto OBJECT que hace referencia al control del silverlight.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Usando el control ScrollViewer&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;Más fácil, y menos dolores de cabeza. Si usted llegó a mi blog buscando una solución para la altura en silverlight, está salvado, jeje!.&lt;br /&gt;&lt;br /&gt;Lo primero es lo primero, hay que limpiar el código que tenemos en la página xaml. Principalmente la altura del control contenedor más externo se podría reemplazar por MinHeight (solo si fuera necesario). En mi caso, yo quite todos los Height, Width, VerticalAlignment, HorizontalAlignment y dejo los que son estrictamente necesarios de los cuales puse MinHeight y lugar de Height.&lt;br /&gt;&lt;br /&gt;El siguiente paso es utilizar el control ScrollViewer. Lo que se debe hacer es colocarlo como el control más externo y lo más importante es ponerle las propiedades VerticalAlignment y HorizontalAlignment con el valor &lt;b&gt;Strech&lt;/b&gt; para que se extiendan en toda la página. Adicionalmente usando CSS, hay que poner al 100% el ancho y alto del DIV que contiene al objeto de silverlight y también ponérselo al mismo objeto de silverlight.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.silverlight.net/forums/p/205675/482098.aspx"&gt;Una buena ayuda en el foro de silverlight&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-974967571499327713?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/974967571499327713/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=974967571499327713&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/974967571499327713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/974967571499327713'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/03/silverlight-el-objeto-de-silverlight.html' title='Silverlight: El objeto de silverlight crece pero no aparece el scrollbar'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-sEbORPsuAb0/TYWHAc4IObI/AAAAAAAAAEM/fZmHnc7WaUg/s72-c/Image+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-354523921009887587</id><published>2011-03-07T22:46:00.002-06:00</published><updated>2011-03-25T22:15:17.287-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>ASP.Net: Network Service Account</title><content type='html'>Interesante documento que explica todo lo relacionado con la cuenta "Network Service Account" o mejor dicho "NT AUTHORITY\Network Service". Clic &lt;a href="http://msdn.microsoft.com/en-us/library/ff647402.aspx"&gt;aquí&lt;/a&gt; para leer éste interesante explicación.&lt;br /&gt;&lt;br /&gt;Una breve explicación sería la siguiente:&lt;br /&gt;&lt;br /&gt;NT Authority es una cuenta de usuario que actúa como agente de seguridad para&amp;nbsp; Windows. No es una cuenta de usuario como la que se utiliza para ingresar a Windows, es más bien una cuenta de seguridad utilizada para llevar a cabo tareas a nivel de sistema operativo tales como tareas programadas sin la necesidad o intervención de usuarios físicos.&lt;br /&gt;&lt;br /&gt;Por ejemplo, el programa SVCHOST.EXE es el programa que corre todos los servicios de Windows y utiliza la cuenta del sistema (NT Authority) para correr esos servicios internamente.&amp;nbsp; Dicha cuenta de Windows se conoce también como "Host Process For Windows Services" o "Services Host Program".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-354523921009887587?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/354523921009887587/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=354523921009887587&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/354523921009887587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/354523921009887587'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/03/aspnet-network-service-account.html' title='ASP.Net: Network Service Account'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8941428749257013753</id><published>2011-02-28T00:49:00.004-06:00</published><updated>2011-03-25T22:16:19.655-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>ADO .Net: Extraño error de mapeo.</title><content type='html'>Tremendo rato me tuvo entretenido un error con ADO.Net (para no decir otra cosa más fea, jaja) , que impedía hacer un Insert en una tabla. El mensaje del error era el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;No mapping exists from object type Metkas.Productos to a known managed provider native type.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Al final, me di cuenta que el paso de parámetros estaba mal. Para el valor de una parámetro yo puse la palabra reservada "this". Por ejemplo: new SqlParameter("@MiParametro", this).&lt;br /&gt;&lt;br /&gt;Al tener this como valor para el parámetro @MiParametro, genera el error antes mencionado. Diay si!, fue un error al digitar, porque no terminé la línea de código.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8941428749257013753?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8941428749257013753/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8941428749257013753&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8941428749257013753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8941428749257013753'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/02/ado-net-extrano-error-de-mapeo.html' title='ADO .Net: Extraño error de mapeo.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4871894507250012120</id><published>2011-02-23T23:12:00.004-06:00</published><updated>2011-02-23T23:14:23.519-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sp'/><category scheme='http://www.blogger.com/atom/ns#' term='borrar'/><title type='text'>Transact - SQL: Borrar todas las tablas de una base de datos en SQL Server</title><content type='html'>&lt;b&gt;Una forma rápida para borrar todas las tablas de una base de datos es con el siguiente comando:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Alternativamente para poder borrar todos los Procedimiento almacenados podemos aplicar si siguiente código:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;declare @procName sysname&lt;br /&gt;&lt;br /&gt;declare someCursor cursor for&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select name from sysobjects where type = 'P' and objectproperty(id, 'IsMSShipped') = 0&lt;br /&gt;&lt;br /&gt;open someCursor&lt;br /&gt;fetch next from someCursor into @procName&lt;br /&gt;while @@FETCH_STATUS = 0&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec('drop proc ' + @procName)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch next from someCursor into @procName&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;close someCursor&lt;br /&gt;deallocate someCursor&lt;br /&gt;go&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4871894507250012120?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4871894507250012120/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4871894507250012120&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4871894507250012120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4871894507250012120'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/02/transact-sql-borrar-todas-las-tablas.html' title='Transact - SQL: Borrar todas las tablas de una base de datos en SQL Server'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8931249387334082935</id><published>2011-02-20T14:31:00.006-06:00</published><updated>2011-02-20T16:45:43.518-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF: The remote server returned an error: NotFound.</title><content type='html'>Infinidad de ocasiones me ha aparecido el error: The remote server returned an error: NotFound.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Caso #1&lt;/b&gt;:&lt;br /&gt;Y no siempre, la solución es la misma para ese tipo de error. Si a alguien puedo ayudar con ésta entrada, les cuento que casi siempre es porque le estamos pasando un parámetro de un tipo X a un WCF, y el WCF está devolviendo un tipo igual al parámetro de entrada, con la excepción de que el parámetro de entrada estaba por así decirlo "extendido"; es decir, era una clase hija que heredaba de la clase padre, entonces, podemos cometer el error de devolver la clase extendida, sin embargo se suponía que el método solo retornaba el tipo de la clase padre (la clase normal y no la extendida).&lt;br /&gt;&lt;br /&gt;No sé si me expliqué bien, pero bueno, lo dejo para acordarme como fue que solucioné mi error en C# y los WCF, jajajajaja!.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Caso #2&lt;/b&gt;:&lt;br /&gt;De nuevo el errorcito, ésta vez era porque en el subproyecto donde tenía todos los WCF, se les estaba poniendo el sufijo WCF al final del nombre y al hacer la referencia en el proyecto de Silverlight, también estaba poniendo el mismo sufijo WCF. El detalle del por qué un WCF me estaba presentando ese error, era porque en el proyecto donde tenía todos los WCF, específicamente para el WCF que me daba el error, no le había puesto el sufijo, pero cuando hice la referencia si le puse el sufijo. Internamente la dirección "Address" estaba bien colocada, pero algún colega, le agregó el sufijo provocando el error. Bueno, por lo menos descubrí otra forma de como hacer que los WCF fallen, jaja!.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8931249387334082935?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8931249387334082935/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8931249387334082935&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8931249387334082935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8931249387334082935'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/02/wcf-remote-server-returned-error.html' title='WCF: The remote server returned an error: NotFound.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2572585107597072185</id><published>2011-02-20T11:17:00.000-06:00</published><updated>2011-02-20T11:17:42.398-06:00</updated><title type='text'>Silverlight: Subir archivos al servidor.</title><content type='html'>Un link sobre &lt;a href="http://www.xdevsoftware.com/blog/post/File-Upload-in-Silverlight-3.aspx"&gt;cómo subir archivos al sevidor utilizando un indicador de progreso&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2572585107597072185?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2572585107597072185/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2572585107597072185&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2572585107597072185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2572585107597072185'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/02/silverlight-subir-archivos-al-servidor.html' title='Silverlight: Subir archivos al servidor.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5457263908548240561</id><published>2011-02-12T13:16:00.023-06:00</published><updated>2011-02-20T11:16:03.141-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='var'/><category scheme='http://www.blogger.com/atom/ns#' term='MSIL'/><title type='text'>.Net 3.0: ¿Vale la pena usar la palabra reservada var?</title><content type='html'>Ya hace tiempo cuando estuve trabajando con LINQ en una de las empresas que estuve, mi jefe me explicó las ventajas de usar la palabra reservada "var", que aunque no es algo así como muy milagroso, si vale la pena mencionar sus ventajas, muy pocas ventajas, pero que si me parecen muy interesantes!.&lt;br /&gt;&lt;br /&gt;Como todos bien saben, o si no lo sabían, en .Net todas las variables deben ser fuertemente tipificadas; es decir, tenemos que especificar de qué tipo será la variable, por ejemplo: int, short, long, un tipo definido por el usuario, etc.&lt;br /&gt;&lt;br /&gt;Ahora bien, con la entrada de la versión de &lt;b&gt;.Net 3.0&lt;/b&gt; aparece la palabra reservada "&lt;span style="color: blue;"&gt;var&lt;/span&gt;" con la cual podemos declarar variables en forma implícita; esto significa que no es necesario que especifiquemos el tipo de la variable, dejando ese trabajo al compilador.&lt;br /&gt;&lt;br /&gt;Muchos programadores pensarían que eso es una "&lt;span style="color: red;"&gt;mala práctica de programación&lt;/span&gt;" porque estamos forzando más trabajo para el compilador y que el producto final que se instala en producción no será eficiente, etc.&lt;br /&gt;&lt;br /&gt;Si siguen leyendo está entrada se darán cuenta que NO ES CIERTO tal afirmación, &lt;u&gt;&lt;span style="color: blue;"&gt;usar var es algo normal&lt;/span&gt;&lt;/u&gt;, jaja!. &lt;br /&gt;&lt;br /&gt;1º) Originalmente "var" se creó para utilizarlo con los tipos anónimos, que hablando de temas de LINQ se hace muy claro la existencia de "var".&lt;br /&gt;&lt;br /&gt;2º) var se puede utilizar en cualquier código que queramos hacer, con las siguientes excepciones:&lt;br /&gt;&lt;br /&gt;a)- Al declarar una variable implícita, siempre debemos asignarle un valor; es decir, no podemos poner:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;var resultado;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Lo anterior no funciona porque el compilador no va a poder definir de que tipo debe ser la variable.&lt;br /&gt;&lt;br /&gt;b) var, solo se puede usar dentro de métodos de una clase.&lt;br /&gt;&lt;br /&gt;c) No es posible retonar un tipo var y los parámetros tampoco pueden ser var; es decir, si queremos definir una función tal como:&lt;br /&gt;&lt;br /&gt;public var Cuadrado(var base){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return base*base; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Lo anterior no funciona!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora, las ventajas:&lt;br /&gt;&lt;br /&gt;1º) No tenemos que estar escribiendo el tipo de la variable y ni siquiera el namespace reduciendo la línea de código en gran medida.:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var resultado = gridDatos.ItemsSource as List&amp;lt;Productos&amp;gt;;&lt;br /&gt;&lt;br /&gt;En el ejemplo anterior se usa la clase List genérica con el tipo Productos, donde Productos es una clase definida por el usuario. La línea de código anterior sin usar var quedaría así: &lt;br /&gt;&lt;br /&gt;ObservableCollection&amp;lt;Productos&amp;gt; resultado = gridDatos.ItemsSource as ObservableCollection&amp;lt;Productos&amp;gt;;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Notar como se está especificando en el ejemplo anterior, el tipo en ambos lados, lo cual es entendible pero innecesario, en lo personal, ahora que conozco la existencia de var&lt;/b&gt;&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Ahora consideren cuando el programador gusta poner el nombre de namespace completo (sin usar alias), la línea de código quedaría extremadamente larga. Además por si no lo sabían, el optimizador del compilador quita los namespace largos y los combierte en alias o simplemente los quita y deja solo el nombre del tipo exacto sin especificar todas las partes del namespace.&lt;br /&gt;&lt;br /&gt;2º) Como mencioné anteriormente, muchos programadores piensan que usar var no es eficiente para el producto final que entregamos al cliente; está afirmación es falsa, porque &lt;u style="color: blue;"&gt;el compilador se encarga de inferir los tipos de datos donde existe var generando un ensamblado en donde reemplaza las palabras var por el tipo que se le está asignando a la variable. Es decir, los ensamblados generados son iguales si nosotros declaramos explícitamente o implícitamente las variables&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Veamos éste sencillo ejemplo donde se declara una variable usando var.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zgG5Lg40Gps/TVbJih_qbBI/AAAAAAAAAEA/KT4ekAMPxgo/s1600/2011-02-12+09+53+58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-zgG5Lg40Gps/TVbJih_qbBI/AAAAAAAAAEA/KT4ekAMPxgo/s1600/2011-02-12+09+53+58.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ahora vean el código des-ensamblado, donde se observa que el compilador dedujo el tipo de datos, en éste caso es int.&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/-W3RUJCWaMdw/TVbbbN3T0VI/AAAAAAAAAEE/rorW-ftSW-E/s1600/2011-02-12+11+11+22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://4.bp.blogspot.com/-W3RUJCWaMdw/TVbbbN3T0VI/AAAAAAAAAEE/rorW-ftSW-E/s400/2011-02-12+11+11+22.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Igualmente en el código MSIL (Microsoft Intermediate Language) tenemos que el tipo de datos para la variable "i" es int:&lt;br /&gt;&lt;br /&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;/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;/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;/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;/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;/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;/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;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-g2fEjX4lioA/TVbb7qy827I/AAAAAAAAAEI/0T573Dn_0xU/s1600/2011-02-12+11+12+44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="295" src="http://2.bp.blogspot.com/-g2fEjX4lioA/TVbb7qy827I/AAAAAAAAAEI/0T573Dn_0xU/s400/2011-02-12+11+12+44.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Por cierto en Visual Basic .Net, el equivalente de var es la palabra reservada Dim, por ejemplo: Dim miVariable = 5 * 5.&lt;br /&gt;&lt;br /&gt;Referencia:&lt;br /&gt;&lt;br /&gt;El excelente libro que leí hace mucho tiempo: LINQ IN ACTION de Fabrice Marguerie, Steve Eichert y Jim Wooley.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5457263908548240561?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5457263908548240561/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5457263908548240561&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5457263908548240561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5457263908548240561'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/02/net-porque-es-mejor-usar-la-palabra.html' title='.Net 3.0: ¿Vale la pena usar la palabra reservada var?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-zgG5Lg40Gps/TVbJih_qbBI/AAAAAAAAAEA/KT4ekAMPxgo/s72-c/2011-02-12+09+53+58.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4925015849562134198</id><published>2011-01-25T00:17:00.000-06:00</published><updated>2011-01-25T00:17:39.838-06:00</updated><title type='text'>WCF: Problemas con WCF?</title><content type='html'>Me estaba apareciendo el siguiente error y luego de una hora para variar y después de googlear un rato, la solución era ni más ni menos que actualizar la referencia del WCF en el proyecto. (En el directorio Services References seleccionar el WCF que se está trabajando, luego sacar el menú contextual de ese archivo y seleccionar Update Service References).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A continuación el error que aparecía&lt;/b&gt; (encontré cientos de soluciones pero ninguna funcionó, hasta que se me ocurrió actualizar la referencia del WCF, jajajaja):&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter. Expecting state Element Encountered Text  with name '', namespace ''.'.  Please see InnerException for more details.&lt;/div&gt;&lt;div style="color: #cc0000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #cc0000;"&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/2047999072384010161-4925015849562134198?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4925015849562134198/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4925015849562134198&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4925015849562134198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4925015849562134198'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/01/wcf-problemas-con-wcf.html' title='WCF: Problemas con WCF?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3344261191520886532</id><published>2011-01-04T11:49:00.001-06:00</published><updated>2011-01-04T11:49:43.447-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='días'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='mes'/><title type='text'>SQL SERVER: Cantidad de días en un mes</title><content type='html'>La siguiente consulta devuelve la cantidad de días que tiene un mes de acuerdo al número de mes que le pasemos como parámetro:&lt;br /&gt;&lt;br /&gt;declare @mes int&lt;br /&gt;set @mes = 2&lt;br /&gt;select day(dateadd(day,-1,left(convert(varchar(8),dateadd(month,@mes,getdate()),112),6)+'01'))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3344261191520886532?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3344261191520886532/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3344261191520886532&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3344261191520886532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3344261191520886532'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2011/01/sql-server-cantidad-de-dias-de-un-mes.html' title='SQL SERVER: Cantidad de días en un mes'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7713917576347951786</id><published>2010-12-29T13:05:00.001-06:00</published><updated>2010-12-29T13:30:16.850-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xmlhttprequest'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Ajax: Especificación XMLHttpRequest</title><content type='html'>Documentación del estandar hecho por la W3C para &lt;a href="http://www.w3.org/TR/XMLHttpRequest/"&gt;XMLHttpRequest&amp;nbsp;Level 3.&lt;/a&gt; Level 3 es la propuesta final, la propuesta Level 2 la encontramos en &lt;a href="http://www.w3.org/TR/XMLHttpRequest2/"&gt;XmlHttpRequest Level 2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;XMLHttpRequest es la interfaz para poder realizar peticiones a los servidores web con el protocolo HTTP o HTTPS en forma síncrona o asíncrona. Como bien se sabe, XmlHttpRequest es el objeto principal en los navegadores para implementar la tecnología Ajax.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7713917576347951786?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7713917576347951786/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7713917576347951786&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7713917576347951786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7713917576347951786'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/12/ajax-especificacion-xmlhttprequest.html' title='Ajax: Especificación XMLHttpRequest'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-185096683877000849</id><published>2010-11-19T00:26:00.010-06:00</published><updated>2011-01-03T01:25:25.978-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='sketchables'/><title type='text'>Silverlight: Enlaces de ayuda para Silverlight y SketchFlow</title><content type='html'>Ahora que tengo que usar Silverlight y Silverlight Sketchflow, me he dado la tarea de investigar un poco y poner como siempre los links de las páginas que me han ayudado a ganar en conocimiento:&lt;br /&gt;&lt;br /&gt;1) Ejemplo Online sobre Sketckflow por: &lt;a href="http://bachelorthesis.zdechovan.com/demoapp/sketchflow/"&gt;Lukas Zdechovan&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) No hay quite!, en mi segundo día con Silverlight SketchFlow, ya me estaba quejando que no tenemos por lo menos un Grid para poner en las escenas. La solución la tiene Philipp Sumi con su &lt;span style="color: black;"&gt;&lt;a href="http://www.hardcodet.net/2010/05/announcing-sketchables"&gt;Sketchables Framework&lt;/a&gt;&lt;/span&gt; que llega a complementar el set de controles entre ellos está el que yo andaba buscando. (En otra entrada explicaré como se instala &lt;a href="http://www.hardcodet.net/2010/07/public-sketchables-preview-release"&gt;&lt;span style="color: black;"&gt;Sketchables Add-in&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Una alternativa más rápida para diseñar es Balsamiq Mockups o Pencil. Con respecto a los diseños de prototipos de pantalla conocidos también como Wireframes o&amp;nbsp; Blueprints, se realizan éstos para concentrarse en la estructura del contenido que tendrá el sistema y no en aspectos visuales, considera además, un enfoque en aspectos generales del sistema sin entrar en detalles. De ésta forma los programadores, diseñadores y los clientes pueden entrar en discusión y toma de decisiones más rápido y como resultado beneficioso serán menos cambios a futuro reduciendo costos y tiempo.&lt;br /&gt;&lt;br /&gt;3) Controles para mostrar texto, los tipos de fuentes, controles que no permiten seleccionar el texto, etc. en &lt;a href="http://msdn.microsoft.com/es-es/library/cc189010%28v=vs.95%29.aspx"&gt;Texto y fuentes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Ejemplos donde se demuestra como navegar entre páginas XAML:&lt;br /&gt;- &lt;a href="http://www.longhorncorner.com/UploadFile/nipuntomar/Silverlight209112008012441AM/Silverlight2.aspx"&gt;Ejemplo #1&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=166&amp;AspxAutoDetectCookieSupport=1"&gt;Ejemplo #2&lt;/a&gt;&lt;br /&gt;- Ejemplo #3. &lt;a href="http://www.silverlight.net/learn/videos/silverlight-videos/navigation-framework/"&gt;La forma correcta de navegar entre páginas&lt;/a&gt;. También vale mucho la pena leer &lt;a href="http://www.silverlightshow.net/items/The-Silverlight-3-Navigation-Framework.aspx"&gt;The Silverlight Navigation Framework&lt;/a&gt;&lt;br /&gt;- Ejemplo #4: Otro ejemplo de la forma correcta para &lt;a href="http://www.dotnetspark.com/kb/3211-navigation-framework-silverlight-4.aspx"&gt;navegar entre páginas XAML&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Ejemplo #5: Y sigo jodiendo con el tema sobre la &lt;a href="http://www.c-sharpcorner.com/UploadFile/dpatra/SilverlightNavigationFramework05282009032422AM/SilverlightNavigationFramework.aspx"&gt;forma correcta de navegar entre páginas XAML&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-185096683877000849?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/185096683877000849/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=185096683877000849&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/185096683877000849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/185096683877000849'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/11/silverlight-enlaces-de-ayuda-para.html' title='Silverlight: Enlaces de ayuda para Silverlight y SketchFlow'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2426440425125572005</id><published>2010-11-06T12:31:00.003-06:00</published><updated>2010-11-22T00:36:57.637-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tvtime'/><category scheme='http://www.blogger.com/atom/ns#' term='sonido'/><title type='text'>Ubuntu: Sonido de TvTime no funciona</title><content type='html'>No podía escuchar sonido en TvTime con Ubuntu 10.10, por suerte encontré una solución en los &lt;a href="http://www.ubuntu-es.org/?q=node/92224"&gt;foros de Ubuntu&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lo anterior aplica para capturadoras TV Kworld con chip philips SAA7134/SAA7135HL que es la que tengo en mí máquina.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2426440425125572005?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2426440425125572005/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2426440425125572005&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2426440425125572005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2426440425125572005'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/11/ubuntu-sonido-de-tvtime-no-funciona.html' title='Ubuntu: Sonido de TvTime no funciona'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1225363534842932272</id><published>2010-11-02T22:40:00.002-06:00</published><updated>2011-02-12T14:03:50.506-06:00</updated><title type='text'>Ajax .Net: Web Method no se está ejecutando.</title><content type='html'>Me preguntó un colega de progra si he tenido un error con Ajax cuando ocurre una excepción que dice algo como "Sys.Net.WebServiceFailedException ......". &lt;br /&gt;&lt;br /&gt;Resulta que ese error me a ocurrido más de una vez, jeje!, y por suerte me acuerdo que específicamente para ese mensaje, dicho error ocurre porque no se está controlando la respuesta de una llamada de un "Static Web Server". Los Static Web Server o Static Web Method, son algo muy común en Ajax y ni que decir en los Ajax Control Tool Kit.&lt;br /&gt;&lt;br /&gt;El problema se da cuando se hace clic sobre un botón el cual llama a una función del objeto WebMethods. Resulta que al dar clic sobre el botón se estaría enviando dos órdenes: 1º Un refresh de la página, 2º una llamada a un Web Method. Los dos puntos anteriores provocan el error. La solución es simplemente cancelar la orden del refresh de la página (o del roundtrip). Al cancelar el refresh, el web method hace el viaje de vuelta en forma exitosa.&lt;br /&gt;&lt;br /&gt;Para mayor claridad, recomiendo revisar en el siguiente &lt;a href="http://forums.asp.net/p/1302089/4152273.aspx#4152273"&gt;foro de Ajax .Net&lt;/a&gt;, donde de hecho en Agosto del 2010 puse mi comentario al respecto!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1225363534842932272?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1225363534842932272/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1225363534842932272&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1225363534842932272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1225363534842932272'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/11/ajax-net-web-method-no-se-esta.html' title='Ajax .Net: Web Method no se está ejecutando.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3604843675837302723</id><published>2010-10-31T21:46:00.002-06:00</published><updated>2010-11-21T11:38:15.493-06:00</updated><title type='text'>Inglés: Pasado de los verbos regulares</title><content type='html'>Jeje, ésta entrada nada que ver con la computación, pero lo pongo porque siempre se me olvidan estas reglas del inglés.&lt;br /&gt;&lt;br /&gt;¿Cómo se forma el pasado de los verbos regulares?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)&lt;/b&gt; Los verbos que terminan en vocal "&lt;span style="color: blue;"&gt;e&lt;/span&gt;", agregan "&lt;span style="color: blue;"&gt;d&lt;/span&gt;":&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; live&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp; lived&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; date&amp;nbsp; ==&amp;gt;&amp;nbsp; dated&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hate&amp;nbsp; ==&amp;gt;&amp;nbsp; hated&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2)&lt;/b&gt; Los verbos que terminan en consonante seguida de "y", convierten la "y" en "i" y agregan "ed":&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; try&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp; tried&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dry&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt; dried&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cry &amp;nbsp; &amp;nbsp; ==&amp;gt; cried &lt;br /&gt;&lt;br /&gt;&lt;b&gt;3)&lt;/b&gt; Los verbos que terminan en vocal seguida de consonante que no sea "w" o "y", doblan la consonante y agregan "ed":&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; plan&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp; planned&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; commit&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp; committed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; shop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp; shopped&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4)&lt;/b&gt; El resto de verbos incluyendo los que terminan con "w", agregan "ed":&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fill &amp;nbsp; &amp;nbsp;&amp;nbsp; ==&amp;gt; &amp;nbsp; filled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; serve&amp;nbsp; ==&amp;gt;&amp;nbsp; served&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; smell&amp;nbsp; ==&amp;gt;&amp;nbsp; smelled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; show&amp;nbsp; ==&amp;gt;&amp;nbsp; showed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;Pronunciación:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;1) &lt;/b&gt;Todos los verbos regulares que terminan con: p – k – s – ch – sh – f – x – h, pronuncian ED como “T”. Ejemplos de verbos que suenan con "T" al final: asked, baked, fixed, joked&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) &lt;/b&gt;Todos los verbos regulares que terminan con:  l – v – n – m – r – b – v – g – w – y – z, y sonido vocal, pronuncian la "ED" como "D".Ejemplos: allowed, agreed, appeared, believed, cried, moved, shared.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3)&lt;/b&gt; Todos los verbos regualres que terminan en "T" o "D", pronuncian el "ED" como "ID". Ejemplos: accepted, afforded, ended, invited, painted, planted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Referencias&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://web2.uvcs.uvic.ca/elc/studyzone/330/grammar/pasted.htm"&gt;Reglas Verbos Regulares&lt;/a&gt;&lt;br /&gt;&lt;a href="http://esl.about.com/od/beginnerpronunciation/a/past_pronounce.htm"&gt;Pronunciación de verbos regulares&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www2.udec.cl/~alualem/ingles/lvr.html"&gt;Lista de verbos regulares&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3604843675837302723?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3604843675837302723/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3604843675837302723&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3604843675837302723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3604843675837302723'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/10/ingles-pasado-de-los-verbos-regulares.html' title='Inglés: Pasado de los verbos regulares'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4508434453673736859</id><published>2010-10-30T14:33:00.000-06:00</published><updated>2010-10-30T14:33:04.941-06:00</updated><title type='text'>ASP .NET: iTextSharp no funciona en sitios web en producción</title><content type='html'>iTextSharp es un ensamblado OpenSource para .Net, que permite crear archivos en formato PDF. Muy útil cuando queremos convertir archivos HTML a PDF. Sin embargo existe un problema con la dll en producción. &lt;br /&gt;&lt;br /&gt;El problema es que después de instalar en el servidor de producción, obtenemos el sisguiente error: "That assembly does not allow partially trusted callers"&lt;br /&gt;&lt;br /&gt;La solución es modificar el código fuente de iTextSharp, para que permita ensamblados en modo "Partially Trusted Callers" en lugar de full trust.&lt;br /&gt;&lt;br /&gt;Lo único que se debe hacer es modificar el archivo AssemblyInfo.cs, establecediendo las siguientes líneas de código:&lt;br /&gt;&lt;br /&gt;using System.Security;&lt;br /&gt;using System.Security.Permissions;&lt;br /&gt;&lt;br /&gt;[assembly: AllowPartiallyTrustedCallers]&lt;br /&gt;&lt;br /&gt;Referencia: &lt;a href="http://www.techparadise.gr/2010/08/07/itextsharp-that-assembly-does-not-allow-partially-trusted-callers/"&gt;www.techparadise.gr&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4508434453673736859?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4508434453673736859/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4508434453673736859&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4508434453673736859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4508434453673736859'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/10/asp-net-itextsharp-no-funciona-en.html' title='ASP .NET: iTextSharp no funciona en sitios web en producción'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4963154112391663366</id><published>2010-10-14T21:15:00.002-06:00</published><updated>2010-10-14T21:20:43.836-06:00</updated><title type='text'>BPMN: Notación para el Modelamiento de Proceso de Negocio</title><content type='html'>Una buena explicación sobre la Notación para el Modelamiento de Proceso de Negocio (Business Process Modeling Notation), &lt;a href="http://wiki.bizagi.com/es/index.php?title=BPMN"&gt;aquí&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4963154112391663366?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4963154112391663366/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4963154112391663366&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4963154112391663366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4963154112391663366'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/10/bpmn-notacion-para-el-modelamiento-de.html' title='BPMN: Notación para el Modelamiento de Proceso de Negocio'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7992355677821495563</id><published>2010-09-26T15:15:00.020-06:00</published><updated>2010-09-26T16:50:17.722-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foreach'/><category scheme='http://www.blogger.com/atom/ns#' term='cascadingdropdownnamevalue'/><category scheme='http://www.blogger.com/atom/ns#' term='cascadingdropdown'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Linq: Usar operadores de Linq en lugar de un foreach</title><content type='html'>Éste es un caso en el que quería llenar un DropDownList utilizando el CascadingDropDown. En el método del WebService, quise usar el método AddRange, y así evitar tener que implementar un foreach para iterar por la colección de filas de un DataTable.&lt;br /&gt;&lt;br /&gt;Por ejemplo, tengo un método que se llama Clientes.Listar(), el cual devuelve la lista de filas en un objeto DataTable, entonces para llenar al DropDownList tengo que usar un foreach para recuperar el valor que se va a mostrar en el DropDow y el valor llave que se utilizaría para saber cuál item se seleccionó. Utilizando el método AddRange del tipo List y las técnicas de Linq, tenemos el siguiente código de ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div id="divForeach" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',670)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;--------------------&lt;br /&gt;List&lt;cascadingdropdownnamevalue&gt; valores = new List&lt;cascadingdropdownnamevalue&gt;(); &lt;/cascadingdropdownnamevalue&gt;&lt;/cascadingdropdownnamevalue&gt;&lt;br /&gt;Clientes clientes = new Clientes();&lt;br /&gt;&lt;br /&gt;valores.AddRange&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from fila in clientes.Listar().AsEnumerable()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new CascadingDropDownNameValue(fila["NOMBRE"].ToString(), fila["CODIGO"].ToString())&lt;br /&gt;);&lt;br /&gt;return values.ToArray();&lt;br /&gt;&lt;br /&gt;--------------------&lt;br /&gt;&lt;/div&gt;Otra alternativa de Linq pero expresada en secuencia de operadores de Linq sería de la siguiente forma:&lt;br /&gt;&lt;br /&gt;&lt;div id="divForeach2" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',510)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;--------------------&lt;br /&gt;&lt;pre&gt;values.AddRange(clientes.Listar().AsEnumerable().Select(&lt;br /&gt;fila =&amp;gt; new CascadingDropDownNameValue&lt;br /&gt;(&lt;br /&gt;    fila["NOMBRE"].ToString(),&lt;br /&gt;    fila["CODIGO"].ToString()&lt;br /&gt;)));&lt;br /&gt;&lt;/pre&gt;--------------------&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Cualquiera de los dos casos anteriores sirven para reemplazar el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;div id="divForeach3" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',660)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;foreach (DataRow fila in clientes.Listar().Rows)&lt;br /&gt;{&lt;br /&gt;     values.Add(new CascadingDropDownNameValue(fila["NOMBRE"].ToString(),   &lt;br /&gt;     fila["CODIGO"].ToString()));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;La diferencia, entre éste foreach y el uso de Linq es que Linq me permite hacer muchas cosas en una sola línea de código, en el peor de los casos tengo que agregar otras líneas, pero con las técnicas tradicionales, en lo personal, el código se vuelve para mí muy tedioso y en ocasiones dificil de entender.&lt;br /&gt;&lt;br /&gt;Algunos dicen que Linq es más rápido, otros dicen que no siempre es el más rápido, independientemente de la eficiencia con que resuelva Linq el problema, prefiero Linq porque me permite codificar mejor casos difíciles donde tengo que dar tratamiento a por ejemplo muchos campos de una tabla o muchos datos de un arreglo, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7992355677821495563?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7992355677821495563/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7992355677821495563&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7992355677821495563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7992355677821495563'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/09/linq-usar-operadores-de-linq-en-lugar.html' title='Linq: Usar operadores de Linq en lugar de un foreach'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4192216184422856650</id><published>2010-09-19T16:18:00.014-06:00</published><updated>2010-09-20T22:21:19.934-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buscador'/><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='personalizar'/><category scheme='http://www.blogger.com/atom/ns#' term='personalizado'/><title type='text'>Blogger: Crear un buscador personalizado para mí blog.</title><content type='html'>Ahora que se me ocurrió darle un uso al nombre de dominio que compré hace semanas (mi nombre de dominio ahora es &lt;span style="color: blue;"&gt;www.leonArtSoftware.info&lt;/span&gt;) por tan solo $1.97 (jeje!, que barato), me puse a investigar si es posible asociar un DNS a mi blog; por suerte sí se puede, de hecho es más fácil de lo que uno se lo puede imaginar. Es tan fácil que ni siquiera lo voy a explicar aquí, pero si alguien requiere un empujón, con gusto!&lt;br /&gt;&lt;br /&gt;Ahora bien, la razón de ésta entrada, es porque me dí cuenta que el buscador de mí blog no funciona. Eso ocurrió definitivamente por el cambio de nombre de dominio que le asigné.Gogleando un poco, encontré algo muy interesante; resulta que Google permite crear buscadores personalizados (nada de extrañar del famoso Google).&lt;br /&gt;&lt;br /&gt;Ni lerdo ni perezoso me puse a travesear esa opción, y terminé creando mi propio buscador el cual es posible agregarlo a cualquier sitio web; obviamente, el código del buscador lo puse en mi blog al lado derecho del sitio.&lt;br /&gt;&lt;br /&gt;Un &lt;span style="color: red;"&gt;inconveniente &lt;/span&gt;que encontré, es que la primera vez que usé las opciones para configurar el buscador, no me funcionó. El problema era la URL que le estaba pasando. Yo estaba poniendo &lt;b&gt;&lt;span style="color: #cc0000;"&gt;www.leonArtSoftware.info&lt;/span&gt;&lt;/b&gt;, pero luego de leer un rato las instrucciones, la URL debería ser &lt;b&gt;&lt;span style="color: blue;"&gt;http://www.leosuaar.blogspot.com/*&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Exacto, tenía que usar la URL original de mi blog!, por eso el buscador personalizado no funcionaba.&lt;br /&gt;&lt;br /&gt;Si alguien quiere crear su propio buscador de google personalizado, puede visitar:&amp;nbsp;&lt;a href="http://www.google.es/cse/"&gt;http://www.google.es/cse/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4192216184422856650?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4192216184422856650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4192216184422856650&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4192216184422856650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4192216184422856650'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/09/blogger-crear-un-buscador-personalizado.html' title='Blogger: Crear un buscador personalizado para mí blog.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8716821887284541319</id><published>2010-09-12T23:47:00.005-06:00</published><updated>2010-09-19T14:38:46.806-06:00</updated><title type='text'>Asp.Net: Valor enviado desde servidor no se actualiza con Javascript</title><content type='html'>Existe un caso especial en el que deseamos actualizar un valor, por ejemplo un contador de filas de un GridView, el cual está dentro de un UpdatePanel. Para actualizar el valor, se decide registrar una variable dinámica la cual se asocia al objeto window.document, quedando en la página del cliente de la siguiente forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-size: 10px;"&gt;&amp;lt;script type="text/javascript"&amp;gt;//&amp;lt;![CDATA[&lt;br /&gt;document.TotalRows='5';//]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para registrar una variable al objeto document de Javascript desde el Code-Behind  con C#, se hace de la siguiente forma:&lt;br /&gt;&lt;br /&gt;if (!ClientScript.IsClientScriptBlockRegistered("total"))        &lt;br /&gt;Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "total", &lt;br /&gt;"document.TotalDeFilas ='" + gridView.Rows.Count + "';", true);&lt;br /&gt;&lt;br /&gt;En el caso que estaba resolviendo, el código anterior lo coloqué en el evento Page_Load() de una página *.aspx.&lt;br /&gt;&lt;br /&gt;Ahora bien, cada vez que un usuario agregue un registro nuevo o elimine un registro, el valor debe cambiar en la página. Si utilizamos la siguiente línea de código, nos daremos cuenta que &lt;b&gt;no va a funcionar&lt;/b&gt;, aunque la línea de código éste buena:&lt;br /&gt;&lt;br /&gt;ClientScript.RegisterClientScriptBlock(this.GetType(), "total", "document.TotalDeFilas ='" + gridView.Rows.Count.ToString() + "';", true);&lt;br /&gt;&lt;br /&gt;¿Por qué no se actualiza el valor en la página después de por ejemplo eliminar un registro?&lt;br /&gt;&lt;br /&gt;Muy simple (aunque me tomo como tres horas darme cuenta, jaja!), eso ocurre porque el GridView está dentro del UpdatePanel. Entonces para solucionarlo; es decir, para actualizar el valor, hay que usar el objeto ScriptManager en lugar del objeto ClientScriptManager. La línea de código sería entonces:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ScriptManager.RegisterClientScriptBlock(&lt;/b&gt;this, this.GetType(), "total", "document.TotalDeFilas ='" + GridView.Rows.Count + "';", true);&lt;br /&gt;&lt;br /&gt;Lo que vale la pena tener en mente es que si uno desea actualizar valores de objetos que están dentro de un UpdatePanel usando javascript, lo mejor es usar ScriptManager en el CodeBehind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8716821887284541319?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8716821887284541319/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8716821887284541319&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8716821887284541319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8716821887284541319'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/09/aspnet-valor-enviado-desde-servidor-no.html' title='Asp.Net: Valor enviado desde servidor no se actualiza con Javascript'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-628719325001909998</id><published>2010-09-11T16:37:00.003-06:00</published><updated>2010-09-19T14:42:56.028-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='infragistic'/><category scheme='http://www.blogger.com/atom/ns#' term='ultrawebgrid'/><title type='text'>Infragistic: Formas de seleccionar una  fila en un UltraWebGrid.</title><content type='html'>Algunos ejemplos elementales para trabajar con el control UltraWebGrid de Infragistic:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.aspx?ArticleID=7945"&gt;Ejemplo #1: Colocar una columna de RadioButtons.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://johnllao.wordpress.com/2008/06/24/findcontrol-in-ultrawebgrid/"&gt;Buscar un elemento radioButton y asignarle un función JS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://allfaq.org/forums/t/116234.aspx"&gt;Establecer valores a un DataRow de un DataTable&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://community.infragistics.com/forums/p/14422/53363.aspx#53363"&gt;Obtener la fila seleccionada del UltraWebGrid&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://help.infragistics.com/Help/NetAdvantage/ASPNET/2010.2/CLR4.0/html/WebGrid_Using_the_InitializeRow_Event.html"&gt;El evento InitializeRow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=2529"&gt;Cómo establecer el ancho y alto máximo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codecorner.galanter.net/2010/04/27/create-enhanced-pager-for-infragistics-ultrawebgrid/"&gt;Personalizar el Pager I&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://help.infragistics.com/Help/NetAdvantage/ASPNET/2010.1/CLR3.5/html/Infragistics35.WebUI.UltraWebGrid.v10.1~Infragistics.WebUI.UltraWebGrid.Pager~Pattern.html"&gt;Personalizar el Pager II&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=2528"&gt;Obtener valores de columnas ocultas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codecorner.galanter.net/2010/08/09/ultrawebgrid-highlight-row-on-mouseover-with-selection-enabled/"&gt;Seleccionar fila con el evento OnMouseOver&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-628719325001909998?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/628719325001909998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=628719325001909998&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/628719325001909998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/628719325001909998'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/09/ultrawebgrid-formas-de-seleccionar-una.html' title='Infragistic: Formas de seleccionar una  fila en un UltraWebGrid.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3939533501617860619</id><published>2010-08-09T11:55:00.000-06:00</published><updated>2010-08-09T11:55:55.221-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualizer'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>LINQ: Excelente plug-in para VS 2008+</title><content type='html'>Encontré un excelente plug-in para instalar en Visual Studio 2008 el cual permite visualizar de una forma diferente la cadena que se envía a SQL Server una vez ejecutada la expresión o sentencia de LINQ.&lt;br /&gt;&lt;br /&gt;Si bien en modo de depuración podemos ver la cadena que se envía al SQL Server, con el plugin es posible visualizar la cadena pero además se puede visualizar los datos que vienen de vuelta desde la base de datos.&lt;br /&gt;&lt;br /&gt;Un ejemplo de la nueva ventana de dialogo es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cxUdZdosOJg/TGA_mpaSmOI/AAAAAAAAACc/hv6E8t_B8es/s1600/2010-08-09+10+48+36.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="194" src="http://3.bp.blogspot.com/_cxUdZdosOJg/TGA_mpaSmOI/AAAAAAAAACc/hv6E8t_B8es/s400/2010-08-09+10+48+36.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventana de Linq Visualizer.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Si hacemos clic en "Execute", veremos el resultado que es devuelto desde la base de datos, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cxUdZdosOJg/TGA__hZAPUI/AAAAAAAAACk/9wdt5A-sHHY/s1600/2010-08-09+10+48+36.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="233" src="http://1.bp.blogspot.com/_cxUdZdosOJg/TGA__hZAPUI/AAAAAAAAACk/9wdt5A-sHHY/s400/2010-08-09+10+48+36.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventana con resultados.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;El plugin se llama "Linq to Sql Visualizer" y se puede descargar desde la página del creador en &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx"&gt;linq-to-sql-debug-visualizer&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3939533501617860619?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3939533501617860619/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3939533501617860619&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3939533501617860619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3939533501617860619'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/08/linq-excelente-plug-in-para-vs-2008.html' title='LINQ: Excelente plug-in para VS 2008+'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cxUdZdosOJg/TGA_mpaSmOI/AAAAAAAAACc/hv6E8t_B8es/s72-c/2010-08-09+10+48+36.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5500393035488439197</id><published>2010-07-04T01:11:00.000-06:00</published><updated>2010-07-04T02:51:24.938-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='botones'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 10.04: ¿Cómo posicionar los botones de la barra de título de la ventana?</title><content type='html'>Como es sabido, en Ubuntu 10.04, todas las ventanas muestran los botones de configuración de tamaño de la ventana en el lado izquierdo de la barra de título. Este cambio se me hace totalmente incómodo y por suerte la forma para restaurarlo es muy fácil!&lt;br /&gt;&lt;br /&gt;Los pasos son los siguientes (forma para expertos):&lt;br /&gt;&lt;br /&gt;1- Alt+F2 para abrir el cuadro de diálogo para ejecutar aplicaciones.&lt;br /&gt;2- Digitar gconf-editor&lt;br /&gt;3- Ir a /apps/metacity/general&lt;br /&gt;4- En el lado derecho buscar button_layout&lt;br /&gt;5- Modificar el valor de la cadena button_layout de la siguiente forma&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); width: 200px; text-align: center; margin: 0pt auto; display: block;"&gt;:minimize,maximize,close&lt;/span&gt;&lt;br /&gt;Notar que los dos puntos ahora se ponen en el lado izquierdo de la cadena y la palabra &lt;span style="color: rgb(51, 51, 255);"&gt;close&lt;/span&gt; se mueve al final de la cadena.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La otra alternativa pero mucho más fácil es utilizando la herramienta &lt;span style="color: rgb(204, 0, 0);"&gt;Ubuntu Tweak&lt;/span&gt;, y sinceramente es muy buena. Permite configurar infinidad de cosas y preferencias de Linux de forma fácil y que no son visibles para la mayoría de los usuarios. Por consiguiente el uso de comandos queda relegado! Además la aplicación permite la actualización o descarga de nuevos programas.&lt;br /&gt;&lt;br /&gt;Para restaurar el posicionamiento de los botones de la barra de título, simplemente, en Ubuntu Tweak, vayan a la sección Escritorio y buscan&lt;span style="color: rgb(153, 0, 0);"&gt; Configuración de Gestor de Ventanas&lt;/span&gt; y en el lado derecho buscan &lt;span style="color: rgb(153, 0, 0);"&gt;Formato de botones en la barra de título de la ventana&lt;/span&gt;. Muestran las opciones &lt;span style="color: rgb(51, 51, 255);"&gt;Izquierdo&lt;/span&gt; - &lt;span style="color: rgb(51, 51, 255);"&gt;Derecho&lt;/span&gt;. Simplemente se escoge derecho y listo.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cxUdZdosOJg/TDA-Jl9RsZI/AAAAAAAAACU/LMs0u6rD4YE/s1600/Pantallazo.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 152px;" src="http://2.bp.blogspot.com/_cxUdZdosOJg/TDA-Jl9RsZI/AAAAAAAAACU/LMs0u6rD4YE/s200/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5489956280293503378" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5500393035488439197?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5500393035488439197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5500393035488439197&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5500393035488439197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5500393035488439197'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/07/ubuntu-1004-como-posicionar-los-botones.html' title='Ubuntu 10.04: ¿Cómo posicionar los botones de la barra de título de la ventana?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cxUdZdosOJg/TDA-Jl9RsZI/AAAAAAAAACU/LMs0u6rD4YE/s72-c/Pantallazo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6561229544508892501</id><published>2010-06-04T21:07:00.001-06:00</published><updated>2010-06-04T21:08:30.171-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS: Transparencias con filter en IE6</title><content type='html'>Excelente explicación sobre el uso de la palabra reservada filter en&lt;br /&gt;&lt;a href="http://reference.sitepoint.com/css/filter"&gt;reference.sitepoint.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6561229544508892501?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6561229544508892501/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6561229544508892501&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6561229544508892501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6561229544508892501'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/06/css-transparencias-con-filter-en-ie6.html' title='CSS: Transparencias con filter en IE6'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1250606691844015580</id><published>2010-05-16T18:01:00.000-06:00</published><updated>2010-05-16T18:15:15.378-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='envío'/><category scheme='http://www.blogger.com/atom/ns#' term='thunderbird'/><category scheme='http://www.blogger.com/atom/ns#' term='Gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='correos'/><title type='text'>ASP .Net: No se ven las imágenes en ThunderBird</title><content type='html'>En las pruebas de envío de correos con ASP.NET y Visual Basic, ocurre que los mensajes se ven como se espera en GMail, Hotmail y Outlook; funciona perfectamente, sin embargo para ThunderBird el resultado es otro. Las imágenes no se observan y no es por configuración de las opciones de la aplicación.&lt;br /&gt;&lt;br /&gt;Solución encontrada:&lt;br /&gt;Había que especificar qué tipo de MIME se usa para cada imagen incrustada en el mensaje de correo con la siguiente línea de código:&lt;br /&gt;&lt;br /&gt;Dim imageResource1 As LinkedResource = New System.Net.Mail.LinkedResource(Server.MapPath("imagenes/imagen1.jpg"), MediaTypeNames.Image.Jpeg)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1250606691844015580?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1250606691844015580/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1250606691844015580&amp;isPopup=true' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1250606691844015580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1250606691844015580'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/asp-net-no-se-ven-las-imagenes-en.html' title='ASP .Net: No se ven las imágenes en ThunderBird'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1831987487860433698</id><published>2010-05-16T16:29:00.000-06:00</published><updated>2010-08-01T06:43:37.534-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='correo'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='Gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='correos'/><title type='text'>Asp. Net: Tarda en llegar el mensaje de correo de GMail</title><content type='html'>Estuve averiguando por qué al enviar un mensaje de correo usando código Visual Basic .Net con ASP.Net y noté que al usar como servidor de correos una cuenta de GMail, resulta que éste ralentiza en gran medida la entrega del mensaje a su destinatario.&lt;br /&gt;&lt;br /&gt;Y ya averigüé por qué ocurre!. El problema es que al incluir direcciones URL en el mensaje, parece que GMail analiza si esa URL existe y quién sabe qué más cosas hace; el punto es que al quitar la URL del mensaje, la entrega al destinatario se da en un tiempo muy bueno.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1831987487860433698?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1831987487860433698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1831987487860433698&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1831987487860433698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1831987487860433698'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/asp-net-tarde-en-llegar-el-mensaje-de.html' title='Asp. Net: Tarda en llegar el mensaje de correo de GMail'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7037442488868646535</id><published>2010-05-16T00:12:00.000-06:00</published><updated>2010-08-01T06:44:49.078-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><title type='text'>Asp .Net: Mantener la sessión de usuario activa.</title><content type='html'>¿Por qué se pierde la sesión de usuario y cómo lograr que permanezca todo el tiempo hasta que se cierre la sesión?&lt;br /&gt;&lt;br /&gt;En el siguiente &lt;a href="http://www.primaryobjects.com/CMS/Article86.aspx"&gt;link&lt;/a&gt; encontrarán las respuestas. Sin embargo, yo implementé otra solución con ayuda de "Web Service" estático.&lt;br /&gt;&lt;br /&gt;Más referencias:&lt;br /&gt;Ésta es interesante porque lo resuelve con un &lt;a href="http://stackoverflow.com/questions/1431733/keeping-asp-net-session-open-alive"&gt;HttpHandler&lt;/a&gt;&lt;br /&gt;Ésta otra solución pero con &lt;a href="http://naspinski.net/post/Automatically-refresh-your-users-Session-behind-the-scenes-using-jQuery-and-AspNet.aspx"&gt;JQuery&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7037442488868646535?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7037442488868646535/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7037442488868646535&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7037442488868646535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7037442488868646535'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/asp-net-mantener-la-session-de-usuario.html' title='Asp .Net: Mantener la sessión de usuario activa.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8646643127152804176</id><published>2010-05-08T21:24:00.001-06:00</published><updated>2010-05-08T21:25:13.961-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perfomance'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='rendimiento'/><title type='text'>Ajax: Mejorando el rendimiento de Ajax .Net</title><content type='html'>Buenos tips para mejorar el rendimiento de Ajax en &lt;a href="http://lancezhang.wordpress.com/2008/11/15/aspnet-ajax-performance/"&gt;http://lancezhang.wordpress.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8646643127152804176?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8646643127152804176/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8646643127152804176&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8646643127152804176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8646643127152804176'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/ajax-mejorando-el-rendimiento-de-ajax.html' title='Ajax: Mejorando el rendimiento de Ajax .Net'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6985025562336045815</id><published>2010-05-08T16:07:00.000-06:00</published><updated>2010-05-08T16:08:56.709-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='service pack'/><category scheme='http://www.blogger.com/atom/ns#' term='sp1'/><title type='text'>Ajax.Net</title><content type='html'>Service Pack 1 para Ajax .Net FrameWork 3.5:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;displaylang=en"&gt;&lt;br /&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;displaylang=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6985025562336045815?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6985025562336045815/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6985025562336045815&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6985025562336045815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6985025562336045815'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/ajaxnet.html' title='Ajax.Net'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8495491409962106718</id><published>2010-05-01T20:48:00.000-06:00</published><updated>2010-08-01T06:33:12.605-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archivos'/><category scheme='http://www.blogger.com/atom/ns#' term='poner css sin usar archivo *.css'/><category scheme='http://www.blogger.com/atom/ns#' term='tamaño'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='web config'/><title type='text'>Asp .Net: Limitar el tamaño de la carga de un archivo</title><content type='html'>En la sección System.Web poner lo siguiente:&lt;br /&gt;&lt;br /&gt;  &amp;lt;httpruntime maxrequestlength="10000"&amp;gt;&amp;lt;/httpruntime&amp;gt;&lt;br /&gt;&lt;br /&gt;Estableciendo la regla anterior en el web config de Asp.Net, se estaría indicando que el servidor web solo permite al usuario cargar archivos con una cantidad máxima aproximada de ~10 MB.&lt;br /&gt;&lt;br /&gt;El tamaño predeterminado es de 4 MB exactos, osea 4096 KB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Referencia: &lt;a href="http://astrayalien.blogspot.com/"&gt;astrayalien&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8495491409962106718?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8495491409962106718/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8495491409962106718&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8495491409962106718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8495491409962106718'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/asp-net-limitar-el-tamano-de-la-carga.html' title='Asp .Net: Limitar el tamaño de la carga de un archivo'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2312853120644642011</id><published>2010-05-01T18:23:00.001-06:00</published><updated>2010-09-18T14:52:19.613-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio 2008'/><title type='text'>Asp.Net: Error con VJSharpCodeProvider y AjaxControlToolkit Resource</title><content type='html'>Al ejecutar una aplicación web aparece éste error:&lt;br /&gt;&lt;br /&gt;Error al cargar el ensamblado con el nombre para mostrar 'AjaxControlToolkit.resources' en el contexto de enlace 'LoadFrom' de AppDomain con ID 2. Error debido a: System.IO.FileLoadException: No se puede cargar el archivo o ensamblado 'AjaxControlToolkit.resources, Version=3.0.30512.20315, Culture=es, PublicKeyToken=28f01b0e84b6d53e' ni una de sus dependencias. La definición del manifiesto del ensamblado no coincide con la referencia al ensamblado. (Excepción de HRESULT: 0x80131040)&lt;br /&gt;Nombre de archivo: 'AjaxControlToolkit.resources, Version=3.0.30512.20315, Culture=es, PublicKeyToken=28f01b0e84b6d53e'&lt;br /&gt;......&lt;br /&gt;&lt;br /&gt;Y también éste error:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The assembly with display name&lt;/i&gt; '&lt;i&gt;VJSharpCodeProvider&lt;/i&gt;' &lt;i&gt;failed  to load in the '&lt;/i&gt;&lt;br /&gt;&lt;div class="s"&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;i&gt;LoadFrom&lt;/i&gt;' &lt;i&gt;binding context of the  AppDomain with ID 2. The cause of the failure was: System&lt;/i&gt;.&lt;i&gt;IO&lt;/i&gt;.&lt;i&gt;FileNotFoundException&lt;/i&gt;:  &lt;i&gt;Could not load file or assembly&lt;/i&gt; &lt;b&gt;...&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;Para solucionar el primer caso, lo que hice fue descargar el código fuente de la versión&lt;span class="CodePlexPageHeader" id="TitleLabel"&gt; 30512 de Ajax, que en lo personal, estoy seguro que es la más estable que he utilizado. Procedí a compilarla, luego tomé el ensamblado de la carpeta Release, también copie el archivo AjaxControlToolkit.pdb para depuración. Los dos archivos los pegué en la carpeta Bin de mí proyecto ASP.Net. Desde Visual Studio 2008, y estando en la carpeta Bin, saco el menú contextual y selecciono "Agregar Referencia ..." y luego busco el ensamblado.&lt;br /&gt;&lt;br /&gt;Para el segundo caso, resulta que se corrige instalando "&lt;/span&gt;Microsoft Visual J# Version 2.0 Redistributable Package" el cual se puede descargar desde: &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=F72C74B3-ED0E-4AF8-AE63-2F0E42501BE1&amp;amp;displaylang=en"&gt;http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=F72C74B3-ED0E-4AF8-AE63-2F0E42501BE1&amp;amp;displaylang=en&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2312853120644642011?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2312853120644642011/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2312853120644642011&amp;isPopup=true' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2312853120644642011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2312853120644642011'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/05/aspnet-error-con-vjsharpcodeprovider-y.html' title='Asp.Net: Error con VJSharpCodeProvider y AjaxControlToolkit Resource'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4135224419647607407</id><published>2010-03-21T17:52:00.000-06:00</published><updated>2010-03-21T17:55:25.806-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Asp.Net: Insertar un archivo CSS en el HEAD</title><content type='html'>Alternativa para insertar una hoja de estilos en el HEAD de la página:&lt;br /&gt;&lt;br /&gt;Dim Browser As HttpBrowserCapabilities = Request.Browser&lt;br /&gt;If Browser.Type = "IE6" Then&lt;br /&gt;  Dim litIE6 As New Literal&lt;br /&gt;  litIE6.Text = "&amp;lt;link rel='stylesheet' type='text/css' href='Recursos/css/minaetStyle_ie6.css' /&amp;gt;"&lt;br /&gt;  Page.Header.Controls.Add(litIE6)&lt;br /&gt;End If&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4135224419647607407?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4135224419647607407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4135224419647607407&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4135224419647607407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4135224419647607407'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/03/aspnet-insertar-un-archivo-css-en-el.html' title='Asp.Net: Insertar un archivo CSS en el HEAD'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4475601809066688401</id><published>2010-03-20T21:23:00.000-06:00</published><updated>2010-03-20T21:28:20.960-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Asp.Net: Recuperar elementos del HEAD.</title><content type='html'>&lt;span style="font-family: monospace;"&gt;&lt;div&gt;&lt;br /&gt;Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)&lt;br /&gt;        Dim ctl As Control&lt;br /&gt;        For Each ctl In Page.Header.Controls&lt;br /&gt;&lt;br /&gt;            If TypeOf (ctl) Is HtmlLink Then&lt;br /&gt;                Dim linkTag As HtmlLink = CType(ctl, HtmlLink)&lt;br /&gt;                If (linkTag IsNot Nothing) And linkTag.Href.StartsWith("~/") Then&lt;br /&gt;                    If Request.ApplicationPath = "/" Then&lt;br /&gt;                        linkTag.Href = linkTag.Href.Substring(1)&lt;br /&gt;                    Else&lt;br /&gt;                        linkTag.Href = Request.ApplicationPath &amp;amp; "/" &amp;amp; _&lt;br /&gt;                        linkTag.Href.Substring("~/".Length)&lt;br /&gt;                    End If&lt;br /&gt;                End If&lt;br /&gt;            End If&lt;br /&gt;        Next&lt;br /&gt;    End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Referencia:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.mindfly.com/blog/post/2007/09/02/Correct-the-stylesheet-link-tag-for-ASPNET-20-Themes.aspx"&gt;www.mindfly.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4475601809066688401?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4475601809066688401/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4475601809066688401&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4475601809066688401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4475601809066688401'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/03/aspnet-recuperar-elementos-del-head.html' title='Asp.Net: Recuperar elementos del HEAD.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1384425264386944217</id><published>2010-03-07T17:50:00.000-06:00</published><updated>2010-08-01T06:47:37.246-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desencriptar'/><category scheme='http://www.blogger.com/atom/ns#' term='encriptar'/><title type='text'>Asp.Net:Encriptar cadena de conexión</title><content type='html'>Con las siguientes líneas de comando se puede hasta desencriptar la cadena de conexión que reside en el web.config de la aplicación web:&lt;br /&gt;&lt;br /&gt;Ir a aspnet_regiis:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para encriptar:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;aspnet_regiis.exe -pef "connectionStrings" "c:\Proyectos\&lt;span style="color: rgb(51, 51, 255);"&gt;PruebaEncriptacion&lt;/span&gt;" -prov "DataProtectionConfigurationProvider"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para desencriptar&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;aspnet_regiis.exe -pdf "connectionStrings" "&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;c:\Proyectos\&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PruebaEncriptacion&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;"&lt;br /&gt;&lt;br /&gt;Donde dice &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PruebaEncriptacion&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;, es el nombre del proyecto web.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1384425264386944217?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1384425264386944217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1384425264386944217&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1384425264386944217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1384425264386944217'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/03/aspnetencriptar-cadena-de-conexion.html' title='Asp.Net:Encriptar cadena de conexión'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3722261377457071466</id><published>2010-02-28T19:04:00.000-06:00</published><updated>2010-02-28T19:24:41.691-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='inyectar'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Asp.Net: Otro ejemplo para inyectar javascript.</title><content type='html'>Dim script As String = "function Update_Bitacora()&lt;br /&gt;{Scroll_Pais();__doPostBack('ctl00$ContentPlaceHolder1$gridBitacora','Modificar$0')}"&lt;br /&gt;ClientScript.RegisterStartupScript(Me.GetType(), "UpdatePanel2", script, True)&lt;br /&gt;&lt;br /&gt;El botón está oculto en la página y una ventana que se abre con &lt;span style="font-weight: bold;"&gt;window.open&lt;/span&gt; tiene un botón que llama a la función Update_Paises de la forma: &lt;span style="font-weight: bold;"&gt;window.opener.Update_Bitacora&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La sub-ventana tiene un botón "Modificar", éste realiza una operación sobre una base de datos. Una vez realizada dicha operación inyecta código javascript el cual se encarga de llamar a la función Update_Bitacora() y además despues de actualizar la bitácora, se cierra a si misma. La bitácora es un listado que está en la ventana padre.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Un punto importante es enviar el parámetro 'Modificar$0' ya que de lo contrario el evento RowCommand del GridView, no se ejecutará de ninguna manera.&lt;/span&gt; No es estricto enviar $0 y además se puede personalizar en caso de que se ocupe enviar otro argumento en vez de un cero.&lt;br /&gt;&lt;br /&gt;Otra alternativa es poner un botón oculto y crear un procedimeinto con el siguiente código:&lt;br /&gt;&lt;br /&gt;Dim btnControl As New PostBackOptions(btn)&lt;br /&gt;Page.ClientScript.RegisterForEventValidation(btnControl)&lt;br /&gt;Dim script As String = Page.ClientScript.GetPostBackEventReference(btnControl)&lt;br /&gt;ClientScript.RegisterStartupScript(Me.GetType(), "UpdatePanel1", "function Update_Bitacora(){script}", True)&lt;br /&gt;&lt;br /&gt;Posteriorente en la ventana hija se llama a la función que inserta el código anterior.&lt;br /&gt;&lt;br /&gt;Referencias: &lt;a href="http://aspadvice.com/blogs/joteke/archive/2005/06/15/2340.aspx"&gt;aspadvice.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3722261377457071466?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3722261377457071466/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3722261377457071466&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3722261377457071466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3722261377457071466'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/aspnet-otro-ejemplo-para-inyectar.html' title='Asp.Net: Otro ejemplo para inyectar javascript.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8018068939862222997</id><published>2010-02-21T11:41:00.000-06:00</published><updated>2010-02-21T13:44:38.717-06:00</updated><title type='text'>Asp .Net: ¿Por qué desaparece una columna de un GridView después de un PostBack?</title><content type='html'>Existe un grid con una columna X que en cada celda de esa misma columna presenta un link el cual realiza una operación personalizada. El problema es que después de hacer clic, dicha columna desaparecía. En el code-behind se hacía el refresh del grid, pero aún así, la columna desaparecía.&lt;br /&gt;&lt;br /&gt;Solución: El problema estaba en la forma como se declaró la columna para el elemento Column del GridView en el código XHTML. La línea incorrecta es como la siguiente:&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:HyperLinkField DataTextField="codigo"&amp;gt;&lt;br /&gt;&lt;br /&gt;La forma correcta es:&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:BoundField DataField="CODIGO"&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8018068939862222997?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8018068939862222997/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8018068939862222997&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8018068939862222997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8018068939862222997'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/asp-net-por-que-desaparece-una-columna.html' title='Asp .Net: ¿Por qué desaparece una columna de un GridView después de un PostBack?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3622294118161680309</id><published>2010-02-21T00:12:00.000-06:00</published><updated>2010-02-21T00:14:44.375-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>IIS: Resetear IIS y ASP.Net</title><content type='html'>Abrir una ventana de cmandos e ir a la siguiente dirección:&lt;br /&gt;&lt;br /&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&lt;br /&gt;&lt;br /&gt;2) Ejecutar los siguientes comandos:&lt;br /&gt;&lt;br /&gt;a.       aspnet_regiis.exe –i&lt;br /&gt;&lt;br /&gt;b.      aspnet_regiis.exe –e&lt;br /&gt;&lt;br /&gt;3)      Resetear el IIS con iisreset&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3622294118161680309?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3622294118161680309/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3622294118161680309&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3622294118161680309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3622294118161680309'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/iis-resetear-iis-y-aspnet.html' title='IIS: Resetear IIS y ASP.Net'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4146569708177207864</id><published>2010-02-20T18:28:00.000-06:00</published><updated>2010-02-20T18:29:46.159-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP: Instalar php en IIS fácilmente.</title><content type='html'>Ver el siguiente video: &lt;a href="http://channel9.msdn.com/posts/Daniel+Garzon/Como-instalar-PHP-en-Windows-XP/"&gt;Video&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4146569708177207864?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4146569708177207864/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4146569708177207864&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4146569708177207864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4146569708177207864'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/php-instalar-php-en-iis-facilmente.html' title='PHP: Instalar php en IIS fácilmente.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2223425281826370490</id><published>2010-02-20T09:51:00.000-06:00</published><updated>2010-02-20T10:30:20.165-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crystal report'/><title type='text'>Web Crystal Reports: Botones Navigation no funcionan.</title><content type='html'>Cuando uno hace clic sobre uno de los botones de navegación de un reporte que está en una página Web, éste se pierde y aparece un error informando que los parámetros de logeo son incorrectos.&lt;br /&gt;&lt;br /&gt;Una solución efectiva es utilizar el evento Navigate del control CrystalReportViewer. En dicho evento poner el código que genera el reporte en su defecto llamar al método o función que genera dicho reporte.&lt;br /&gt;&lt;br /&gt;Otra alternativa recomendada según lo que he leido en diferentes sitios en internet es utilizar el evento Page_Init de la página Web para generar el reporte; y con base en los ejemplos que me encontré, también se recomienda utilizar una variable de sesión para guardar el reporte, de esa manera el reporte no se estaría generando a cada rato si no más bien cuando sea extrictamente necesario volver a generar el reporte.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2223425281826370490?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2223425281826370490/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2223425281826370490&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2223425281826370490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2223425281826370490'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/web-crystal-reports-botones-navigation.html' title='Web Crystal Reports: Botones Navigation no funcionan.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1342927518540109797</id><published>2010-02-17T21:42:00.002-06:00</published><updated>2010-09-18T14:59:47.943-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Javascript: InnerHTML no cambia después de la primera vez.</title><content type='html'>Intentaba cambiar dinámicamente el atributo innerHTML de un elemento span. El código JS inicial funcionaba solo la primera vez, pero al dar clic en el botón que hace el cambio del atributo, no funcionaba. &lt;br /&gt;&lt;br /&gt;El objeto Span estaba dentro de un elemento Div y éste a su vez es mostrado por un ModalPopupExtender que además está fuera del UpdatePanel.&lt;br /&gt;&lt;br /&gt;El problema era que al dar clic sobre el botón que muestra un texto que dice "Sí" del ModalPopup, éste no hacía nada y el modal popup no se cerraba.. Entonces procedí a crear el Trigger del botón. Tuve el resultado esperado, pero al intentar borrar el segundo item de un grid, el mensaje del span no aparecía. A pesar de que la propiedad innerHTML se estaba asignando, éste no se mostraba en pantalla.&lt;br /&gt;&lt;br /&gt;Solución: Quitar el trigger y programarle al botón "Sí" codigo javascript para cerrar el modalpopup con javascript, y listo!&lt;br /&gt;&lt;br /&gt;Otra alternativa es inyectar el elemento TextNode con ayuda del DOM (Document Object Model).&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;var padre = $get('div');&lt;br /&gt;while (padre.firstChild)padre.removeChild(padre.firstChild);&lt;br /&gt;var nuevo = document.createElement("span");&lt;br /&gt;nuevo.appendChild(document.createTextNode("Nuevo valor:" + codigo);&lt;br /&gt;padre.appendChild(nuevo);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1342927518540109797?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1342927518540109797/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1342927518540109797&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1342927518540109797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1342927518540109797'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/javascript-innerhtml-no-cambia-despues.html' title='Javascript: InnerHTML no cambia después de la primera vez.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4105290283418839904</id><published>2010-02-14T14:47:00.000-06:00</published><updated>2010-02-14T14:53:30.943-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='inyectar'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='scrollTop'/><title type='text'>Asp.Net: Inyectar código Jasvascript.</title><content type='html'>Código de ejemplo para ejecutar un código inyectado después de un submit de la página:&lt;br /&gt;&lt;br /&gt;Poner la siguiente línea en el Event Handler del control, ya sea un botón, un LinkButton o cualquier otro control del lado del servidor:&lt;br /&gt;&lt;br /&gt;ClientScript.RegisterStartupScript(Me.GetType(), "focus", "ScrollToElement('" + ServerControlName.ClientID +"');", True)&lt;br /&gt;&lt;br /&gt;La function de javascript que está en un archivo por aparte es la siguiente:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function ScrollToElement(element){                &lt;br /&gt; var pos = Sys.UI.DomElement.getBounds($get(element)).y;&lt;br /&gt; document.documentElement.scrollTop = pos;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4105290283418839904?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4105290283418839904/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4105290283418839904&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4105290283418839904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4105290283418839904'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/aspnet-inyectar-codigo-jasvascript.html' title='Asp.Net: Inyectar código Jasvascript.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-394285147054627981</id><published>2010-02-14T11:33:00.001-06:00</published><updated>2010-02-14T11:36:08.124-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Globalization'/><category scheme='http://www.blogger.com/atom/ns#' term='ToTitleCase'/><title type='text'>Pasar primera letra de una palabra a mayúscula</title><content type='html'>Ejemplo:&lt;br /&gt;&lt;br /&gt;Dim cu As TextInfo = Thread.CurrentThread.CurrentCulture().TextInfo&lt;br /&gt;Dim resultado as string = cu.ToTitleCase("titulo")&lt;br /&gt;&lt;br /&gt;Referencia:&lt;a href="http://support.microsoft.com/kb/312890/es"&gt;&lt;br /&gt;http://support.microsoft.com/kb/312890/es&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-394285147054627981?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/394285147054627981/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=394285147054627981&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/394285147054627981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/394285147054627981'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/pasar-primera-letra-de-una-palabra.html' title='Pasar primera letra de una palabra a mayúscula'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2603125643085871071</id><published>2010-02-07T15:55:00.002-06:00</published><updated>2010-09-18T15:30:45.221-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Ajax .Net: El control CascadingDropDown devuelve [Error 500]</title><content type='html'>Después de horas y horas para saber por qué el control CascadingDropDown de Ajax me devuelve la cadena [Error 500] como un item en el cuadro de lista colgante del propio control, resultó que el método del servicio web debe tener como nombres de parámetros&lt;br /&gt;los siguientes: &lt;br /&gt;&lt;br /&gt;- Primer nombre de parámetro: knownCategoryValues &lt;br /&gt;- Segundo nombre de parámetro: category &lt;br /&gt;&lt;br /&gt;La definición de la función en los lenguajes más utilizados en Visual estudio son las siguientes:&lt;br /&gt;&lt;br /&gt;VB .Net:&lt;br /&gt;Public Function Obtener_ListaTerritorial(ByVal knownCategoryValues As String, ByVal category As String) As AjaxControlToolkit.CascadingDropDownNameValue()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;C#:&lt;br /&gt;&lt;code&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;[&lt;span style="color: teal;"&gt;WebMethod&lt;/span&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;                 public&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;                     &lt;span style="color: teal;"&gt;CascadingDropDownNameValue&lt;/span&gt;[] GetColorsForModel(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New'; font-size: 10pt;"&gt;                 string&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 10pt;"&gt;                     knownCategoryValues,&lt;br /&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt; category)&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2603125643085871071?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2603125643085871071/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2603125643085871071&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2603125643085871071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2603125643085871071'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/ajax-net-el-control-cascadingdropdown.html' title='Ajax .Net: El control CascadingDropDown devuelve [Error 500]'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5289470730438658373</id><published>2010-02-03T22:00:00.039-06:00</published><updated>2011-07-17T18:58:44.824-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><title type='text'>ASP .Net: ¿Cómo obtener el ID de un GridView que no muestra campo ID.</title><content type='html'>Éste caso consiste en que se desea obtener el valor del campo llave de una tabla cuando se dispare un evento cualquiera del Grid. De alguna forma se desea obtener el valor de la llave con la condición adicional de que el campo llave no aparece en el Grid ya que éste es invisible o se decidió no ponerlo en el grid.&lt;br /&gt;&lt;br /&gt;Dicho caso está relacionada con una entrada anterior titulada: &lt;a href="http://leosuaar.blogspot.com/2009/09/aspnet-recuperar-id-de-fila-en-gridview.html"&gt;ASP .NET Recuperar ID de fila en gridview.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La situación aquí es que se creó una columna en el grid pero se olvidó poner a dicha columna el atributo &lt;span style="color: #3333ff;"&gt; &lt;span style="font-weight: bold;"&gt;DataField="CODIGO"&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;Siendo más claros, el código para la columna que se metió en el grid manualmente es el siguiente:&lt;br /&gt;&lt;div id="divObtenerIDGridView1" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',520)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;&amp;lt;asp:boundfield headertext="Modificar" datafield="CODIGO"&amp;gt;&lt;br /&gt;&amp;lt;/headerstyle&amp;gt;&amp;lt;/asp:boundfield&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Ahora bien, el código anterior lo que hace es que aparezca una columna adicional en el Grid, aunque el DataSource no contenga esa columna.&lt;br /&gt;&lt;br /&gt;En el code-behind, auque tratemos de recuperar el valor del campo llave que en éste caso se llama COLUMNA,&lt;span style="color: #cc0000;"&gt; ¡SERÁ CASO PERDIDO GARANTIZADO!&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para soluionarlo se debe agregar el atributo DataField a la columna y de esa forma se logrará obtener el valor del campo llave aunque éste no esté en el GridView.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;div id="divObtenerIDGridView2" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',520)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;&amp;lt;asp:boundfield headertext="Modificar" &lt;span style="color: #cc0000; font-weight: bold;"&gt;DataField="CODIGO"&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/headerstyle&amp;gt;&amp;lt;/asp:boundfield&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;Para terminar el ejemplo, ¿Cómo hacer que una celda del grid haga algo cuando le demos clic a un link dentro de la celda o a un control cualquiera dentro de la celda?&lt;br /&gt;&lt;br /&gt;La solución más rápida es utilizar el evento &lt;span style="color: #3333ff; font-weight: bold;"&gt;RowDataBound&lt;/span&gt; y dentro de éste poner&lt;br /&gt;un código equivalente al siguiente:&lt;br /&gt;&lt;div id="divObtenerIDGridView3" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',670)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;If e.Row.RowType = DataControlRowType.DataRow Then&lt;br /&gt;e.Row.Cells(0).Text = "&amp;lt;a href=" +&lt;br /&gt;Page.ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Modificar$" +&lt;br /&gt;e.Row.Cells(1).Text, False) + "&amp;gt;" + "[Modificar Fila]" + "&amp;lt;/a&amp;gt;"&lt;br /&gt;End If&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;El código anterior utiliza el método GetPostBackClientHyperlink del objeto ClientScript para insertar código Javascript del lado del cliente. La ventaja de hacerlo así, es que éste genera una llamada a la función __doPostBack que también está del lado del cliente provocando una llamada al evento o eventos del objeto GridView (los eventos en el lado del servidor del GridView).&lt;br /&gt;&lt;br /&gt;Ahora bien, una vez creado completamente el gridview en pantalla, en caso de que el usuario haga clic sobre el link que está en la celda de la fila, éste disparará al evento RowCommand del GridView. En el evento RowCommand se puede preguntar por los parámetros CommandName y CommandArgument para obtener los valores tanto del tipo de operación que se realiza o preguntar por el valor adicional que se pasa en CommandArgument.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5289470730438658373?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5289470730438658373/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5289470730438658373&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5289470730438658373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5289470730438658373'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/02/asp-net-como-obtener-el-id-de-un.html' title='ASP .Net: ¿Cómo obtener el ID de un GridView que no muestra campo ID.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7625969174444952242</id><published>2010-01-24T22:21:00.000-06:00</published><updated>2010-01-24T22:22:32.051-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>SQL SERVER: Crear el script con el esquema y los datos.</title><content type='html'>&lt;a href="http://blog.sqlauthority.com/2007/11/16/sql-server-2005-generate-script-with-data-from-database-database-publishing-wizard/"&gt;/blog.sqlauthority.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7625969174444952242?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7625969174444952242/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7625969174444952242&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7625969174444952242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7625969174444952242'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/01/sql-server-crear-el-script-con-el.html' title='SQL SERVER: Crear el script con el esquema y los datos.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3887011783000178182</id><published>2010-01-10T03:11:00.000-06:00</published><updated>2010-01-10T03:13:02.557-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='controles'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='dinámicos'/><title type='text'>Asp.Net: Evento para control dinámico</title><content type='html'>En éste sitio, explican como agregar un evento a un control que fue creado dinámicamente en ASP.NET: &lt;a href="http://leo-munoz.blogspot.com/2009_09_01_archive.html"&gt;leo-munoz.blogspot.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3887011783000178182?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3887011783000178182/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3887011783000178182&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3887011783000178182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3887011783000178182'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/01/aspnet-evento-para-control-dinamico.html' title='Asp.Net: Evento para control dinámico'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-741713231133336054</id><published>2010-01-10T02:59:00.001-06:00</published><updated>2010-01-10T03:00:20.763-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax .net'/><category scheme='http://www.blogger.com/atom/ns#' term='UpdatePanel'/><title type='text'>Ajax .Net: El Control UpdatePanel</title><content type='html'>Basta información, trucos y tips sobre el control UpdatePanel en &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163413.aspx"&gt;Revista MSDN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-741713231133336054?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/741713231133336054/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=741713231133336054&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/741713231133336054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/741713231133336054'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/01/ajax-net-el-control-updatepanel.html' title='Ajax .Net: El Control UpdatePanel'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8302754741841427904</id><published>2010-01-08T01:41:00.000-06:00</published><updated>2010-01-08T01:45:03.538-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Javascript: Problemas con evento onclick y setAttribute</title><content type='html'>Poner una función como la que sigue, definitivamente no funcinará en IE6 pero si en le resto de exploradores:&lt;br /&gt;&lt;br /&gt;boton.setAttribute('onclick', 'Ejecutar(' + "'btn" + Pintar.lastAssignedId + "');");    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La solución es usar la siguiente sintaxis:&lt;br /&gt;&lt;br /&gt;boton.onclick = function () {Ejecutar(boton.id);};&lt;br /&gt;&lt;br /&gt;Referencia en: &lt;a href="http://codingforums.com/showthread.php?t=52931"&gt;codingforums.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8302754741841427904?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8302754741841427904/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8302754741841427904&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8302754741841427904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8302754741841427904'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2010/01/javascript-problemas-con-evento-onclick.html' title='Javascript: Problemas con evento onclick y setAttribute'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6618691629480618850</id><published>2009-12-27T20:00:00.004-06:00</published><updated>2010-09-18T18:24:18.452-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='wizard'/><category scheme='http://www.blogger.com/atom/ns#' term='sidebartemplate'/><category scheme='http://www.blogger.com/atom/ns#' term='sidebar'/><title type='text'>Asp .Net: Wizard control y controles en el SideBar</title><content type='html'>Código para habilitar o deshabilitar uno de los links que aparecen en el&lt;br /&gt;SideBar del control Wizard. Para que funcione en el DataList que aparece en el&lt;br /&gt;SideBarTemplate hay que agregar manualmente el evento &lt;br /&gt;&lt;br /&gt;OnItemDataBound="SideBarList_ItemDataBound"&lt;br /&gt;&lt;div id="divWizardControlesSideBar" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',850)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;Public Sub SideBarList_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)&lt;br /&gt;Dim dataitem As WizardStep = CType(e.Item.DataItem, WizardStep)&lt;br /&gt;Dim lnkBtn As LinkButton = CType(e.Item.FindControl("SideBarButton"), LinkButton)&lt;br /&gt;If Not dataitem Is Nothing Then&lt;br /&gt;&lt;br /&gt;'Código que hace algo.&lt;br /&gt;&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6618691629480618850?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6618691629480618850/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6618691629480618850&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6618691629480618850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6618691629480618850'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/12/asp-net-wizard-control-y-controles-en.html' title='Asp .Net: Wizard control y controles en el SideBar'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5915284610770477592</id><published>2009-12-24T14:51:00.000-06:00</published><updated>2009-12-24T15:00:46.929-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ms-word'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='cursor'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><title type='text'>MS-Word 2007: El cursor no se pude posicionar con el puntero del mouse.</title><content type='html'>Me ocurre que usando MS-Word 2007, después de escribir cierta cantidad de líneas de texto, decido corregir una palabra o comenzar a dar estilo a ciertas partes de un párrafo, sin embargo al querer seleccionar una parte del texto con el puntero del mouse, éste no funciona; es decir, no puedo ni posicionar el cursor con ayuda del puntero del mouse en el lugar que yo deseo, lo que tengo que hacer para poder llegar al texto, es usar las teclas de dirección, no obstante, es tedioso estar haciendo eso.&lt;br /&gt;&lt;br /&gt;Luego de investigar un rato, encontré la solución para mi caso. Basta con desactivar un plugin el cual a ciencia cierta no puedo decir cuál es porque lo que yo hice fue desactivar todos los pluggines, jeje!, sin embargo en el &lt;a href="http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B921541"&gt;siguiente link&lt;/a&gt; explican en detalle varias soluciones e inclusive explican como detectar cuál pluggin específico es el que está provocando el problema.&lt;br /&gt;&lt;br /&gt;Adelanto que para hacer las correcciones, posiblemente va a requerir hacer una modificación en el registro de Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5915284610770477592?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5915284610770477592/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5915284610770477592&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5915284610770477592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5915284610770477592'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/12/ms-word-2007-el-cursor-no-se-pude.html' title='MS-Word 2007: El cursor no se pude posicionar con el puntero del mouse.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6231696126230921770</id><published>2009-12-18T23:21:00.000-06:00</published><updated>2010-01-10T05:11:05.549-06:00</updated><title type='text'>Asp .Net::Subir multiples archivos.</title><content type='html'>Referencias para subir múltiples archivos:&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/videos/video-252.aspx" target="_black"&gt;Videos&lt;/a&gt;&lt;br /&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Video donde se explica en detalle como crear usar un FileUpload Control para poder subir varios videos.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.element-it.com/Examples/MultiPowUpload/SimpleUpload.html" target="_black"&gt;Ejemplo #1&lt;/a&gt;&lt;br /&gt;&lt;dd&gt;Ejemplo de un FileUpdaload múltiple.&lt;/dd&gt;&lt;br /&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/FlashUpload.aspx" target="_black"&gt;Ejemplo #2&lt;/a&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Otro ejemplo, pero éste está más claro y además se puede bajar el proyecto en Visual Studio.&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;a href="http://geeks.ms/blogs/lruiz/archive/2007/06/21/controlar-el-tama-241-o-de-subida-de-los-ficheros-al-servidor-en-asp-net.aspx"&gt;Subida de los ficheros al servidor.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dotnetero.com/2007/12/cmo-subir-un-archivo-tu-servidor-web.html"&gt;Subir un archivo tu servidor&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.softartisans.com/Forums/ShowPost.aspx?PostID=4350"&gt;Tamaños máximos de archivos&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.telerik.com/help/aspnet/upload/uploadinglargefiles.html"&gt;Atributos de httpRuntime&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6231696126230921770?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6231696126230921770/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6231696126230921770&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6231696126230921770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6231696126230921770'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/12/asp-netsubir-multiples-archivos.html' title='Asp .Net::Subir multiples archivos.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-869869949485792750</id><published>2009-12-14T22:07:00.000-06:00</published><updated>2009-12-14T22:36:25.404-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='__doPostBack'/><title type='text'>Ajax .Net:: Excelente explicación de la función __doPostBack()</title><content type='html'>En &lt;a href="http://aspalliance.com/895_Understanding_the_JavaScript___doPostBack_Function"&gt;aspalliance.com&lt;/a&gt; se encuentra una excelente explicación sobre todo lo relacionado con la función __doPostBack.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-869869949485792750?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/869869949485792750/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=869869949485792750&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/869869949485792750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/869869949485792750'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/12/ajax-net-excelente-explicacion-de-la.html' title='Ajax .Net:: Excelente explicación de la función __doPostBack()'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5794022050026334424</id><published>2009-12-08T22:57:00.000-06:00</published><updated>2009-12-08T23:00:04.525-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Animations'/><title type='text'>Ajax .Net: Usar Fade Animation en Javascript</title><content type='html'>Excelente &lt;a href="http://www.thecodinghumanist.com/Content/HowToMSAjaxFadeAnimationInJavascript.aspx"&gt;ejemplo básico&lt;/a&gt; para usar Ajax .Net animation en javascript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5794022050026334424?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5794022050026334424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5794022050026334424&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5794022050026334424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5794022050026334424'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/12/ajax-net-usar-fade-animation-en.html' title='Ajax .Net: Usar Fade Animation en Javascript'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5673983878263344930</id><published>2009-12-03T03:24:00.000-06:00</published><updated>2009-12-03T03:25:52.200-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Days360'/><category scheme='http://www.blogger.com/atom/ns#' term='función'/><category scheme='http://www.blogger.com/atom/ns#' term='excell'/><title type='text'>Función Days360 en Vb.Net y C#</title><content type='html'>Código C#:&lt;br /&gt;        public static int CalculateDays360(DateTime d1, DateTime d2)&lt;br /&gt;        {&lt;br /&gt;            int years = d2.Year - d1.Year;&lt;br /&gt;            int months = d2.Month - d1.Month;&lt;br /&gt;            &lt;br /&gt;            int dayNo1 = 0;&lt;br /&gt;            int dayNo2 = 0;&lt;br /&gt;&lt;br /&gt;            dayNo2 = d2.Day;&lt;br /&gt;            dayNo1 = d1.Day;&lt;br /&gt;&lt;br /&gt;            if (dayNo1 == 31) dayNo1 = 30;&lt;br /&gt;            if (dayNo2 == 31) dayNo2 = 30;&lt;br /&gt;&lt;br /&gt;            int days = dayNo2 - dayNo1;&lt;br /&gt;            return years * 360 + months * 30 + days;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;Código VB.Net:&lt;br /&gt;&lt;br /&gt;Public Shared Function CalculateDays360(ByVal d1 As DateTime, ByVal d2 As DateTime) As Integer&lt;br /&gt;            Dim years As Integer = d2.Year - d1.Year&lt;br /&gt;            Dim months As Integer = d2.Month - d1.Month&lt;br /&gt;&lt;br /&gt;            Dim dayNo1 As Integer = 0&lt;br /&gt;            Dim dayNo2 As Integer = 0&lt;br /&gt;            dayNo2 = d2.Day&lt;br /&gt;            dayNo1 = d1.Day&lt;br /&gt;            If (dayNo1 = 31) Then dayNo1 = 30&lt;br /&gt;            If (dayNo2 = 31) Then dayNo2 = 30&lt;br /&gt;            Dim days As Integer = dayNo2 - dayNo1&lt;br /&gt;            Return years * 360 + months * 30 + days&lt;br /&gt;End Function&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5673983878263344930?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5673983878263344930/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5673983878263344930&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5673983878263344930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5673983878263344930'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/12/funcion-days360-en-vbnet-y-c.html' title='Función Days360 en Vb.Net y C#'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2554896466142302261</id><published>2009-11-29T18:54:00.000-06:00</published><updated>2009-11-29T19:02:14.590-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='controles'/><category scheme='http://www.blogger.com/atom/ns#' term='no existe'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>ASP.NET: Supuestamente el control no existe!</title><content type='html'>Un caso extraño, que me tomo como una hora en resolverlo, para variar!&lt;br /&gt;&lt;br /&gt;El problema consistía en que tenía una tabla con un ID cualquiera. En el momento de hacer referencia a ese control en el CodeBehind y después ejecutar el sitio en modo de depuración, aparecía un error indicando que la tabla no estaba declara. Sin embargo si estaba declarada ya que inclusive pude hacer referencia a la tabla desde CodeBehind.&lt;br /&gt;&lt;br /&gt;¿Pero que provocaba ese problema?&lt;br /&gt;El problema era provocado por una copia que había hecho de los mismo archivos (el archivo *.aspx y el archivo *.vb). Parece que VS 2008, supongo que en los anteriores sucede también, detecta que el control ya está declarado pero es para la página de la copia que tenía y supongo yo, que el control Table que tenía en la página original estaba siendo anulado de alguna forma; en fin, para solucionar el asunto fue simplemente borrando los archivos de las copias que tenía en el mismo lugar que los archivos originales.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2554896466142302261?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2554896466142302261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2554896466142302261&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2554896466142302261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2554896466142302261'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/11/aspnet-supuestamente-el-control-no.html' title='ASP.NET: Supuestamente el control no existe!'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3154427723845216253</id><published>2009-11-15T02:45:00.000-06:00</published><updated>2009-11-15T02:48:46.532-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maps'/><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='regiones'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS: Mapa de Regiones con CSS</title><content type='html'>Necesitaba un ejemplo bien claro para crear mapas con CSS o por lo menos saber si se puede lograr el mismo efecto que se hace con el elemento &amp;lt;map&amp;gt; de html. Una fuente de ayuda la encontré en &lt;a href="http://www.freshivore.net/css/simple-regional-maps-with-css/"&gt;www.freshivore.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3154427723845216253?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3154427723845216253/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3154427723845216253&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3154427723845216253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3154427723845216253'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/11/css-mapa-de-regiones-con-css.html' title='CSS: Mapa de Regiones con CSS'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6890469859918122600</id><published>2009-11-01T21:14:00.000-06:00</published><updated>2009-11-01T21:18:06.760-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='persitir'/><category scheme='http://www.blogger.com/atom/ns#' term='ViewState'/><title type='text'>Asp.Net: Persistir el ViewState</title><content type='html'>El siguiente código hace que le viewstate se guarde en una variable de sessión en vez del lado del cliente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Código para visual Basic:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        Dim _pers As PageStatePersister&lt;br /&gt;        Protected Overrides ReadOnly Property PageStatePersister() As PageStatePersister&lt;br /&gt;            Get&lt;br /&gt;                If _pers Is Nothing Then&lt;br /&gt;                    _pers = New SessionPageStatePersister(Me)&lt;br /&gt;                End If&lt;br /&gt;                Return _pers&lt;br /&gt;            End Get&lt;br /&gt;        End Property&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Código C#:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PageStatePersister _pers;&lt;br /&gt;                       &lt;br /&gt;                        &lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:black;"&gt;PageStatePersister PageStatePersister &lt;br /&gt;                        {  &lt;br /&gt;                                get&lt;br /&gt;                                {&lt;br /&gt;                                    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; &lt;span style="color:black;"&gt;(_pers ==&lt;/span&gt;                         &lt;span style="color:blue;"&gt;null&lt;/span&gt;&lt;span style="color:black;"&gt;)&lt;br /&gt;                                    {&lt;br /&gt;                                        _pers =&lt;/span&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:black;"&gt;SessionPageStatePersister(&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;span style="color:black;"&gt;);&lt;br /&gt;                                    }&lt;br /&gt;                                    &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:black;"&gt;_pers;&lt;br /&gt;                                }&lt;br /&gt;                        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Referencia en &lt;a href="http://www.telerik.com/help/aspnet-ajax/grdsavinggridviewstateinsession.html"&gt;www.telerik.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mas ayuda en &lt;a href="http://geeks.ms/blogs/jalarcon/archive/2006/11/13/C_F300_mo-persisitir-en-ViewState-en-una-variable-de-sesi_F300_n-en-ASP.NET-2.0.aspx"&gt;http://geeks.ms&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6890469859918122600?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6890469859918122600/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6890469859918122600&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6890469859918122600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6890469859918122600'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/11/aspnet-persistir-el-viewstate.html' title='Asp.Net: Persistir el ViewState'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5787461474930925954</id><published>2009-10-28T23:56:00.000-06:00</published><updated>2009-10-29T00:14:51.360-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='días'/><category scheme='http://www.blogger.com/atom/ns#' term='cuánto'/><category scheme='http://www.blogger.com/atom/ns#' term='meses'/><category scheme='http://www.blogger.com/atom/ns#' term='fecha'/><category scheme='http://www.blogger.com/atom/ns#' term='años'/><category scheme='http://www.blogger.com/atom/ns#' term='fechas'/><category scheme='http://www.blogger.com/atom/ns#' term='calcular'/><title type='text'>¿Cuántos días, meses y años hay entre dos fechas?</title><content type='html'>Estuve intentando horas de horas con el problema de cómo hacer para obtener la cantidad de días, meses y años, sin importar el lenguaje de programación. Pues el algoritmo al final es simple y lo voy a explicar brevemente.&lt;br /&gt;&lt;br /&gt;Supongamos que recibimos dos fechas donde fecha de inicio es 1/1/2004 y fecha final es 30/11/2005. El objetivo final es obtener la cantidad de años, meses y días, pero que sea exacto y esto quiere decir que hay que tomar en cuenta que no todos los meses son de 30 días y que no todos los años tienen 365 debido al año bisiesto.&lt;br /&gt;&lt;br /&gt;La solución yo la resolví en VB .Net con la función DateAdd Lo primero es calcular los años. Para eso calculamos la cantida de días totales y la dividimos entre 360 y extraemos la parte absoluta con Math.Abs.&lt;br /&gt;&lt;br /&gt;Viene lo más complicadillo y es calcular los meses  y los días. Para ambos casos, el truco está siempre es hacerle una suma a la fecha de inicio para irnos acercando a la fecha final. Entonces para calcular los meses hay que sumar a la fecha de inicio la cantidad de años que ya teníamos calculado. Del resultado que obtengo saco los meses y se lo resto a los meses de la fecha final.&lt;br /&gt;&lt;br /&gt;Ejemplo VB .Net:&lt;br /&gt;&lt;br /&gt;totalMeses = Math.Abs(final.Month - DateAdd(DateInterval.Year, _anios, inicio).Month)&lt;br /&gt;&lt;br /&gt;Para calcular los días, la lógica es la misma. Lo que hay que hacer es sumar todos los meses a la fecha de inicio. Esto quiere decir que la cantidad de años que tengo calculado, lo convierto en meses y lo sumo con la cantidad de meses que obtuve en totalMeses. De esa suma, el resultado se lo sumo a la fecha de inicio original. Como le estoy sumando todos los meses a la fecha de inicio, nos va a quedar una fecha que se acerca más a la fecha final.&lt;br /&gt;&lt;br /&gt;Finalmente, entonces se deduce que hay que sacar la diferencia en días de la fecha final con la fecha que obtuve en el último paso.&lt;br /&gt;&lt;br /&gt;Y bueno, dej esta entrada para recordarme a mí mismo como fue que resolví el algoritmo, jaja!&lt;br /&gt;&lt;br /&gt;Para poder saber si los resultados andan bien, se puede usar el siguiente sitio en el cual tiene una pequeña aplicación que hace esos cálculos: &lt;a href="http://www.timeanddate.com/date/duration.html"&gt;www.timeanddate.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5787461474930925954?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5787461474930925954/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5787461474930925954&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5787461474930925954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5787461474930925954'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/cuantos-dias-meses-y-anos-hay-entre-dos.html' title='¿Cuántos días, meses y años hay entre dos fechas?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7207525695585914510</id><published>2009-10-20T00:15:00.001-06:00</published><updated>2009-10-20T00:17:51.473-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='validadores'/><category scheme='http://www.blogger.com/atom/ns#' term='calendarextender'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='calendar'/><title type='text'>Asp.Net: Validator Controls</title><content type='html'>En ocasiones, el uso de los controles de validación se pueden volver un dolor de cabeza. Solo para mencionar una de las soluciones por la cual no se activan los validadores o el por qué por ejemplo el control CalendarExtender se comporta indevidamente mal, eso puede ser porque se está usando la propiedad &lt;span style="color: rgb(255, 0, 0);"&gt;SetFocusOnError&lt;/span&gt;. Con solo quitarla todo se puede solucionar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7207525695585914510?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7207525695585914510/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7207525695585914510&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7207525695585914510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7207525695585914510'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/aspnet-validator-controls.html' title='Asp.Net: Validator Controls'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-9055681010990509228</id><published>2009-10-15T20:10:00.002-06:00</published><updated>2010-09-18T18:25:48.902-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='png'/><category scheme='http://www.blogger.com/atom/ns#' term='transparencias'/><category scheme='http://www.blogger.com/atom/ns#' term='ie6'/><title type='text'>PNG: Transparencias de PNG en IE6</title><content type='html'>Encontré un código perfecto para permitir transparencias en IE6. Es el primer código que veo que sí funcionan. El código que se puede guardar en un archivo *.js es el siguiente:&lt;br /&gt;&lt;div id="divObtenerIDGridView3" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',570)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;var arVersion = navigator.appVersion.split("MSIE")&lt;br /&gt;var version = parseFloat(arVersion[1])&lt;br /&gt;if ((version &gt;= 5.5) &amp;amp;&amp;amp; (document.body.filters))&lt;br /&gt;{&lt;br /&gt;for(var i=0; i&amp;lt;document.images.length; i++)&lt;br /&gt;{&lt;br /&gt;var img = document.images[i]&lt;br /&gt;var imgName = img.src.toUpperCase()&lt;br /&gt;if (imgName.substring(imgName.length-3, imgName.length) == "PNG")&lt;br /&gt;{&lt;br /&gt;var imgID = (img.id) ? "id='" + img.id + "' " : ""&lt;br /&gt;var imgClass = (img.className) ? "class='" + img.className + "' " : ""&lt;br /&gt;var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "&lt;br /&gt;var imgStyle = "display:inline-block;" + img.style.cssText&lt;br /&gt;if (img.align == "left") imgStyle = "float:left;" + imgStyle&lt;br /&gt;if (img.align == "right") imgStyle = "float:right;" + imgStyle&lt;br /&gt;if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle&lt;br /&gt;var strNewHTML = "&amp;lt;span " + imgID + imgClass + imgTitle&lt;br /&gt;+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"&lt;br /&gt;+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"&lt;br /&gt;+ "(src=\'" + img.src + "\', sizingMethod='scale');\"&amp;gt;&amp;lt;/span&amp;gt;"&lt;br /&gt;img.outerHTML = strNewHTML&lt;br /&gt;i = i-1&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El enlace donde encontré éste código es: &lt;a href="http://www.webmasterlibre.com/2006/07/14/pngs-con-transparencia-en-internet-explorer/"&gt;www.webmasterlibre.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-9055681010990509228?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/9055681010990509228/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=9055681010990509228&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/9055681010990509228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/9055681010990509228'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/png-transparencias-de-png-en-ie6.html' title='PNG: Transparencias de PNG en IE6'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7558821111775752131</id><published>2009-10-11T15:40:00.000-06:00</published><updated>2009-10-11T15:42:21.491-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='validator'/><category scheme='http://www.blogger.com/atom/ns#' term='validadores'/><category scheme='http://www.blogger.com/atom/ns#' term='customvalidator'/><category scheme='http://www.blogger.com/atom/ns#' term='custom validator'/><title type='text'>Asp.Net: Control CustomValidator.</title><content type='html'>Necesitaba saber cómo implementar una función de validación del lado del cliente para el control Custom Validator; la respuesta la encontré en &lt;a href="http://www.mundoprogramacion.com/colabora/NET2005/neo_mx_CustomValidator.htm"&gt;Mundo Programación&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7558821111775752131?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7558821111775752131/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7558821111775752131&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7558821111775752131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7558821111775752131'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/aspnet-control-customvalidator.html' title='Asp.Net: Control CustomValidator.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8493315379928300581</id><published>2009-10-03T14:00:00.012-06:00</published><updated>2011-09-24T14:11:11.755-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modalpopupextender'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><title type='text'>Ajax .Net: ¿Por qué desaparece el ModalPopup al escoger un item en el DropDownList?</title><content type='html'>Cada vez que ocurre un PostBack o un AutoPostBack dentro de un ModalPopupExtender, éste se cierra. La solución más rápida es poner éste código en el Head para poder mantener el estado del ModalPopupExtender.&lt;br /&gt;&lt;br /&gt;Nota: El control ModalPopupExtender debe tener El atributo BehaviorID con un valor cualquiera. Dicho valor se puede usar en el código JS para poder hacer referencia al mismo de una forma más rápida.&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span class="Apple-style-span" style="color: blue;"&gt;script&lt;/span&gt; &lt;span class="Apple-style-span" style="color: purple;"&gt;type&lt;/span&gt;="text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;var _estadoModal;&lt;br /&gt;function pageLoad() {&lt;br /&gt;$addHandler($get("btnSalir"), "click", OnSalir_Click);&lt;br /&gt;&lt;br /&gt;var mpe = $find("mpe");&lt;br /&gt;mpe.add_shown(OnShowModal);&lt;br /&gt;&lt;br /&gt;if (_estadoModal)&lt;br /&gt;mpe.show();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnShowModal(sender) {&lt;br /&gt;_estadoModal = true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnSalir_Click(sender) {&lt;br /&gt;_estadoModal = false;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&amp;lt;/&lt;span class="Apple-style-span" style="color: blue;"&gt;script&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Si en la variable "_estadoModal" está el valor true, entonces&lt;br /&gt;se vuelve a ordenar que el ModalPopup se muestre. Esto hace&lt;br /&gt;que le caiga encima a la instancia anterior que en realidad&lt;br /&gt;ya esta muerta; lo que pasa es que el updatePanel no se a&lt;br /&gt;refrescado y por eso parece que el ModalPopup nunca desapareció&lt;br /&gt;de la pantalla, el efecto es rápido y parece que el Modalpopup&lt;br /&gt;no se cierra.&lt;br /&gt;&lt;br /&gt;Si en la variable "_estadoModal" está el valor "false",&lt;br /&gt;entonces el ModalPopup desaparece ya que el Postback hace que&lt;br /&gt;se cierre el ModalPopup y por ende el UpdatePanel se refresca&lt;br /&gt;borrando la imagen del ModalPopup que se estaba mostrando.&lt;br /&gt;&lt;br /&gt;NOTA: CUALQUIER OBJETO QUE HAGA UN POSTBACK O UN &lt;br /&gt;AUTOPOSTBACK PROVOCAN QUE EL MODALPOPUPEXTENDER &lt;br /&gt;SE CIERRE DE INMEDIATO. SIENDO MÁS ESPECÍFICOS, &lt;br /&gt;EL MODALPOPUPEXTENDER SE CIERRA PORQUE ESTE &lt;br /&gt;CONTROL NO MANTIENE SU ESTADO EN EL LADO DEL &lt;br /&gt;CLIENTE DESPUÉS DE CADA POSTBACK O AUTOPOSTBACK.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.leonartsoftware.com/_recursos_backups/ModalPopupState.zip"&gt;Descargar ejemplo &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8493315379928300581?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8493315379928300581/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8493315379928300581&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8493315379928300581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8493315379928300581'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/ajax-net-por-que-desaparece-el.html' title='Ajax .Net: ¿Por qué desaparece el ModalPopup al escoger un item en el DropDownList?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-26967956287407046</id><published>2009-10-03T12:48:00.000-06:00</published><updated>2009-10-03T12:54:40.442-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tabpanel'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='problema'/><category scheme='http://www.blogger.com/atom/ns#' term='tabcontainer'/><title type='text'>Ajax .Net: ¿Por qué el TabContainer no aparece?</title><content type='html'>Puse el TabContainer y al ejecutar el sitio resulta que no se ve el TabContainer.&lt;br /&gt;&lt;br /&gt;Solución: El problema es porque estaba agregando el &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;TabContainer &lt;/span&gt;¡a pata!, y olvidé ponerle a cada &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;TabPanel &lt;/span&gt;el atributo&lt;span style="font-weight: bold;"&gt; runat="server"&lt;/span&gt;. ¡jeje!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-26967956287407046?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/26967956287407046/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=26967956287407046&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/26967956287407046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/26967956287407046'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/ajax-net-por-que-el-tabcontainer-no.html' title='Ajax .Net: ¿Por qué el TabContainer no aparece?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-6648070948446622231</id><published>2009-10-02T20:40:00.000-06:00</published><updated>2009-10-02T23:08:04.024-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soluciones'/><category scheme='http://www.blogger.com/atom/ns#' term='foro'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='forum'/><title type='text'>Ajax.Net: Soluciones a problemas de Ajax.</title><content type='html'>En el siguiente sitio se explican varias soluciones a problemas que podemos encontrar al trabajar con Ajax.net: &lt;a href="http://forums.asp.net/t/1422287.aspx#faq_v3_6_5"&gt;ver sitio&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por ejemplo, en ese sitio encontré la solución para usar saber cómo mantener el ModalPopupExtender activo después de que ocurra un postback.&lt;br /&gt;&lt;br /&gt;Más detalles del framework en &lt;a href="http://www.asp.net/AJAX/Documentation/Live/Overview/default.aspx"&gt;http://www.asp.net/AJAX/Documentation/Live/Overview/default.aspx&lt;/a&gt;. En éste sitio está todo lo que se necesita para dominar Ajax .Net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-6648070948446622231?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/6648070948446622231/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=6648070948446622231&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6648070948446622231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/6648070948446622231'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/10/ajaxnet-soluciones-problemas-de-ajax.html' title='Ajax.Net: Soluciones a problemas de Ajax.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1140440216606813965</id><published>2009-09-23T19:18:00.000-06:00</published><updated>2009-09-23T19:28:57.357-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax .net'/><category scheme='http://www.blogger.com/atom/ns#' term='modalpopupextender'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='problema'/><category scheme='http://www.blogger.com/atom/ns#' term='ModalPopUp'/><category scheme='http://www.blogger.com/atom/ns#' term='dropdownlist'/><title type='text'>Ajax .Net: ModalPopup y el control DropDownList.</title><content type='html'>¿Por qué al escoger un item de un DropDownList que está en un ModalPopupExtender, del lado del servidor siempre me devuelve el index del primer item?&lt;br /&gt;&lt;br /&gt;Solución: Esto me estaba ocurriendo porque en el evento Page_Load existe un código para llenar el DropDownList, entonces cada vez que se escogía un item y se daba clic en el botón "Guardar" que esta también en el ModalPopup, sucedía que el ciclo de vida de la página pasaba otra vez por el evento Page_Load (lo cual es obvio) y por eso en otro método que tenía, siempre iba a recoger el mismo valor. La solución fue poner una variable de Sessión antes de que el DropDownList se vuelva a llenar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1140440216606813965?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1140440216606813965/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1140440216606813965&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1140440216606813965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1140440216606813965'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/ajax-net-modalpopup-y-el-control.html' title='Ajax .Net: ModalPopup y el control DropDownList.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5862635008839047911</id><published>2009-09-15T22:44:00.000-06:00</published><updated>2009-09-23T20:22:32.005-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='columnas ocultas'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><category scheme='http://www.blogger.com/atom/ns#' term='datakeynames'/><category scheme='http://www.blogger.com/atom/ns#' term='datakey'/><title type='text'>Asp.Net: Recuperar ID de fila en GridView a partir de DataKeys</title><content type='html'>Recuperar el ID de una fila en GridView a partir de la propiedad DataKeys:&lt;br /&gt;&lt;br /&gt;key = Convert.ToString(this.grid.DataKeys[this.grid.SelectedIndex].Value);&lt;br /&gt;&lt;br /&gt;En la variable &lt;span style="color: rgb(51, 102, 255);"&gt;key &lt;/span&gt;queda un valor que representa el ID del registro. En el GridView se tuvo que haber definido mínimo un valor para la propiedad &lt;span style="color: rgb(51, 51, 255);"&gt;DataKeyNames&lt;/span&gt;. En caso de haber definido más de un DataKeyName, para poder recuperarlo sería de la siguiente forma:&lt;br /&gt;&lt;br /&gt;key = Ctype(grid.DataKeys(gris.SelectedIndex).Item(1)&lt;br /&gt;&lt;br /&gt;La propiedad Item(1) escoge el segundo Código de la colección DataKeyNames suponiendo que tenemos una clave primaria formada con dos campos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;La ventaja de esto es que podemos poner un columna oculta pero en el DataSource del GridView existe un Select que está recuperando esos valores de las columnas.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5862635008839047911?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5862635008839047911/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5862635008839047911&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5862635008839047911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5862635008839047911'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/aspnet-recuperar-id-de-fila-en-gridview.html' title='Asp.Net: Recuperar ID de fila en GridView a partir de DataKeys'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4910240349936032770</id><published>2009-09-15T21:24:00.000-06:00</published><updated>2009-09-15T22:06:18.780-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modal'/><category scheme='http://www.blogger.com/atom/ns#' term='modalpopupextender'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='extender'/><category scheme='http://www.blogger.com/atom/ns#' term='ModalPopUp'/><title type='text'>Ajax.Net: Más problemas con controles Ajax.Net</title><content type='html'>1º Tengo un ModalPopupExtender, el problema es que al hacer clic a un botón que está dentro del ModalPopup, éste hace que el modal desaparezca.&lt;br /&gt;&lt;br /&gt;Eso ocurre, porque cualquier botón, textbox, etc, que haga Postback, ya sea porque tiene la propiedad AutoPostBack en True o porque se lanza el evento PostBack desde código Javascript, tendremos como resultado que el ModalPopup termine su función. El control ModalPopup está programado para que se cierre cuando ocurra un PostBack dentro de éste.&lt;br /&gt;&lt;br /&gt;Solución: La solución es usar &lt;span style="font-weight: bold;"&gt;Web Services&lt;/span&gt;. De hecho esta es la forma que se debería utilizar para actualizar controles dentro de un ModalPopup. Además hay que usar un evento de control HTML para que del lado del servidor llame al WebService. Generalmente se usa el evento onblur el cual equivale a TextChanged de un TextBox, suponiendo que el caso es un TextBox, para otros controles se podría usar el evento &lt;span style="color: rgb(51, 51, 255);"&gt;onchange&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;2º No funcionan los validadores en un ModalPopup.&lt;br /&gt;&lt;br /&gt;Solución: Tanto los validadores como los controles que validan deben estar dentro de un ValidationGroup.&lt;br /&gt;&lt;br /&gt;3º Mostrar ModalPopup programáticamente.&lt;br /&gt;&lt;br /&gt;Exite un problema con éste control ya que la propiedad &lt;span style="color: rgb(51, 51, 255);"&gt;TargetControlID&lt;/span&gt; no puede estar vacía. El truco está en asignarle un control HTML del tipo Hidden y que tenga la propiedad runat="server". Luego, con ayuda de otro botón, se puede poner en code behind el código para mostrar al ModalPopup.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ModalPopupExtender1.Show()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La ventaja es que si estamos creando un modal con cuadros de texto dentro, éstos se pueden inicializar con el valor que queramos antes de que el modal aparezca.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4910240349936032770?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4910240349936032770/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4910240349936032770&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4910240349936032770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4910240349936032770'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/ajaxnet-mas-problemas-con-controles.html' title='Ajax.Net: Más problemas con controles Ajax.Net'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8882209400296971842</id><published>2009-09-15T21:08:00.000-06:00</published><updated>2009-09-15T21:20:52.363-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web server'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><title type='text'>Ajax: Recuperar el ID de un control Web Server</title><content type='html'>En ocasiones hay que recuperar el ID de un control en &lt;span style="font-weight: bold;"&gt;Ajax.Net&lt;/span&gt;. en el código Javascript. Podemos usar el objeto &lt;span style="color: rgb(204, 0, 0);"&gt;getElementById&lt;/span&gt;, el objeto &lt;span style="color: rgb(204, 0, 0);"&gt;$get&lt;/span&gt;, &lt;span style="color: rgb(204, 0, 0);"&gt;$find&lt;/span&gt;, pero que ocurre si el objeto está en un &lt;span style="color: rgb(153, 0, 0);"&gt;ContentPlaceHolder&lt;/span&gt;. Si esto ocurre, el control en la página web toma un nombre de ID diferente; el nombre se complementa y para poner un ejemplo podría ser éste: &lt;span class="attribute-value"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;ctl00_ContentPlaceHolder1_Button1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para recuperar el ID exacto y poder usarlo correctamente, se puede usar la instrucción:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;%= expresion %&gt;&lt;/span&gt;, donde &lt;span style="font-weight: bold;"&gt;expresion &lt;/span&gt;se cambia por el nombre del control que le asignamos del lado del servidor seguido de la propiedad &lt;span style="color: rgb(51, 51, 255);"&gt;ControlID&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    function fnTxt() {&lt;br /&gt;         var obj = $get('&lt;%= TextBox1.ClientID %&gt;');&lt;br /&gt;         ...&lt;br /&gt;     }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8882209400296971842?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8882209400296971842/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8882209400296971842&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8882209400296971842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8882209400296971842'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/ajax-recuperar-el-id-de-un-control-web.html' title='Ajax: Recuperar el ID de un control Web Server'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7046898746207061823</id><published>2009-09-15T21:06:00.002-06:00</published><updated>2010-09-18T18:31:55.632-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='postback'/><title type='text'>Ajax: Lanzar un PostBack</title><content type='html'>Ejemplo para ejecutar un evento postback desde javascript usando el Ajax Framework:&lt;br /&gt;&lt;br /&gt;&lt;div id="divLanzarPostBack" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',495)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;function postbackFromJS&lt;span style=""&gt;(&lt;/span&gt;sender, e&lt;span style=""&gt;)&lt;/span&gt; &lt;span style=""&gt;{&lt;/span&gt;&lt;br /&gt;var postBack = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Sys.&lt;span style=""&gt;WebForms&lt;/span&gt;.&lt;span style=""&gt;PostBackAction&lt;/span&gt;&lt;span style=""&gt;(&lt;/span&gt;&lt;span style=""&gt;)&lt;/span&gt;;&lt;br /&gt;postBack.&lt;span style=""&gt;set_target&lt;/span&gt;&lt;span style=""&gt;(&lt;/span&gt;sender&lt;span style=""&gt;)&lt;/span&gt;;   &lt;br /&gt;postBack.&lt;span style=""&gt;set_eventArgument&lt;/span&gt;&lt;span style=""&gt;(&lt;/span&gt;e&lt;span style=""&gt;)&lt;/span&gt;;&lt;br /&gt;postBack.&lt;span style=""&gt;performAction&lt;/span&gt;&lt;span style=""&gt;(&lt;/span&gt;&lt;span style=""&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style=""&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7046898746207061823?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7046898746207061823/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7046898746207061823&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7046898746207061823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7046898746207061823'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/ajax-lanzar-un-postback.html' title='Ajax: Lanzar un PostBack'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1841477856668209532</id><published>2009-09-15T00:22:00.001-06:00</published><updated>2010-03-27T17:51:24.482-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yuicompressor'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS: Comprimir archivos CSS rápidamente en Visual Studio</title><content type='html'>Es relativamente sencillo, solo hay que descargar el ejecutable "&lt;a href="http://yuilibrary.com/downloads/#yuicompressor"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;YUI Compressor&lt;/span&gt;&lt;/a&gt;". Descomprimimos el archivo en un directorio que preferiblemente debemos crear. Luego vamos a Visual Studio y en: Herramientas -&gt; Herramientas Externas ponemos:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Título&lt;/span&gt;: &lt;span style="color: rgb(51, 102, 255);"&gt;YUI Compression&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Comando&lt;/span&gt;: &lt;span style="color: rgb(51, 102, 255);"&gt;C:\WINDOWS\system32\java.exe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Argumentos&lt;/span&gt;: &lt;span style="color: rgb(51, 102, 255);"&gt;-jar C:\Compresor\yuicompressor-2.4.2.jar $(ItemPath) -o $(ItemPath) –v&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Argumentos para comprimir CSS con copia sin tener que reemplazar el original:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;-jar C:\Compresor\yuicompressor-2.4.2.jar $(ItemPath) -o $(ItemDir)$(ItemFileName).min$(ItemExt) –v&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Argumentos para comprimir JS:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;-jar C:\Compresor\yuicompressor-2.4.2.jar $(ItemPath) -o $(ItemPath) –v --charset utf-8&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Argumentos para comprimir JS con copia sin reemplazar el original:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;-jar C:\Compresor\yuicompressor-2.4.2.jar $(ItemPath) -o &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;$(ItemDir)$(ItemFileName).min$(ItemExt) –v --charset utf-8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Nota: Después de comprimir un archivo CSS sería bueno quitar el punto y coma que siempre se pone al final de cada regla de las clases o selectores. El punto y coma en la última regla es opcional.&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Para quitarlo rápidamente ese punto y coma, simplemente hay que hacer un "Replace" de la siguiente combinación de caracteres:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;;) &lt;/span&gt;(punto y coma con paréntesis)&lt;br /&gt;&lt;br /&gt;Luego aceptamos el cuadro de diálogo y listo. Para hacer la prueba, abrimos un archivo CSS en Visual Studio, y luego vamos a &lt;span style="font-weight: bold;"&gt;Herramientas -&gt; YUI Compression&lt;/span&gt;. El resultado será que todas las reglas de CSS se comprimen al máximo; es decir, desaparecen espacios, cambios de línea innecesarios y todo al final queda en una sola línea o más líneas dependiendo de la cantidad de CSS que tenga el archivo. Pero definitivamente lo comprime.&lt;br /&gt;&lt;br /&gt;Está de sobra decir, pero para los novatines, les comento que hay que tener java instalado.&lt;br /&gt;&lt;br /&gt;Por cierto, ¿saben cómo restaurar el código CSS a su estado original? Yo si sé, jaja!, solo hay que presionar la siguiente combinación de teclas: Ctrl + K + D. Dependiendo de los settings que tengan su Visual Studio, esa combinación de teclas puede ser diferente, por eso, en caso de que no funcione verifiquen en el menú &lt;span style="color: rgb(51, 102, 255);"&gt;Editar -&gt; Opciones Avanzadas&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Y para mayor detalle una demostración de tantas que existen en YouTube:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kl7qc_JQIqE&amp;amp;hl=en&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/kl7qc_JQIqE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;También está éste link: &lt;a href="http://blog.krisvandermast.com/CompressingAndObfuscatingJavascriptAndCssFilesWithYUICompressorInVisualStudio.aspx"&gt;Ver&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yui compressor online:&lt;a href="http://refresh-sf.com/yui/#output"&gt;Ver&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1841477856668209532?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1841477856668209532/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1841477856668209532&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1841477856668209532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1841477856668209532'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/css-comprimir-archivos-css-rapidamente.html' title='CSS: Comprimir archivos CSS rápidamente en Visual Studio'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4670588669229035822</id><published>2009-09-13T22:13:00.000-06:00</published><updated>2009-09-13T23:18:25.333-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='registros'/><category scheme='http://www.blogger.com/atom/ns#' term='eliminar'/><category scheme='http://www.blogger.com/atom/ns#' term='multiples registros'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><title type='text'>GridView: Eliminar múltiples registros.</title><content type='html'>Referencias:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://csharpdotnetfreak.blogspot.com/2009/04/delete-multiple-rows-gridview-checkbox.html"&gt;csharpdotnetfreak.blogspot.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4670588669229035822?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4670588669229035822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4670588669229035822&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4670588669229035822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4670588669229035822'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/gridview-eliminar-multiples-registros.html' title='GridView: Eliminar múltiples registros.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2896337939841924270</id><published>2009-09-13T18:23:00.000-06:00</published><updated>2009-09-13T22:09:26.871-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problemas'/><category scheme='http://www.blogger.com/atom/ns#' term='pagemethod'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='pagemethods'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><title type='text'>GridView: Problemas con el GridView?</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;¿No aparece el paging?&lt;/span&gt;&lt;br /&gt;Puede ser porque el PageSize tiene un valor superior para el GridView. Revisar la propiedad PageSize en el cuadro de propiedades.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;¿No hace Paging cuando cambia valor en el DropDownList que se coloca en el PagingTemplate?&lt;/span&gt;&lt;br /&gt;Activar la propiedad AutoPostBack del DropDownList.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;¿El PageTemplate desaparece cuando PageSize es mayor que la cantidad de registros real que se pueden imprimir en el GridView?&lt;/span&gt;&lt;br /&gt;En el evento DataBound del GridView poner lo siguiente:&lt;br /&gt;grid.BottomPagerRow.Visible = True&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;¿La fila a la que se le hizo clic en un GridView, no queda seleccionada?&lt;/span&gt;&lt;br /&gt;Puede ser por varias cosas:&lt;br /&gt;1º Se está usando themes pero no se indicó en la directiva Page o en el archivo de configuración.&lt;br /&gt;&lt;br /&gt;2º Si no se está usando Themes, entonces puede ser porque la hoja de estilos no se asoció al archivo o porque no se configuró la propiedad SelectedRowStyle del GridView.&lt;br /&gt;&lt;br /&gt;3º La fila no tiene el evento onclick y por eso no ocurre el postback.&lt;br /&gt;&lt;br /&gt;4º Puede ser que tenga el evento onclick pero el atributo EnableEventValidation está en true (predeterminado) y debería estar en False.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;¿Un PageMethod asociado con el Grid no se ejecuta?&lt;/span&gt;&lt;br /&gt;La propiedad EnablePageMethods del ScripManager está en False y debería ser True.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2896337939841924270?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2896337939841924270/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2896337939841924270&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2896337939841924270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2896337939841924270'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/gridview-problemas-con-el-gridview.html' title='GridView: Problemas con el GridView?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3362908271841868716</id><published>2009-09-06T01:52:00.001-06:00</published><updated>2009-09-06T01:53:47.504-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='No CSS en Emails'/><category scheme='http://www.blogger.com/atom/ns#' term='correo'/><category scheme='http://www.blogger.com/atom/ns#' term='Email'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='correo electrónico'/><title type='text'>Asp.Net: Como enviar e-mails desde páginas Asp.Net</title><content type='html'>En &lt;a href="http://aspalliance.com/1411"&gt;aspalliance.com&lt;/a&gt; explican demaciado bien cómo enviar mensajes de correo electrónico.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3362908271841868716?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3362908271841868716/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3362908271841868716&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3362908271841868716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3362908271841868716'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/aspnet-como-enviar-e-mails-desde.html' title='Asp.Net: Como enviar e-mails desde páginas Asp.Net'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2704499198153716516</id><published>2009-09-04T19:18:00.000-06:00</published><updated>2009-09-05T02:20:08.809-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LosFormatter'/><category scheme='http://www.blogger.com/atom/ns#' term='limpiar'/><category scheme='http://www.blogger.com/atom/ns#' term='comprimir'/><category scheme='http://www.blogger.com/atom/ns#' term='ViewState'/><category scheme='http://www.blogger.com/atom/ns#' term='tunear'/><category scheme='http://www.blogger.com/atom/ns#' term='borrar'/><title type='text'>Asp.Net: Limpiar por completo el VIEWSTATE</title><content type='html'>Para poder limpiar el viewstate por completo hay que sobre escribir el método SavePageStateToPersistenceMedium y el método LoadPageStateFromPersistenceMedium.&lt;br /&gt;&lt;br /&gt;En C# se puede hacer de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;protected&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;override&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;object&lt;/span&gt;&lt;span style="font-size:85%;"&gt; LoadPageStateFromPersistenceMedium()&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;return&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Session[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);font-size:85%;" &gt;"ViewState"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;protected&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;override&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;void&lt;/span&gt;&lt;span style="font-size:85%;"&gt; SavePageStateToPersistenceMedium(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-size:85%;" &gt;object&lt;/span&gt;&lt;span style="font-size:85%;"&gt; viewState)&lt;br /&gt;{&lt;br /&gt;Session[&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);font-size:85%;" &gt;"ViewState"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;] = viewState;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;RegisterHiddenField(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);font-size:85%;" &gt;"__VIEWSTATE"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);font-size:85%;" &gt;""&lt;/span&gt;&lt;span style="font-size:85%;"&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;En Visual Basic .Net:&lt;br /&gt;&lt;br /&gt; Protected Overloads Overrides Sub SavePageStateToPersistenceMedium(ByVal viewState As Object)&lt;br /&gt;     Page.ClientScript.RegisterHiddenField("__VIEWSTATE", "")&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt; Protected Overloads Overrides Function LoadPageStateFromPersistenceMedium() As Object&lt;br /&gt;     Return Session("ViewState")&lt;br /&gt; End Function&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Referencias:&lt;br /&gt;&lt;a href="http://www.carloszanini.com.ar/archive/2006/06/28/como-quitar-correctamente-el-viewstate-en-asp-net-2-0.aspx"&gt;www.carloszanini.com.ar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tek-tips.com/viewthread.cfm?qid=1509737&amp;amp;page=4"&gt;www.tek-tips.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.listhosting.net/support/origdocs/dotnetsdk/cpref/frlrfsystemwebuipageclassregisterhiddenfieldtopic.htm"&gt;www.listhosting.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cprieto.com/?tag=/net&amp;amp;page=2"&gt;Todo sobre ViewState&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.itbuilder.com.mx/blogs/gabriel.oliva/post/How-to-fine-tune-your-asp-net-20-app---Part-2.aspx"&gt;How to fine tune your asp net 2.0 app - Part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://devlixir.com/blog/asp-net/comprimiendo-viewstate-en-paginas-asp-net/"&gt;Comprimir el ViewState&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.asp.net/ngur/archive/2003/12/18/44356.aspx"&gt;La clase LosFormatter&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2704499198153716516?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2704499198153716516/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2704499198153716516&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2704499198153716516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2704499198153716516'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/aspnet-limpiar-por-completo-el.html' title='Asp.Net: Limpiar por completo el VIEWSTATE'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2002718641571255414</id><published>2009-09-03T18:17:00.000-06:00</published><updated>2009-09-04T16:32:18.801-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><title type='text'>Windows Vista: ¿Que está haciendo éste hombre con Windows Vista?</title><content type='html'>Yo no tengo Windows Vista y me gustaría comprarlo más adelante sin embargo he escuchado durante varios meses que Windows Vista ¡nada que ver!; no me he tomado la molestia de bajar un versión de prueba pero me he puesto a leer algo al respecto. Y entre lectura y lectura encontré un video que demuestra la reacción de una persona que en definitiva no le gusto Windows Vista.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FVbf9tOGwno&amp;hl=en&amp;fs=1&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/FVbf9tOGwno&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Este video tan cómico lo encontré en &lt;a href="http://www.securitytube.net/"&gt;www.securitytube.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2002718641571255414?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2002718641571255414/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2002718641571255414&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2002718641571255414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2002718641571255414'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/windows-vista-que-esta-haciendo-esre.html' title='Windows Vista: ¿Que está haciendo éste hombre con Windows Vista?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-4836964292324637286</id><published>2009-09-03T01:48:00.001-06:00</published><updated>2011-07-23T10:25:57.822-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='resetear'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='reset css'/><title type='text'>CSS: Resetear CSS en todos los navegadores.</title><content type='html'>En &lt;a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/"&gt;meyerweb.com&lt;/a&gt; encontré unas cuantas reglas de CSS que permiten resetear los CSS predeterminados que vienen en los navegadores. Vale la pena probarlo.&lt;br /&gt;&lt;br /&gt;El código es el siguiente:&lt;br /&gt;&lt;pre&gt;html, body, div, span, applet, object, iframe,&lt;br /&gt;h1, h2, h3, h4, h5, h6, p, blockquote, pre,&lt;br /&gt;a, abbr, acronym, address, big, cite, code,&lt;br /&gt;del, dfn, em, font, img, ins, kbd, q, s, samp,&lt;br /&gt;small, strike, strong, sub, sup, tt, var,&lt;br /&gt;dl, dt, dd, ol, ul, li,&lt;br /&gt;fieldset, form, label, legend,&lt;br /&gt;table, caption, tbody, tfoot, thead, tr, th, td {&lt;br /&gt;margin: 0;&lt;br /&gt;padding: 0;&lt;br /&gt;border: 0;&lt;br /&gt;outline: 0;&lt;br /&gt;font-weight: inherit;&lt;br /&gt;font-style: inherit;&lt;br /&gt;font-size: 100%;&lt;br /&gt;font-family: inherit;&lt;br /&gt;vertical-align: baseline;&lt;br /&gt;}&lt;br /&gt;/* remember to define focus styles! */&lt;br /&gt;:focus {&lt;br /&gt;outline: 0;&lt;br /&gt;}&lt;br /&gt;body {&lt;br /&gt;line-height: 1;&lt;br /&gt;color: black;&lt;br /&gt;background: white;&lt;br /&gt;}&lt;br /&gt;ol, ul {&lt;br /&gt;list-style: none;&lt;br /&gt;}&lt;br /&gt;/* tables still need 'cellspacing="0"' in the markup */&lt;br /&gt;table {&lt;br /&gt;border-collapse: separate;&lt;br /&gt;border-spacing: 0;&lt;br /&gt;}&lt;br /&gt;caption, th, td {&lt;br /&gt;text-align: left;&lt;br /&gt;font-weight: normal;&lt;br /&gt;}&lt;br /&gt;blockquote:before, blockquote:after,&lt;br /&gt;q:before, q:after {&lt;br /&gt;content: "";&lt;br /&gt;}&lt;br /&gt;blockquote, q {&lt;br /&gt;quotes: "" "";&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-4836964292324637286?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/4836964292324637286/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=4836964292324637286&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4836964292324637286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/4836964292324637286'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/css-resetear-css-en-todos-los.html' title='CSS: Resetear CSS en todos los navegadores.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-9120470241776086666</id><published>2009-09-02T21:45:00.007-06:00</published><updated>2010-09-18T18:42:03.958-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modalpopupextender'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='scriptmanager'/><title type='text'>Asp.Net: ModalPopupExtender y evento onclick</title><content type='html'>Estaba implementando el control ModalPopupExtender pero quería que al presionar el botón que establecí para el atributo OkControlID, hiciera una tarea específica, por ejemplo,  que actualice la propiedad Text de un Label. (El atributo CancelControlID también esta presente en el control ModalPopupExtender).&lt;br /&gt;&lt;br /&gt;Ya existía del lado del servidor un código que se debía ejecutar cuando hago clic en dicho botón. El problema es que no se estaba ejecutando ese código. El código XHTML para el modalpopup es el que se muestra a continuación:&lt;br /&gt;&lt;br /&gt;&lt;div id="divModalPopupExtenderEventoOnclick1" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',900)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;div id="modalMsg" style="border: 0.01em dotted brown; display: none; width: 320px; height: 80px;"&amp;gt;&lt;br /&gt;&amp;lt;span style="font-weight: bold; margin-bottom: 20px;"&amp;gt;¿Seguro que desea eliminar el&lt;br /&gt;registro?&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;&lt;br /&gt;&amp;lt;asp:button id="btnSi" runat="server" text="Sí" onclick="Msg()"&amp;gt;&lt;br /&gt;&amp;lt;asp:button id="btnNo" runat="server" text="No"&amp;gt;&lt;br /&gt;&amp;lt;/asp:button&amp;gt;&amp;lt;/asp:button&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;También se observan los botones btnSi y btnNo. Veamos que el atributo onclick está presente. Lo puse para ejecutar en el lado del cliente una simple función de ejemplo.&lt;br /&gt;&lt;br /&gt;Para empezar, el atributo onclick en un botón del lado del servidor, no es compatible con controles del tipo "Web Serve Control". Lo que se debe usar es el atributo OnClientClick.&lt;br /&gt;Si fuera un botón Html si funcionaría. Si yo dejo el onclick aparecerá un error indicando que la función Msg() no es parte del archivo &lt;span style="font-family:Arial,Helvetica,Geneva,SunSans-Regular,sans-serif;"&gt;ASP.default_aspx'&lt;/span&gt;. Por lo tanto, en vez de onclick hay que usar OnClientClick.&lt;br /&gt;&lt;br /&gt;Pero aun queda el problema de que no se está ejecutando el método del lado del servidor. El código para el botón btnSi es el siguiente:&lt;br /&gt;&lt;div id="divModalPopupExtenderEventoOnclick2" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',900)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;Protected Sub btnSi_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSi.Click&lt;br /&gt;lblResultado.Text = "Hizo clic en el botón 'Sí'"&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;El objetivo es que ese método del lado del servidor se ejecute sin problemas; es evidente que al usar ModalPopupExtender, dicha funcionalidad se pierde.&lt;br /&gt;&lt;br /&gt;La solución es usar el atributo OnClientClick más una función que ejecute el método __doPostBack:&lt;br /&gt;&lt;div id="divModalPopupExtenderEventoOnclick3" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',900)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;&amp;lt;div id="modalMsg" style="border: 0.01em dotted brown; display: none; width: 320px; height: 80px;"&amp;gt;&lt;br /&gt;&amp;lt;span style="font-weight: bold; margin-bottom: 20px;"&amp;gt;¿Seguro que desea eliminar el&lt;br /&gt;registro?&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;&lt;br /&gt;&amp;lt;asp:button id="btnSi" runat="server" text="Sí" onclientclick="server('btnSi')"&amp;gt;&lt;br /&gt;&amp;lt;asp:button id="btnNo" runat="server" text="No" onclientclick="server('btnNo')"&amp;gt;&lt;br /&gt;&amp;lt;/asp:button&amp;gt;&amp;lt;/asp:button&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;function server(arg) &lt;br /&gt;{&lt;br /&gt; __doPostBack(arg, '');&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;No obstante existe otra solución. Ya dijimos que los atributos OkControlID y CancelControlID se están utilizando. La segunda solución sería eliminar esos atributos del todo y listo, no es necesario hacer nada más.&lt;br /&gt;&lt;br /&gt;En caso de que el Label este dentro de un control UpdatePanel, se debe registrar en el evento Page_Load el botón btnSi con:&lt;br /&gt;&lt;br /&gt;ScriptManager1.RegisterAsyncPostBackControl(btnSi)&lt;br /&gt;&lt;br /&gt;Eso hará que el Label se actualice asíncronamente si tener que refrescar toda la página. Un equivalente es registrar un Trigger para el botón dentrol del UpdatePanel.&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;a href="http://aspnetajax.chaokers.cn/mref/M_System_Web_UI_ScriptManager_RegisterAsyncPostBackControl_1_62fe17e7.aspx"&gt;Asp.Net Ajax&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-9120470241776086666?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/9120470241776086666/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=9120470241776086666&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/9120470241776086666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/9120470241776086666'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/aspnet-modalpopupextender-y-evento.html' title='Asp.Net: ModalPopupExtender y evento onclick'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-2297335659707346143</id><published>2009-09-01T21:44:00.004-06:00</published><updated>2010-09-18T18:46:16.162-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='configurationmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='codigos'/><category scheme='http://www.blogger.com/atom/ns#' term='ado.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Repeater'/><title type='text'>Ado.Net: Códigos valiosos.</title><content type='html'>1º &lt;span style="color: rgb(51, 51, 255);"&gt;ConfigurationManager&lt;/span&gt;&lt;br /&gt;Dim cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString)&lt;br /&gt;Response.Write(cnn.ConnectionString)&lt;br /&gt;&lt;br /&gt;2º &lt;span style="color: rgb(51, 51, 255);"&gt;ConfigurationManager&lt;/span&gt;&lt;br /&gt;System.Configuration.ConfigurationSettings.AppSettings["connstr"].ToString();&lt;br /&gt;&lt;br /&gt;3º &lt;span style="color: rgb(51, 51, 255);"&gt;ConfigurationManager&lt;/span&gt;&lt;br /&gt;ConfigurationManager.GetSection("prodSection")&lt;br /&gt;&lt;br /&gt;4º &lt;span style="color: rgb(51, 51, 255);"&gt;ConfigurationManager&lt;/span&gt;&lt;br /&gt;ConfigurationManager.GetWebAppSection("prodSection")&lt;br /&gt;&lt;br /&gt;5º &lt;span style="color: rgb(51, 51, 255);"&gt;Agregar atributo a una fila de un GridView en Asp.Net:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)&lt;br /&gt;{&lt;br /&gt;if (e.Row.RowType == DataControlRowType.DataRow)&lt;br /&gt;{&lt;br /&gt;e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='Silver'");&lt;br /&gt;e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='White'");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;6º &lt;span style="color: rgb(51, 51, 255);"&gt;Insertar código JS:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dim script As New StringBuilder&lt;br /&gt;script.Append("&lt;script type="'text/javascript'"&gt;")script.Append("var respaldoColor;")script.Append("&lt;/script&gt;")&lt;br /&gt;Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "MyScript", script.ToString)&lt;br /&gt;&lt;br /&gt;7º &lt;span style="color: rgb(51, 51, 255);"&gt;Filtrar items que se van insertando en un Repeater control de Asp.Net&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="divCodigosValiosos" style="overflow:hidden;width:495px" onmouseover="SetBackGround(this.id,'visible',900)" onmouseout="SetBackGround(this.id,'hidden',495)"&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Protected Sub &lt;/span&gt;Repeater1_ItemCreated(ByVal sender As Object,&lt;br /&gt;ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemCreated&lt;br /&gt;Dim nav As XPathNavigator = CType(e.Item.DataItem, IXPathNavigable).CreateNavigator&lt;br /&gt;&lt;br /&gt;For Each o As Object In e.Item.Controls&lt;br /&gt;If TypeOf o Is HtmlAnchor Then&lt;br /&gt;Dim pagina As String = nav.Select("/Titulos/Titulo").Current.SelectSingleNode("pagina").Value&lt;br /&gt;If pagina = "Cursos" Then&lt;br /&gt;If User.Identity.IsAuthenticated Then&lt;br /&gt;Dim archivo As String = nav.Select("/Titulos/Titulo").Current.SelectSingleNode("archivo").Value&lt;br /&gt;&lt;br /&gt;o.Attributes.Add("href", "media/images/" + archivo)&lt;br /&gt;o.Attributes.Add("rel", "lightbox[roadtrip]")&lt;br /&gt;&lt;br /&gt;Else&lt;br /&gt;o.Attributes.Add("href", "/")&lt;br /&gt;o.Attributes.Add("class", "verModal")&lt;br /&gt;End If&lt;br /&gt;Else&lt;br /&gt;e.Item.Visible = False&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-2297335659707346143?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/2297335659707346143/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=2297335659707346143&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2297335659707346143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/2297335659707346143'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/adonet-codigos-valiosos.html' title='Ado.Net: Códigos valiosos.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5663597105641220802</id><published>2009-09-01T18:31:00.001-06:00</published><updated>2009-09-01T19:37:11.512-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maquetación'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS: Hoja estilo para maquetación básica.</title><content type='html'>Este es el CSS para maquetar una página con encabezado, tres columnas y un pie de página.&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;{&lt;br /&gt;   border: 0;&lt;br /&gt;   margin: 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;body&lt;br /&gt;{&lt;br /&gt;   font-family: Georgia,Arial, Helvetica, sans-serif;&lt;br /&gt;   font-size: medium;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Si el ancho cambia, hay que reajustar los porcentajes de&lt;br /&gt;la columna central. */&lt;br /&gt;.container&lt;br /&gt;{&lt;br /&gt;   width: 800px;&lt;br /&gt;   margin: 0 auto;    &lt;br /&gt;   border:0.01em dotted blue;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.header&lt;br /&gt;{&lt;br /&gt;   width: 100%;&lt;br /&gt;   height: 120px;&lt;br /&gt;   background-color: Aqua;&lt;br /&gt;   border:0.01em dotted blue;&lt;br /&gt;   clear:both;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.leftColumn&lt;br /&gt;{&lt;br /&gt;   width: 24%;&lt;br /&gt;   min-height: 400px;&lt;br /&gt;   border:0.01em dotted blue;&lt;br /&gt;   float:left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.mainColumn&lt;br /&gt;{&lt;br /&gt;   width: 51.2%; /* Ajustar si ancho de Container cambia. */&lt;br /&gt;   border:0.01em dotted blue;&lt;br /&gt;   min-height: 400px;  &lt;br /&gt;   float:left;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.rightColumn&lt;br /&gt;{&lt;br /&gt;   width: 24%;&lt;br /&gt;   border:0.01em dotted blue;&lt;br /&gt;   min-height: 400px;&lt;br /&gt;   float:right;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.footer&lt;br /&gt;{&lt;br /&gt;width:100%;&lt;br /&gt;height:50px; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#separador&lt;br /&gt;{&lt;br /&gt;clear:both; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;La estructura básica sería:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    &amp;lt;div class="container"&amp;gt;&lt;br /&gt;        &amp;lt;div class="header"&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div class="leftColumn"&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div class="mainColumn"&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div class="rightColumn"&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div id="separador"&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div class="footer"&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5663597105641220802?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5663597105641220802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5663597105641220802&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5663597105641220802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5663597105641220802'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/css-hoja-estilo-para-maquetacion-basica.html' title='CSS: Hoja estilo para maquetación básica.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-917038044575453755</id><published>2009-09-01T09:49:00.000-06:00</published><updated>2009-09-01T09:58:45.072-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vertical'/><category scheme='http://www.blogger.com/atom/ns#' term='horizontal'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='menu'/><title type='text'>CSS: Menú con CSS</title><content type='html'>Un ejemplo sencillo de menú horizontal o vertical lo podemos encontrar en &lt;a href="http://www.cssblog.es/crear-un-menu-horizontal-simple-con-css/"&gt;www.cssblog.es&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otras referencias:&lt;br /&gt;&lt;br /&gt;El iguiente link es interesante, presenta una lista de menus listos para descargar y lo mejor de todo es que se pueden modificar antes de descargarlos. El enlace es &lt;a href="http://www.cssmenumaker.com/"&gt;www.cssmenumaker.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para rematar, jeje! encontré en un blog que presenta una gran lista de sitios que hablan sobre creación de menus con CSS. El sitio es &lt;a href="http://blogvecindad.com/lista-completa-de-menus-con-css-para-diseandores-web/2007/06/05"&gt;blogvecindad.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-917038044575453755?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/917038044575453755/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=917038044575453755&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/917038044575453755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/917038044575453755'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/09/css-sencillo-menu-con-css.html' title='CSS: Menú con CSS'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-442510173849734363</id><published>2009-08-31T21:43:00.001-06:00</published><updated>2009-08-31T21:48:05.339-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='template.php'/><category scheme='http://www.blogger.com/atom/ns#' term='bloques de código'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='injectar'/><title type='text'>Drupal: Insertar código Javascript desde archivo template.php</title><content type='html'>Ejemplo rápido sobre como insertar código JS desde el archivo template.php:&lt;br /&gt;&lt;br /&gt;function bluemarine_preprocess_page(&amp;amp;$vars, $hook) {&lt;br /&gt;    if ($hook == 'page')&lt;br /&gt;    {&lt;br /&gt;        drupal_add_js('alert("Hola");','inline');&lt;br /&gt;        $vars['scripts'] = drupal_get_js();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Notar la definición del encabezado de la función que consiste en:&lt;br /&gt;&lt;br /&gt;                       function NombreTheme_preprocess_page(&amp;amp;$vars, $hook) {...}&lt;br /&gt;&lt;br /&gt;En la función drupal_add_js el segundo parámetro es 'inline' para indicar que el código que se va a insertar es código que &lt;span style="font-weight: bold;"&gt;no procede de un archivo externo&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-442510173849734363?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/442510173849734363/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=442510173849734363&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/442510173849734363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/442510173849734363'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/drupal-insertar-codigo-javascript-desde.html' title='Drupal: Insertar código Javascript desde archivo template.php'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-3271135766638324355</id><published>2009-08-28T18:07:00.000-06:00</published><updated>2009-08-28T18:28:47.672-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reescribir'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='override'/><category scheme='http://www.blogger.com/atom/ns#' term='cambiar'/><title type='text'>Drupal: Reescribir una URL con código PHP</title><content type='html'>Para poder reescribir la URL de un enlace, se puede usar la función "custom_url_rewrite_outbound". Por ejemplo, supongamos que tenemos un catálogo generado por el Ubercart. Cada elemento del catálogo muestra una imágen y un título, cada grupo de imágen y título  tienen el mismo URL, el cual lleva al usuario a una página general donde se muestran todos los items relacionados con el nombre de catálogo al cual se le hizo clic.&lt;br /&gt;&lt;br /&gt;El problema sería ¿cómo puedo hacer para que después de hacer clic en uno de los items que muestra el catálogo, muestre más bien, el resultado de una Vista u otra página que nosotros queramos?&lt;br /&gt;&lt;br /&gt;La solución más rápida que encontré es agregando en el archivo &lt;span style="color: rgb(51, 102, 255);"&gt;settings.php&lt;/span&gt; la función llamada "&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;custom_url_rewrite_outbound&lt;/span&gt;". Con ésta función es posible reescribir la url de cualquier enlace que exista en la aplicación Drupal que estemos creando.&lt;br /&gt;&lt;br /&gt;El código de ejemplo es:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;function&lt;/span&gt; custom_url_rewrite_outbound(&amp;amp;$path, &amp;amp;$options, $original_path) {&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(preg_match('|^catalog/(.*)|', $path, $matches)) {&lt;br /&gt;    preg_match('/[0-9]+$/', $path, $matches);&lt;br /&gt;    &lt;span style="color: rgb(102, 0, 204);"&gt;switch &lt;/span&gt;($matches[0])&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;'3':&lt;br /&gt;            $path = drupal_get_path_alias('catalogo-alicates');&lt;br /&gt;            break;   &lt;br /&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;'4':&lt;br /&gt;            $path = drupal_get_path_alias('catalogo-lijas');&lt;br /&gt;            break;           &lt;br /&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;'5':&lt;br /&gt;            $path = drupal_get_path_alias('catalogo-martillos');&lt;br /&gt;            break;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Notar que en el primer preg_match: preg_match('|^catalog/(.*)|', $path, $matches), usamos una expresión regular para filtrar la url que queramos analizar. En mi caso la URL original es de la forma:&lt;br /&gt;&lt;br /&gt;        http://www.dominio.com/&lt;span style="color: rgb(255, 0, 0);"&gt;catalog/5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lo que está en color rojo, es lo que deseo cambiar por&lt;br /&gt;&lt;br /&gt;               http://www.dominio.com/&lt;span style="color: rgb(255, 0, 0);"&gt;catalogo-martillos&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;Dependiendo del número que aparezca en la URL, se establece el alias. Esos alias que estoy usando son páginas que apuntan a Vistas de Drupal previamente creadas.&lt;br /&gt;&lt;br /&gt;En realidad, la cosa es más compleja, pues estoy usando taxonomía; cada elemento del catálogo es un término taxonómico. En el índice de términos se observa la relación que existe entre el nombre que le dimos al término y la url que se le asignó automáticamente.&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;a href="http://drupal.org/node/207330"&gt;http://drupal.org/node/207330&lt;/a&gt;&lt;br /&gt;&lt;a href="http://drupal.org/node/243889"&gt;http://drupal.org/node/243889&lt;/a&gt;&lt;br /&gt;&lt;a href="http://agaric.com/note/override-taxonomy/term-style-links-custom-module-owned-vocabulary"&gt;http://agaric.com/note/override-taxonomy&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.webcheatsheet.com/php/regular_expressions.php"&gt;regular_expressions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-3271135766638324355?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/3271135766638324355/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=3271135766638324355&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3271135766638324355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/3271135766638324355'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/drupal-reescribir-una-url-con-codigo.html' title='Drupal: Reescribir una URL con código PHP'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-7714269269639529058</id><published>2009-08-26T18:55:00.001-06:00</published><updated>2009-08-26T18:59:20.816-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chm'/><title type='text'>Archivos CHM no funcionan.</title><content type='html'>Descargué un archivo con formato *.chm. El problema es que no podía verlo, ¿por qué?&lt;br /&gt;&lt;br /&gt;La respuesta se explica en esta página: &lt;a href="http://blogs.msdn.com/robcaron/archive/2005/06/23/431976.aspx"&gt;Chm Files&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Brevemente, para poder ver el archivo, hay que ir a las propiedades del archivo y notaremos que existe un botón que dice "Unblock". Hay que hacer clic en dicho botón y listo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-7714269269639529058?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/7714269269639529058/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=7714269269639529058&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7714269269639529058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/7714269269639529058'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/archivos-chm-no-funcionan.html' title='Archivos CHM no funcionan.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1372069620985855923</id><published>2009-08-18T14:02:00.000-06:00</published><updated>2009-08-18T16:12:29.573-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='transparencias'/><category scheme='http://www.blogger.com/atom/ns#' term='ie6-upgrade-warning'/><category scheme='http://www.blogger.com/atom/ns#' term='ie6'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Drupal: Corregir imágenes transparentes en IE5, IE6</title><content type='html'>Excelente módulo para corregir transparencias que en IE5 ó IE6 definitivamente son un caso especial. El módulo está en &lt;a href="http://www.jwpctips.com/drupal/transparent-png-images-ie5-and-ie6-using-drupal.html"&gt;www.jwpctips.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lo único que hay que hacer es instalar el módulo, luego en el archivo page.tpl.php buscamos la imágen que queremos corregir. Dicha imágen la encerramos con un bloque DIV de la forma:&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="pngfix"&amp;gt;&lt;br /&gt;&amp;lt;img .......&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Alternativa dos&lt;/span&gt;: &lt;a href="http://adaptivethemes.com/transparent-png-images-in-ie6-with-drupal-and-jquery"&gt;Enlace relacionado&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Alternativa 3:&lt;/span&gt;&lt;br /&gt;Otra alternativa que en lo personal, me gusta mucho es ni más ni menos que evitar de una vez por todas el uso de versiones inferiores a IE7. En lo personal creo que los navegadores web de Microsoft definitivamente llevan la contraria a lo que es CSS, de hecho es el único, que yo sepa!, que no respeta las normas de CSS establecidas por la W3C. Una forma para indicarle al usuario que se actualice es usando &lt;a href="http://code.google.com/p/ie6-upgrade-warning/"&gt;&lt;span style="font-weight:bold;"&gt;ie6-upgrade-warning&lt;/span&gt;&lt;/a&gt; de lo contrario inventarse un código para que detecte en que navegador se va a presentar la información y de esa forma impedir la carga del sitio o mostrar un mensaje de advertencia indicando que el sitio no se puede ver correctamente en versiones IE6 e inferiores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1372069620985855923?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1372069620985855923/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1372069620985855923&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1372069620985855923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1372069620985855923'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/drupal-corregir-imagenes-transparentes.html' title='Drupal: Corregir imágenes transparentes en IE5, IE6'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-8621163723963582920</id><published>2009-08-17T15:32:00.000-06:00</published><updated>2009-08-17T15:34:33.889-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>Joomla: ¿Qué es Joomla?</title><content type='html'>Una breve pero clara introducción a Joomla la podemos encontrar en &lt;a href="http://www.maestrosdelweb.com/editorial/que-es-joomla/"&gt;Maestros del Web&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-8621163723963582920?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/8621163723963582920/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=8621163723963582920&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8621163723963582920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/8621163723963582920'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/joomla-que-es-joomla.html' title='Joomla: ¿Qué es Joomla?'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-9069194279470838700</id><published>2009-08-17T14:39:00.000-06:00</published><updated>2009-08-17T14:55:43.084-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><category scheme='http://www.blogger.com/atom/ns#' term='Aplicacion Web'/><category scheme='http://www.blogger.com/atom/ns#' term='logos'/><title type='text'>Diseño Web: Normas para crear un logo.</title><content type='html'>Normas básicas para el diseño de un logo para la web. En el sitio explican los conceptos de logo, isotipo, logotipo, etc. &lt;a href="Normas básicas para el diseño de un logo para la web"&gt;Ver&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otros enlaces relacionados:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cristalab.com/tutoriales/diseno-web-fundamentos-basicos-c63l/"&gt;Diseño web, fundamentos básicos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cristalab.com/tutoriales/fundamentos-del-diseno-grafico-c126l/"&gt;Fundamentos del diseño grafico&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cristalab.com/tutoriales/tipos-de-imagenes-para-internet-c158l/"&gt;Tipos de imagenes para internet&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cristalab.com/tutoriales/diseno-web-para-iphone-c266l/"&gt;Diseño web para iPhone&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cristalab.com/tutoriales/componer-un-diseno-de-3-columnas-en-xhtml-y-css-c131l/"&gt;Componer un diseño de 3 columnas en XHTML y CSS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.maestrosdelweb.com/editorial/presupuest/"&gt;¿Como presentar un presupuesto cautivador?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-9069194279470838700?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/9069194279470838700/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=9069194279470838700&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/9069194279470838700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/9069194279470838700'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/diseno-web-normas-para-crear-un-logo.html' title='Diseño Web: Normas para crear un logo.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1593864273063396307</id><published>2009-08-11T17:43:00.000-06:00</published><updated>2009-08-11T17:45:09.589-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='descargar'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='subir archivos'/><title type='text'>Asp.Net: Código para descargar un archivo.</title><content type='html'>Código para descargar un archivo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cxUdZdosOJg/SoICXUaRU_I/AAAAAAAAAB8/Ai6eKDIFvCI/s1600-h/aaaaa.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 59px;" src="http://3.bp.blogspot.com/_cxUdZdosOJg/SoICXUaRU_I/AAAAAAAAAB8/Ai6eKDIFvCI/s200/aaaaa.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368856305418195954" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1593864273063396307?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1593864273063396307/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1593864273063396307&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1593864273063396307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1593864273063396307'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/aspnet-codigo-para-descargar-un-archivo.html' title='Asp.Net: Código para descargar un archivo.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cxUdZdosOJg/SoICXUaRU_I/AAAAAAAAAB8/Ai6eKDIFvCI/s72-c/aaaaa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1123881206601068659</id><published>2009-08-11T17:30:00.000-06:00</published><updated>2009-08-11T17:33:56.731-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><title type='text'>JQuery: Establecer colores en líneas alternas de una tabla.</title><content type='html'>En el siguiente trozo de código se muestra como utilizando JQuery es posible cambiar el color de las líneas de una tabla pero en forma alterna:&lt;br /&gt;&lt;br /&gt;$(document).ready(function()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$('tr:odd').addClass('odd');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$('tr:even').addClass('even');&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1123881206601068659?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1123881206601068659/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1123881206601068659&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1123881206601068659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1123881206601068659'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/jquery-establecer-colores-en-lineas.html' title='JQuery: Establecer colores en líneas alternas de una tabla.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-522299143792384879</id><published>2009-08-08T11:28:00.000-06:00</published><updated>2009-08-08T11:31:38.656-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jaja'/><category scheme='http://www.blogger.com/atom/ns#' term='chiste'/><title type='text'>Jaja: Solo para super mega programadores</title><content type='html'>Encontré una imagen muy curiosa o más bien chistosa en &lt;a href="http://www.ribosomatic.com/articulos/solo-para-super-programadores-imagen/"&gt;ribosomatic&lt;/a&gt;. A continuación la imagen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cxUdZdosOJg/Sn22NgFUbQI/AAAAAAAAAB0/-9Onz7Gdlt4/s1600-h/supercoder.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://2.bp.blogspot.com/_cxUdZdosOJg/Sn22NgFUbQI/AAAAAAAAAB0/-9Onz7Gdlt4/s200/supercoder.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5367646673962298626" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-522299143792384879?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/522299143792384879/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=522299143792384879&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/522299143792384879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/522299143792384879'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/jaja-solo-para-super-mega-programadores.html' title='Jaja: Solo para super mega programadores'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cxUdZdosOJg/Sn22NgFUbQI/AAAAAAAAAB0/-9Onz7Gdlt4/s72-c/supercoder.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-1416489202253209996</id><published>2009-08-07T12:58:00.000-06:00</published><updated>2009-08-07T13:01:33.580-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='obstructivo'/><category scheme='http://www.blogger.com/atom/ns#' term='obstrusivo'/><category scheme='http://www.blogger.com/atom/ns#' term='obstrucivo'/><title type='text'>Javascript: JS no obstructivo</title><content type='html'>Interesante desarrollo del tema sobre javascript no obstructivo el cual se puede leer en el blog de &lt;a href="http://www.anieto2k.com/2006/10/15/javascript-no-obstructivo-manual-de-buenas-maneras/"&gt;anieto2K&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-1416489202253209996?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/1416489202253209996/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=1416489202253209996&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1416489202253209996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/1416489202253209996'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/javascript-js-no-obstructivo.html' title='Javascript: JS no obstructivo'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-5505920108571932414</id><published>2009-08-04T21:31:00.000-06:00</published><updated>2009-08-04T21:32:57.770-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><title type='text'>Asp.Net: Gridview con estilos.</title><content type='html'>En el sitio &lt;a href="http://netcodigo.webinfo.es/2008/02/29/gridviews-con-estilo/"&gt;NetCodigo&lt;/a&gt; explican unos buenos ejemplos para aplicar estilos a los GridViews y además muestran ejemplos los cuales se pueden descargar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-5505920108571932414?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/5505920108571932414/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=5505920108571932414&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5505920108571932414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/5505920108571932414'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/aspnet-gridview-con-estilos.html' title='Asp.Net: Gridview con estilos.'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-654611909739212493</id><published>2009-08-04T09:32:00.000-06:00</published><updated>2009-08-05T12:35:56.303-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Accordion'/><title type='text'>Ajax .Net: El control Accordion</title><content type='html'>Código que va en el Head de la página xhtml:&lt;br /&gt;&lt;br /&gt;&lt;a rel="lightbox" href="http://1.bp.blogspot.com/_cxUdZdosOJg/SnhVFQIB_RI/AAAAAAAAABU/9YQwk3qrrNs/s1600-h/accordion.jpg" rel="lightbox"&gt;&lt;img style="cursor: pointer; width: 200px; height: 57px;" src="http://1.bp.blogspot.com/_cxUdZdosOJg/SnhVFQIB_RI/AAAAAAAAABU/9YQwk3qrrNs/s200/accordion.jpg" alt="" id="BLOGGER_PHOTO_ID_5366132504728304914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Código que va en página xhtml:&lt;br /&gt;&lt;br /&gt;&lt;a rel="lightbox" href="http://4.bp.blogspot.com/_cxUdZdosOJg/SnhVZ4A6vII/AAAAAAAAABc/j4OXHBVE3bw/s1600-h/accordion.jpg"&gt;&lt;img style="cursor: pointer; width: 185px; height: 200px;" src="http://4.bp.blogspot.com/_cxUdZdosOJg/SnhVZ4A6vII/AAAAAAAAABc/j4OXHBVE3bw/s200/accordion.jpg" alt="" id="BLOGGER_PHOTO_ID_5366132859033271426" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-654611909739212493?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/654611909739212493/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=654611909739212493&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/654611909739212493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/654611909739212493'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/ajax-net-el-control-accordion.html' title='Ajax .Net: El control Accordion'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cxUdZdosOJg/SnhVFQIB_RI/AAAAAAAAABU/9YQwk3qrrNs/s72-c/accordion.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2047999072384010161.post-105558084111814168</id><published>2009-08-03T18:40:00.000-06:00</published><updated>2009-08-05T12:45:46.003-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='ModalPopUp'/><title type='text'>Asp .Net Ajax: Control Modal PopUp</title><content type='html'>Código xhtml:&lt;br /&gt;&lt;br /&gt;Agregar el control ModalPopUpExtender manualmente para que se inserte la instrucción @Resgister.&lt;br /&gt;&lt;br /&gt;&lt;a rel="lightbox" href="http://2.bp.blogspot.com/_cxUdZdosOJg/SneD4wIVwpI/AAAAAAAAABM/pa4RSbheTXs/s1600-h/modalpoppup.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 154px;" src="http://2.bp.blogspot.com/_cxUdZdosOJg/SneD4wIVwpI/AAAAAAAAABM/pa4RSbheTXs/s200/modalpoppup.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5365902492051030674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No se ocupa programar nada en el codebehind pero lo que si sería necesario es crear unas buenas reglas CSS para personalizar el Panel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2047999072384010161-105558084111814168?l=www.leonartsoftware.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.leonartsoftware.info/feeds/105558084111814168/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2047999072384010161&amp;postID=105558084111814168&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/105558084111814168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2047999072384010161/posts/default/105558084111814168'/><link rel='alternate' type='text/html' href='http://www.leonartsoftware.info/2009/08/asp-net-ajax-control-modal-popup.html' title='Asp .Net Ajax: Control Modal PopUp'/><author><name>Ing. Leonardo Suárez.</name><uri>http://www.blogger.com/profile/08274031659617077926</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cxUdZdosOJg/TOoK91E0MtI/AAAAAAAAADU/BCj5iGw513I/S220/1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cxUdZdosOJg/SneD4wIVwpI/AAAAAAAAABM/pa4RSbheTXs/s72-c/modalpoppup.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
