JASoft.org

Cómo colocar un icono para indicar la ordenación en la cabecera de un GridView

Cómo colocar un icono para indicar la ordenación en la cabecera de un GridView
Esta pregunta surge muchas veces en cursos y conversaciones técnicas varias. La cosa es la siguiente: tengo una rejilla (GridView) de ASP.NEt 2.0 en un formulario ASPX, y he activado las opciones de ordenar sus columnas, de modo que cuando pulso sobre una cabecera logro de manera automática la ordenación por el campo correspondiente. Es estupendo pues no tengo ni que escribir código para lograrlo, al contrario de lo que pasaba al usar un DataGrid en ASP.NET 1.x. Pero... ¿Qué pasa si quiero evidenciar de un modo más claro cuál es el orden concreto de mi rejilla? Lo típico es colocar un iconito con una flecha hacia arriba o hacia abajo en la cabecera adecuada para indicarlo, algo así: (Fíjate en el iconito al lado de "Nombre" que indica el orden inverso) Pero ¿cómo lo consigo? Hay que responder adecuadamente al evento RowCreated de la rejilla. Antes de nada asegúrate de tener un par de iconos para las flechas de ordenación. En mi caso los he colocado en la carpeta "Imgs" de la raí... [Más]

Errores al recompilar aplicaciones ASP.NET 2.0 y cómo solucionarlos

Errores al recompilar aplicaciones ASP.NET 2.0 y cómo solucionarlos
Una cosa típica que pasa en VS2005 desde que salió es que estamos trabajando en una aplicación, cambiamos algo en el código, la lanzamos para probar, paramos, y así sucesivamente y, de repente, en un momento determinado y sin venir a cuento, nos aparece un mensaje de error y nos dice que no se ha podido compilar porque un archivo estaba bloqueado o algo así (he intentadno reproducir una captura, pero justo hoy no está por la labor y me funciona perfectamente). El caso es que suelen ser mensajes estilo: Could not load file or assembly 'XXXXXXX' or one of its dependencies. The system cannot find the file specified. aunque hay algunos más. Este error se produce porque hay algunos archivos resultantes de la anterior compilación que quedan bloqueados y el entorno no puede sobrescribirlos. Hay varias soluciones: 1.- Compilar entero el proyecto otra vez desde el menú Build·Build all. Es lo que suelo hacer yo.2.- Borrar los archivos temporales de ASP.NET. Es fácil de hacer ocn un bat... [Más]

Creación de tablas de proveedores ASP.NET desde línea de comandos

Creación de tablas de proveedores ASP.NET desde línea de comandos
Como muchos programadores de ASP.NET saben (y también se ha comentado aquí en otras ocasiones) en la carpeta "C:\Windows\Microsoft .NET\Framework\v2.0.xxxx" existe un ejecutable, aspnet_regsql.exe, que permite crear la estructura de tablas necesarias por ASP.NEt para almacenar la información de sus proveedores en SQL Server. Sirve tanto para SQL Server 2005 como para versiones más antiguas, como la 2000. La estructura de tablas creada sirve para almacenar todo tipo de información implementada mediante proveedores de tipo "SQLProvider" que vienen con ASP.NET: autenticación y autorización (usuarios y roles), perfiles, Webparts, sesiones, eventos, configuración y mapas de sitios. Podemos lanzar ese ejecutable para obtener un sencillo asistente gráfico que nos permitirá crear esta estructura de tablas y procedimientos almacenados en cualquier base de datos. Pero además podemos ejecutar aspnet_regsql.exe desde la línea de comandos para crear esta estructura automáticamente duran... [Más]

Añadido a mi post "Obtener la IP de conexión de un usuario (aunque entre con un proxy)"

Añadido a mi post "Obtener la IP de conexión de un usuario (aunque entre con un proxy)"
Respecto a mi post anterior "Obtener la IP de conexión de un usuario (aunque entre con un proxy)" voy a hacer un añadido a raíz de una pregunta que me han hecho, que aunque la contesté en lso comentarios del mismo, prefiero ponerlo aquí porque mucha gente lee este blog a través de su copia en Geeks en lugar de directamente en www.jasoft.org. La pregunta en concreto era: Esa cabecera Header, HTTP_X-Forwarded-For, aparece documentada oficialmente ? ¿Es parte del HTTP 1.1, es decir, aparecería en todas las peticiones a páginas que se hicieran (htm, aspx, asp, ...) ? La respuesta: La cabecera X-Forwarded-For estaba en los primeros borradores del RFC 2616 para HTTP 1.1 pero luego lo quitaron. Sin embargo el proxy más utilizado de Internet (Squid) lo utilizó desde el principio y se ha quedado como estándar de facto. De hecho la RFC 2616 indica otra cabecera para estos menesteres llamada "Via" (está en la sección 14.45 del RFC), pero curiosamente no proporciona ninguna forma e... [Más]

Obtener la IP de conexión de un usuario (aunque entre con un proxy)

