JASoft.org

Cómo cambiar los parámetros de un ObjectDataSource en ASP.NET 2.0

Cómo cambiar los parámetros de un ObjectDataSource en ASP.NET 2.0
El nuevo control ObjectDataSource es muy útil a la hora de enlazar una rejilla u otro control de ASP.NET 2.0 con un objeto de negocio, como por ejemplo un Servicio Web o un objeto propio. Los métodos de selección, inserción, actualización o borrado de registros pueden tener parámetros que es necesario ajustar. Por ejemplo en la siguiente figura el método de selección dispone de un paráemtro "Pais" que es necesario ajustar para poder obtener los datos: El propio diálogo de configuración nos ofrece la posibilidad de asociarle a cada uno de los parámetros, aparte de un control por defecto, algún origen que sirva para asignarlo (una cookie,uncontrol, etc...): Aunque esto llega en la mayor parte de los casos y es muy cómodo, puede darse el caso de que necesitemos cambiar nosotros dinámicamente el valor de un parámetro usando cualquier código de cosecha propia. Lo primero que cabe pensar es acudir a la propiedad SelectParameters del control ObjectDataSource, y escribir algo así: O... [Más]

Un par de utilísimos complementos para Visual Studio 2003

Un par de utilísimos complementos para Visual Studio 2003
Hoy he leído desde la página principal de mi flamante Visual Studio 2005 RTM (versión definitiva) un artículo muy útil de James Avery titulado "Visual Studio Add-Ins Every Developer Should Download Now". Había varias cosas bastante útiles pero me han gustado especialmente dos de ellos: 1.- Smart paster 1.1: permite copiar el contenido de texto que haya en el portapapeles pero de manera "inteligente", de ahí el nombre. Fíjate en las opciones que ofrece: Es decir, puedes pegar el texto como un comentario, como un literal de tipo cadena correctamente formateado para el lenguaje que utilices (VB o C#), como una serie de líneas de código que generan la misma cadena pero a partir de un StringBuilder, y tal cual está pero metido dentro de una región. Me parece muy útil si debes embeber en el código líneas un tanto largas (como por ejemplo alguna consulta "a pinrel" que haya quedado extensa) y cosas por el estilo. Lástima que de momento no haya versión para VS2005. Descargas desde: http:... [Más]

Curiosidad: Las distintas formas de averiguar la ruta actual de una aplicación

Curiosidad: Las distintas formas de averiguar la ruta actual de una aplicación
¿Cómo averiguamos la ruta en la que está un ejecutable? Hay varias formas para todos los gustos: desde los que van a lo práctico a los que les "mola" complicarse la vida. Veámoslas todas ;-) - Solución 1 (fácil): private static string RutaActual(){     return Environment.CurrentDirectory;} - Solución 2 (fácil): using System.IO;private static string RutaActual(){     return Directory.CurrentDirectory;} - Solución 3 (media): using System.Diagnostics;private static string RutaActual(){     string arch = Process.GetCurrentProcess().MainModule.FileName;     return arch.Substring(0, arch.LastIndexOf("\\"));} - Solución 4 (super-rebuscada: como la hace la plataforma .NET y usando la API): private static string RutaActual(){      string text2;      StringBuilder builder1 = new StringBuilder(0x105);      if (Win32Native.GetCurrentDirectory(builder1.Capacity, builder1) == 0)      {            __Error.WinIOError();      }      string text1 = builder1.ToString();      if (text1.En... [Más]

¿Por qué me gusta XAML?

¿Por qué me gusta XAML?
XAML (eXtensible Application Markup Language) es el lenguaje XML que define elementos de la interfaz de usuario en Windows Presentation Foundation (Avalon). Avalon está muy bien y permitirá crear interfaces avanzadas que hoy en día son casi impensables. Sin embargo no es eso lo que más me gusta. hay varias cuestiones que me parecen importantes: · Como programadores de ASP.NET tendremos una gran ventaja frente a muchos programadores tradicionales de aplicaciones Windows ya que el desarrollo en el futuro con WPF se va a parecer mucho más al actual ASP.NET que a cualquier otra cosa. · Aunque los "controles" de Avalon parecen botones, listas, etc... en realidad son entidades tridimensionales Direct 3D definidas en la memoria de la tarjeta gráfica. Adios a la API de Windows por debajo. Hola elevado rendimiento y (en teoría) portabilidad. · Las interfacesde usuario, aparte de ir compiladas dentro de un ensamblado como hasta ahora (usan recursos que son versiones binarias optimizadas de... [Más]

Cronometraje de alta precisión en .NET

Cronometraje de alta precisión en .NET
Una carencia tonta que tenían las versiones 1.x de .NET era la de una forma de medir el tiempo con elevada precisión. Y digo carencia "tonta" porque en realidad no cuesta mucho crear una clase así y es algo que los programadores solemos agradecer ya que lo usamos mucho para medir la velocidad de ciertos fragmentos de código y cosas así. Una forma muy sencilla pero al mismo tiempo muy poco precisa de hacer mediciones es usar la clase DateTime de .NET. Puede servirnos para medir espacios de tiempo muy grandes (de muchos segundos) en los que no sea necesario afinar demasiado o conseguir mucha precisión, así: DateTime comienzo = DateTime.Now;//Aquí ejecutamos lo que sea que vamos a medirdouble tiempo = (DateTime.Now - comienzo).TotalMilliseconds; Con esto obtenemos el número de milisegundos entrela fecha de comienzo y la de fin pero la precisión es relativamente mala porque no se usan los contadores de alto rendimiento del sistema. Otra opción es usar la API de Windows para acceder a... [Más]

Creación de expresiones $ personalizadas

Creación de expresiones $ personalizadas
En mi anterior post (Expresiones $ en ASP.NET 2.0) explicaba cómo utilizar las expresiones estándar de tipo $ en el HTML de las páginas ASP.NET 2.0. Ahora vamos a aprender a crear nuestras propias expresiones $ personales. TEORÍA:Para crear nuestra propia expresión $ debemos definir una nueva clase que herede de System.Web.Compilation.ExpressionBuilder. Lo mejor que podemos hacer es crearla dentro de App_Code de forma que se compilará automáticamente cuando se ejecute la aplicación ASP.NET. Al heredar de ExpressionBuilder nuestra clase debe sobreescribir el método GetCodeExpression de esta clase base. Este método se llama desde el compilador dinámico de ASP.NET al compilar la página que contiene nuestra etiqueta $ para que le devuelva la expresión que debe visualizar o asignar. De los parámetros de este método el más interesante es Entry, que es del tipo BoundPropertyEntry y que tiene una propiedad llamada Expression que nos da la expresión que se pretende evaluar. Una vez creada... [Más]

Expresiones $ en ASP.NET 2.0

Expresiones $ en ASP.NET 2.0
Una de las nuevas características de ASP.NET 2.0 destinadas a reducir la cantidad de código de nuestros desarrollos son las expresiones de tipo $. Éstas nos permiten obtener directamente ciertos valores y funcionalidades desde dentro de la definición de la página, sin necesidad de escribir códigopara ello. Su sintaxis es análogo a la siguiente: <%$ Expresion:Accion %> El uso típico de este tipo de expresiones es el de obtener directamente valores desde el archivo de configuración (web.config) y asignarlas directamente a propiedades de controles de la interfaz de usuario. Por ejemplo: <asp:Label Runat="server"  Text="<%$ AppSettings:NombreEmpresa %>" muestra el valor asignado al parámetro "NombreEmpresa" dentro de la configuración de la aplicación en web.config (<AppSettings/>). También se pueden obtener valores de cadenas de conexión (ej: <%$ ConnectionStrings:MiConexion %>, ya que ahora hay una sección específica para ellas) o cosas que no ti... [Más]

Un añadido a mi post sobre estilos visuales de Windows XP

Un añadido a mi post sobre estilos visuales de Windows XP
Si sigues mi blog habitualmente puede que recuerdes un par de "post" que hice hace unos meses en los que explicaba la manera de habilitar los estilos visuales de Windows XP en las aplicaciones de Windows para conseguir un aspecto más moderno. La activación pasa ineludiblemente por el uso del método estático EnableVisualStyles de la clase Application combinado con la propiedad FlatStyle de los distintos controles. Aunque esto funciona de maravilla en Windows XP hay un problema cuando la misma apliación se intenta ejecutar en sistemas operativos más antiguos en los que no esté presente la biblioteca responsable del efecto (uxtheme.dll). En .NET 2.0 han tenido en cuenta esta particularidad y la aplicación se degrada de maravilla, pero en .NET 1.x las aplicaciones rompen, lo cual no es muy recomendable ¿verdad?. Bueno, la solución es bastante sencilla ya que basta con comprobar en que versión de Windows se ejecuta la aplicación antes de establecer la propiedad EnableVisualStyles, así: ... [Más]

Refactorización de código con Visual Studio 2005

Refactorización de código con Visual Studio 2005
Una de las cosas nuevas que ha incorporado el entorno de Visual Studio es la posibilidad de refactorizar nuestro código para hacerlo más legible, mejorar su encapsulación y reutilización, etc... El concepto es muy sencillo: se trata de escribir de nuevo un mismo código pero utilizando una estrategia diferente. Aunque no hayas oído la palabreja "Refactoring" en tu vida lo has hecho miles de veces seguro: desde cambiar el nombre de un método en TODO tu proyecto, hasta cambiar el ámbito de una variable para tener acceso a ella desde más sitios. Es muy sencillo refactorizar, sólo que hasta ahora en Visual Studio era una tarea tediosa y propensa a errores ya que normalmente utilizábamos la opción de buscar y reemplazar, cruzábamos los dedos para que no nos hubiésemos pasado de la raya sustituyendo y dábamos a F5 para comprobarlo viendo si todo compilaba de nuevo ;-) Las opciones añadidas a VS2005 no es que sean espectaculares pero son un buen comienzo y desde luego nos van a hacer la vi... [Más]

Códigos ASCII y caracteres en C#

Códigos ASCII y caracteres en C#
En VB clásico había dos funciones muy prácticas para muchos cometidos que permitían obtener el código ASCII de un caracter y viceversa, a partir de un código ASCII sacar el caracter que le correspondía. estas funciones se llamaban Asc y Chr respectivamente. En C# no existen como tales, pero son muy fáciles de simular igualmente, así: ///Hace falta poner using System.Text al principio para estapublic static int Asc(string s)  {   return Encoding.ASCII.GetBytes(s)[0];  }   public static char Chr(int c)  {   return Convert.ToChar(c);  } Es algo muy sencillo pero que puede resultar útil a los programadores principiantes de C# que viene de VB6.

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