Archivo Mayo, 2007

Usando UpdatePanel con Triggers

Si estás usando en Ajax un UpdatePanel, es sencillo hacer que éste se actualize si colocas un botón dentro de él mismo, algo como:

ASP:
  1. <asp:UpdatePanel id="UpdatePanel1" runat="server">
  2.    <contenttemplate>
  3.       <asp:Button id="Buscar" runat="server" Text="Buscar"></asp:Button>
  4.       <asp:Label runat="server" Text="Label"></asp:Label>
  5.    </contenttemplate>
  6. </asp:UpdatePanel>

Sin embargo, ¿qué ocurre si el botón que debe desencadenar la actualización del UpdatePanel se encuentra fuera del mismo?

Entonces debes añadir un trigger al UpdatePanel para indicarle cuál o cuáles controles deben desencadenar su actualización. Hazlo así:

ASP:
  1. <asp:Button id="Buscar" runat="server" Text="Buscar"></asp:Button>
  2. <asp:UpdatePanel id="UpdatePanel1" runat="server">
  3.    <contenttemplate>
  4.       <asp:Label runat="server" Text="Label"></asp:Label>
  5.    </contenttemplate>
  6.    <triggers>
  7.       <asp:AsyncPostBackTrigger ControlID="Buscar" EventName="Click"></asp:AsyncPostBackTrigger>
  8.    </triggers>
  9. </asp:UpdatePanel>

2 Comentarios

SQL que encuentra coincidencias de un string sin usar LIKE en un .XSD de ASP.NET 2

Estoy usando .NET 2. Tengo mi archivo .XSD (Data Layer) y mi Business Logic.

El caso es que en el .XSD estoy poniendo esta consulta:

MySQL:
  1. SELECT * FROM tabla WHERE nombre LIKE ?

Yo quería encontrar cualquier campo que contuviera el string solicitado, es decir, si alguien buscaba "pa", la sentencia debía regresar valores como "paco", "palabra", "pais", etc. Pero con el LIKE solamente regresaba el valor si la coincidencia era exacta.

Otros intentos que hice fueron:

MySQL:
  1. SELECT * FROM tabla WHERE nombre LIKE '%?%'

MySQL:
  1. SELECT * FROM tabla WHERE nombre LIKE %?%

MySQL:
  1. SELECT * FROM tabla WHERE nombre LIKE \%?\%

Ninguno sirve porque al parecer al definir la sentencia SQL en el archivo .XSD, el signo de interrogación no puede tener ningún comodín.

Entonces busqué alguna función que pudiera ayudarme, y al final lo logré. La sentencia debe quedar así:

MySQL:
  1. SELECT * FROM tabla WHERE (INSTR(nombre,?)> 0)

INSTR(str,substr) devuelve la posición de la primera ocurrencia de substring en la cadena de texto str.

Así que si devuelve un número mayor a cero, significa que lo encontró.

Ahora bien, siendo más estrictos, lo que yo quería era que encontrara el principio de la palabra. Es decir, si alguien buscaba por "yo" debería encontrar "yolanda", pero no "pelayo". Entonces necesitaba algo que le indicara que buscara solamente al principio del campo.

Así es como lo logré:

MySQL:
  1. SELECT * FROM tabla WHERE nombre REGEXP CONCAT('^',?)

expr REGEXP pat realiza una búsqueda de expresiones regulares en la cadena expr usando el modelo pat.

CONCAT(cad1, cad2, ...) une cadenas de texto.

Es decir que al ejecutarse:
SELECT * from tabla where nombre REGEXP CONCAT('^','yo')
Se convierte en:
SELECT * from tabla where nombre REGEXP '^yo'

Como sabes, el símbolo ^ en expresiones regulares, significa el inicio de una palabra.

El signo '?' es por si estás utilizando MySQL.
Si utilizas SQL Server, cambia el '?' por '@Nombre' o cualquiera que sea el nombre de tu parámetro.

Para mayor información:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

No hay Comentarios

Archivo .bat para apagar un servidor Windows desde otra PC en la misma red

Si usas un servidor local seguramente tienes la pura caja, sin monitor ni teclado. Cuando trabajas en el servidor lo haces usando Escritorio Remoto (Remote Desktop). Si es así, te gustará este tip para apagar tu servidor haciendo doble clic en un archivo .bat desde cualquier PC en tu red local.

Simplemente abre un bloc de notas y teclea lo siguiente:

shutdown /s /m \\servidor

Guarda el archivo como apagar.bat. Listo, ahora dale doble clic y tu servidor se apagará.

Nota: Debes estar autenticado en el servidor. Es decir, conéctate al servidor tecleando \\servidor en el explorador de windows y proporciona tu nombre de usuario y contraseña.

Si ejecutaste el archivo apagar.bat e inmediatamente después te das cuenta de que no lo querías apagar, debes ejecutar el siguiente comando para abortar el apagado:

shutdown /a /m \\servidor

Solamente funciona si lo haces en 30 segundos o menos después de haber enviado el primer comando.

Igual que antes, puedes teclear esto en un archivo y llamarlo abortar.bat para tenerlo a la mano en caso de que te arrepientas.

No hay Comentarios

Crea una tercera sesión de Escritorio Remoto (Remote Desktop)

Cuando intentas conectarte a tu servidor con Escritorio Remoto (Remote Desktop) obtienes el siguiente error:

Servicios de Terminal Server ha sobrepasado el número máximo de conexiones permitidas. El sistema no puede iniciar su sesión en (1B8E). Vuelva a intentarlo o consulte a su administrador del sistema.

En inglés:
The terminal server has exceeded the maximum number of allowed connections. The system cannot log you on (1B8E). Please try again or consult your system administrator.

La razón es que el servidor solamente acepta 2 sesiones remotas, ya sea activas o desconectadas. Es decir, abriste dos sesiones y las dejaste abiertas (simplemente cerraste las conexiones cerrando la ventana de Escritorio Remoto en vez de hacer clic en Inicio -> Cerrar sesión).

Afortunadamente puedes crear una tercera sesión ejecutando este comando desde una ventana de MS-DOS:

c:>mstsc /v:ip_del_servidor /console

Esto te permitirá conectarte a la sesión de consola de tu servidor, y una vez dentro te recomiendo matar las sesiones que se quedaron activas.

Por cierto, si piensas reiniciar tu servidor, la manera más confiable de hacerlo es desde la sesión de consola.

6 Comentarios

Como añadir un icono (favicon.ico) a tu página web

Puedes añadir un icono a tu página web, como este:

Favicon

Para hacerlo, primero necesitas poner esta línea entre los tags head de tus páginas web:

HTML:
  1. <link rel="shortcut icon" href="favicon.ico">

Después necesitas crear una imagen de 16X16 pixeles y exportarla con la extensión .ico. Lo puedes hacer con el programa Microangelo, pero lo tendrías que comprar, descargar e instalar, y no creo que sea algo que estés deseando.

Te doy una alternativa: Utiliza tu editor de imágenes favorito y haz una imagen de 16X16 pixeles y expórtala como gif. Para convertirla a ico simplemente entra a esta página:

http://www.html-kit.com/favicon/

En ella simplemente haz clic en el botón Examinar, escoge tu imagen y la página web te generará el archivo ico.

Después, si quieres revisar que todo está en orden, puedes validar tu página en esta dirección:

http://www.html-kit.com/favicon/validator/

Para WordPress

Si quieres añadir tu favicon a WordPress, inserta el código arriba mencionado en el archivo header.php del tema que estés utilizando. Ejemplo: c:\miblog\wp-content\themes\mitema\header.php

No hay Comentarios

Como enviar mensajes de correo electrónico con System.Net.Mail

Para enviar mails con ASP.NET 2 necesitas utilizar System.Net.Mail.

Antes que nada, no olvides importar la librería:

VB.NET:
  1. Imports System.Net.Mail

Para enviar el e-mail la sintaxis es la siguiente:

VB.NET:
  1. Dim mail As New MailMessage()
  2. 'Para enviar mensaje en HTML
  3. mail.IsBodyHtml = True
  4.  
  5. 'A quien se le envia
  6. mail.To.Add("destinatario@ejemplo.com")
  7. mail.To.Add("OtroDestinatario@ejemplo.com")
  8. 'Con copia para
  9. mail.CC.Add("Copia@ejemplo.com")
  10. 'Con copia oculta
  11. mail.Bcc.Add("CopiaOculta@ejemplo.com")
  12. 'De parte de quien
  13. mail.From = New MailAddress("DeParteDeQuien@ejemplo.com", "Juan Pérez")
  14.  
  15. 'Si necesitas agregar una direccion de respuesta distinta
  16. mail.ReplyTo = New MailAddress("AQuienResponder@ejemplo.com", "Elisa Romero")
  17. 'Asunto
  18. mail.Subject = "Hola amigos"
  19. 'Cuerpo
  20. mail.Body = "<b>Hola, como están</b> todos?"
  21.  
  22. 'Por si necesitas aniadir archivos adjuntos
  23. mail.Attachments.Add(New Attachment("c:\archivo1.jpg"))
  24. mail.Attachments.Add(New Attachment("c:\archivo2.jpg"))
  25.  
  26. Dim smtp As New SmtpClient("127.0.0.1")  'La direccion IP del servidor SMTP
  27. 'Si deseas autenticacion usa la siguiente linea
  28. smtp.Credentials = New Net.NetworkCredential("login", "password")
  29. 'Listo, envia el mail
  30. smtp.Send(mail)

6 Comentarios

Crea tu propio validador (CustomValidator)

Para implementar tu propia lógica en un validador utiliza un CustomValidator.

En la página aspx agrega la propiedad OnServerValidate al validador y dale como valor el nombre de una función que tú mismo escribirás.

ASP:
  1. <asp:customvalidator id="CustomValidator1" runat="server" CssClass="validador" Display="Dynamic" ErrorMessage="Debe seleccionar al menos un grupo" OnServerValidate="validaGrupos"></asp:customvalidator>

En el archivo aspx.vb (o en la porción de código de servidor de tu archivo aspx) implementa la función, como se muestra a continuación. Si tu lógica indica que el dato es aceptado, establece args.IsValid a true, y si no, a false.

VB.NET:
  1. Sub validaGrupos(ByVal sender As Object, ByVal args As ServerValidateEventArgs)
  2.  
  3.         Dim vacio As Boolean
  4.         vacio = True
  5.         Dim elemento As ListItem
  6.         For Each elemento In Grupos.Items
  7.             If elemento.Selected = True Then
  8.                 vacio = False
  9.             End If
  10.         Next
  11.  
  12.         args.IsValid = Not vacio
  13.  
  14.     End Sub

No hay Comentarios

Una búsqueda tipo Firefox para Internet Explorer

La herramienta de búsqueda de Firefox me gusta más que la de Internet Explorer porque viene integrada a la ventana del explorador mediante una barra que aparece en la parte inferior.

Búsqueda de Firefox

La de Internet Explorer (IE) aparece en una ventanita aparte, bastante molesta.

Sin embargo, existe un Add-on para IE que permite contar con una búsqueda al estilo de Firefox.

Se llama InlineSearch (fabricado por IEForge) y lo puedes descargar de aquí.

En este ejemplo, estamos buscando la palabra "ventana".

InlineSearch

2 Comentarios

Guarda páginas web completas en un solo archivo MHT

Normalmente para guardar una página web completa con imágenes tienes que guardar el archivo HTML, bajar las imágenes y colocarlas en la carpeta correspondiente. Si la página web tiene un archivo Flash resulta más problemático.

Con este truco te podrás guardar la página web completa, con imágenes, Flash, javascripts, etc., todo queda en un solo archivo que puedes transportar fácilmente.

Solamente ábrela con Internet Explorer, y selecciona Página -> Guardar cómo y elige el formato de Archivo único (.mht).

Archivo único mht

No hay Comentarios

Cargador genérico para la iPaq 3115 de HP

Se me perdió el cargador original de mi iPaq 3115 de HP. En mercadolibre.com.mx conseguí uno que se llama 4 en 1 (koln) por sus cuatro funciones:

  1. Cargador por medio de la corriente eléctrica de la pared
  2. Cargador mediante el encendedor del carro
  3. Cargador por medio del USB de tu PC
  4. Sincronización de datos mediante el USB de tu PC

El caso es que mi iPaq estaba completamente descargada y cuando intenté cargarla con este cargador genérico, no se pudo. Pensé que se había descompuesto o que el cargador no servía, pero le pedí a un conocido un cargador original de HP. La iPaq se cargó correctamente y una vez cargada ya la puedo recargar con el cargador genérico.

Al parecer no tiene la potencia para levantar la carga de una pila completamente descargada. Pero bueno, ni hablar, el costo era mucho menor que el original.

No hay Comentarios