Obtener la IP de conexión de un usuario (aunque entre con un proxy)
El otro día me hicieron una pregunta muy común que es "¿cómo puedo obtener la dirección IP de los usuarios que se conectan a mi aplicación Web ASP.NET?" La respuesta es directa y sencilla: usando la variable HTTP_CLIENT-IP de las cabeceras del servidor, a través del objeto Request así: Request.ServerVariables{"HTTP_CLIENT-IP"] Más fácil imposible. Sin embargo hay una cuestión que no todo el mundo tiene controlada y es que muchos usuarios acceden a Internet a través de un proxy, y la mayor parte de las veces ni siquiera lo saben. Ello es debido a que algunos proveedores de acceso a Internet (por ejemplo Telefónica en España) para ahorrar ancho de banda utilizan proxies-caché que actúan de hombre en el medio a la hora de acceder a las páginas de Interenet. Si no lo tenemos en cuenta podemos llevarnos más d eun disgusto en nuestras aplicaciones, sobre todo si creemos que con la cabecera anterior ya tenemos la IP del usuario, ya que en realidad obtendremos la IP del Proxy. ¿Cóm... [Más]

Una característica poco conocida de VS2005: puntos de interrupción dinámicos

Una característica poco conocida de VS2005: puntos de interrupción dinámicos
Todos sabemos que para depurar una aplicación una de las herramientas más útiles que tenemos son los puntos de interrupción. Para activar uno basta con colocarse en la línea de código que nos interese inspeccionar y pulsar F9. Ésto coloca un puntito rojo en el lateral del editor que nos indica que posteriormente la ejecución se detendrá allí cuando el código pase por el punto. Con F9 lo desactivamos de nuevo. Pero... ¿se te ha dado por pulsar con el botón derecho sobre uno de estos puntos de interrupción?: Tenemos diversas opciones todas muy interesantes y quizá infrautilizadas. Pero si hay una de ellas que poca gente conoce es la última: "Al visitar..." ¿qué diantres es esto? Pues como su propio nombre indica nos permite especificar qué queremos hacer cuando el depurador llegue a este punto de interrupción. Al elegier esta opción aparece el siguiente diálogo: Con él podremos indicar que, al pasar por este punto de interrupción se anote en la ventana de depuración mucha inform... [Más]

Cambio automático de cultura en ASP.NET 2.0

Cambio automático de cultura en ASP.NET 2.0
A la hora de hacer aplicaciones multi-idioma hay muchas cosas a tener en cuenta. Entre ellas la fundamental es averiguar cuál es el idioma que desea emplear el usuario y adaptar tanto la interfaz de usuario como las otras características culturales (números, fechas, etc) al idioma elegido. Si no disponemos de una lista desplegable, unas banderitas, o algo similar para que los usuarios elijan el idioma, lo que debemos hacer es adaptarnos automáticamente al idioma elgido por éstos en su navegador (Herramientas·Opciones de Internet·General·Idioma). La lista de idiomas allí presente se envía de manera automática y transparente por el navegador (no sólo IE, sino en todos los navegadores) al servidor en forma de cabeceras HTTP con el nombre "Accept-Language". Estas cabeceras se pueden capturar en el servidor muy fácilmente, y en ASP.NET más todavía con la propiedad UserLanguages, y con ellas trabajamos para conseguir la adaptación automática al idioma. El código sería básicamente este (de... [Más]

FAQ: Al pasar al servidor de producción me deja de funcionar la seguridad y me da un error ¿por qué?

FAQ: Al pasar al servidor de producción me deja de funcionar la seguridad y me da un error ¿por qué?
Una pregunta super-frecuente que recibo tanto en los cursos de campusMVP como en eventos es la de:  "¿Por qué cuando paso mi aplicación a producción de repente me deja de funcionar todo lo que tiene que ver con Membership, Roles, etc...? De hecho obtengo un error de que no se puede conectar a la base de datos..." El problema que tienes con la base de datos es que, por defecto, el proveedor de SQL Server que viene con ASP.NET 2.0 parte de la base (equivocada generalmente) de que vas a usar SQL Server 2005 Express Edition. Esta base de datos tiene la particularidad de que es capaz de adjuntar dinámicamente archivos .MDB (de datos SQL Server), es decir, sin necesidad de adjuntarlos. Si te fijas en la carpeta App_Data de tu aplicación debes de tener un archivo ASP_NET.MDB que es el que se crea automáticamente para gestionar estos datos y luego adjuntarlo dinámicamente a la versión Express. El problema es que si usas SQL Server 2005 "completo" o una versión anterior lo de adjuntar... [Más]

Fraccionamiento de las secciones de configuración en web.config

Fraccionamiento de las secciones de configuración en web.config
Aunque esto es algo muy poco conocido por los programadores de ASP.NET, es posible mover secciones completas de la configuración a sus propios archivos independientes de web.config. Ello se consigue usando el atributo configSource en la sección correspondiente. Por ejemplo, podemos escribir en el nodo ConnectionStrings lo siguiente: <connectionStrings configSource="conexiones.config"/> y ahora tener un archivo independiente llamado conexiones.config que contenga esa sección completa: <connectionStrings> <add name="Clientes" connectionString="..."/> <add name="Principal" connectionString="..."/> </connectionStrings> Esto puede resultar útil en muchas ocasiones. Por ejemplo, podemos cambiar más fácilmente entre los ajustes de producción y de desarrollo, manteniendo en común el resto de la configuración. Otro motivo sería proteger de manera especial esa sección y otorgarle sus propios permisos de lectura y escritura. Uno de los motivos más i... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico