|
Publicado el 09/Nov/2005
He estado probando un poco el desarrollo de aplicaciones Web con ASP.NET 2.0 y una de las cosas que más me gustan es el poder usar las capacidades de DataBinding de los controles para vincularlas a objetos en lugar de a bases de datos.
Una de las cosas que quería probar era ver si podía vincular un control de tipo GridView a unos objetos que creé hace tiempo que obtienen leen RSS. Estos objetos conectan con un documento RSS cualquiera y obtienen sus elementos en una colección, en el número que se le pida (por ejemplo los 3 últimos elementos).
Teniendo en cuenta esto, mi primera prueba fue intentar usar el asistente que trae Visual Studio 2005 para vincular controles a datos y seleccionar la plantilla de ObjectDataSource. Este asistente pide que se seleccione la clase que contiene los objetos a vincular, el nombre del método a llamar en esa clase y sus parámetros para obtener los datos que se mostrarán en el control deseado.
Esto aparentemente funciona sin más pero al intentar ejecutar la página apareció la excepción 'No parameterless constructor defined for this object'. En efecto, mi objeto no tiene un constructor por omisión sin parámetros. Mi objeto en concreto funciona pasándole unos parámetros al constructor que indican dónde está el documento RSS, el nombre de usuario y contraseña si son necesarios, etc. Una vez construida la instancia, se puede llamar al método que carga los datos.
Buscando en las propiedades del control proporcionado por Visual Studio no encontré ninguna forma de pasarle una instancia. Leyendo posteriormente la documentación, se indica que cuando se usa este origen de datos, el objeto ObjectDataSource crea una nueva instancia del componente que conecta a los datos llamando a su constructor sin parámetros. Después llama al método dado con los parámetros que se le pasen. Esto no me vale para mi objeto. Por otro lado parece bastante poco flexible ya que (al menos en mi caso) en la mayoría de los objetos que conectan a datos, antes de poder conectar establezco valores en propiedades que luego las instancias de los objetos usan para trabajar. Con el modelo planteado eso tampoco funcionaría.
Pero como no me gusta darme por vencido tan fácilmente, probé a usar el objeto ObjectDataSource directamente en el código de la página y ¡bingo!, existe un evento al que nos podemos suscribir para modificar la instancia que ObjectDataSource utiliza. El proceso es el siguiente:
• Crear una instancia de ObjectDataSource indicándole la clase que ha de usar y el nombre del método a llamar que traerá los datos. • Indicarle el nombre y valores de los parámetros que necesita el método anterior para traer los datos. • Crear un handler para el evento ObjectDataSource.ObjectCreating. En este handler se tiene acceso a la instancia que se va a usar, pudiendo sustituirla. • Usar la instancia que hayamos creado de ObjectDataSource como origen de datos del control que se vaya a usar. • Llamar a DataBind en el control, esto hará que se ejecute el método que conecta con los datos
En código C# sería algo así:
protected void Page_Load(object sender, EventArgs e) { // Una instancia de mi objeto _blogClient = new BlogClient(p1, p2, p3, p4);
// Creo el ObjectDataSource indicándole la clase a usar ObjectDataSource ods = new ObjectDataSource("Caladan.BlogClient.BlogClient", "GetRssEntries"); ods.SelectParameters.Add("ItemCount", "5");
// Establezco el handler ods.ObjectCreating += new ObjectDataSourceObjectEventHandler(ods_ObjectCreating);
// Vinculo al control Web (un DataList en este caso) dlBlog.DataSource = ods; dlBlog.DataBind(); }
void ods_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { // Aquí se tiene acceso a la instancia, que modifico por la mía ya creada e.ObjectInstance = _blogClient; }
Y ya está, con estos simples pasos se pueden usar todas las técnicas de data binding del control Web pero con un origen de datos que no es una base de datos. Tengo que hacer notar que el resultado de la llamada a GetRssEntries (el método de mi objeto que lee el RSS) es una colección de tipo CollectionBase, con lo que la iteración entre los distintos elementos ya viene dada (por implementar IEnumerable).
No se a vosotros, pero a mí esto me ayuda bastante…
Publicado el 08/Nov/2005
.NET Compact Framework 2.0 está disponible oficialmente desde ayer con lo que la mayoría de los dispositivos que hay por ahí no lo incluyen 
Para instalarlo existen dos opciones. Una es obtener los 'redistribuibles' y hacer la instalación del archivo .msi desde el PC a través de ActiveSync.
La otra opción es mediante Visual Studio 2005 o el SDK de .NET Framework 2.0. Si se usa este camino, en algunos dispositivos la instalación se puede hacer desde dentro del entorno de desarrollo, pero en otros no funciona.
Para los que no funciona hay que copiar el archivo .cab de manera manual al dispositivo y ejecutarlo para que se instale. El archivo a copiar es NETCFv2.wm.armv4i.cab para dispositivos Windows Mobile 2005 y NETCFv2.ppc.armv4.cab para dispositivos Windows Mobile 2003. Estos archivos se encuentran en el directorio de instalación del SDK. En el caso de una instalación de Visual Studio 2005 el directorio es similiar a:
\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\wceXXX
donde XXX es la versión del S.O. wce400 para Windows Mobile 2003 y wce500 para Windows Mobile 2005. Tenéis más información en el blog de Marcus Perryman.
Publicado el 07/Nov/2005
Todavía queda alguna plaza...
Yo estaré por allí el sábado...
Publicado el 04/Nov/2005
Revisando todo lo que tenía por ahí tras recibir mi nuevo i-mate JasJar, me he encontrado con 5 dispositivos que he usado/uso habitualmente (uno de ellos es prestado para un proyecto). De momento, uno está retirado por completo, el primero de la foto, pero le estoy buscando alguna utilidad (algo de domótica ???).
De izquierda a derecha y de arriba hacia abajo son: Compaq iPaq 3660 (Pocket PC 2000, IR) comprado en un TechEd en Amsterdam, HP iPaq 5450 (Pocket PC 2003, IR, Bluetooth, WLAN), Motorola MPX 200 (Smartphone 2003, GSM, GPRS, IR), Qtek 9090 (Pocket PC 2003 SE Phone Edition, IR, Bluetooth, WLAN, GSM, GPRS) y por último i-Mate JasJar (Pocket PC 2005 Phone Edition, IR, USB, Bluetooth, WLAN, GSM, GPRS, UMTS), que es el que uso habitualmente desde ayer como Pocket PC y teléfono móvil.

En la foto faltaría un antiguo handheld de Compaq, parecido en formato al JasJar aunque más grande (no recuerdo el modelo concreto), que ya se jubiló y me lo desguazaron para extraerle 'sus partes'.
Publicado el 04/Nov/2005
Mi amigo Unai acaba de publicar un artículo interesante en la revista Microsoft Technical Journal de MSDN sobre cómo configurar la replicación RDA y la replicación Merge entre un servidor SQL Server 2005 y SQL Mobile (la nueva versión de SQL Server para dispositivos).
Es interesante ver la distinción entre los dos tipos de técnicas para poder escoger la más adecuada a nuestra situación, ya que el uso de una u otra depende finalmente de la aplicación a desarrollar.
Seguro que os resultará interesante.
Publicado el 02/Nov/2005
Esta mañana se supone que me llega mi nuevo Pocket PC Phone. Es un i-Mate JasJar con Windows Mobile 5.0.
En cuanto lo reciba quiero migrar algunas aplicaciones que tengo hechas con .NET Compact Framework 1.0 a la versión 2.0 y ver cómo funcionan en el nuevo sistema.
Cuando lo tenga resuelto iré contando las experiencias.
Publicado el 28/Oct/2005
Ya está disponible la versión final (RTM) de Visual Studio 2005 para los suscriptores de MSDN.
Ojo si quieres programar con WinFX, porque la versión pública de WinFX no es compatible con esta versión de Visual Studio, sólo con la Beta 2.
Si tienes instaladas versiones anteriores de Visual Studio 2005 y quieres actualizar, hay que hacer varias cosas (hasta 23 pasos) aunque hay una herramienta que puede ser útil. Más información sobre esto en: http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1894
Y si tu interés está en el desarrollo para dispositivos y quieres saber qué herramientas usar para qué tipo de dispositivos de los que hay disponibles, aquí tienes un cuadro que cruza las versiones de las herramientas de desarrollo con las de los equipos:
http://blogs.msdn.com/windowsmobile/archive/2005/06/02/424382.aspx
Publicado el 05/Oct/2005
Desde ayer ya están disponibles los cursos de Campus MVP.
Yo participo con un curso de momento sobre desarrollo de aplicaciones Web para dispositivos móviles.
Publicado el 13/Sep/2005
Pues eso, que si tenéis una suscripción a MSDN, ya está disponible para descarga la imágen del DVD de Visual Stucio 2005 RC. Es una versión más reciente que la Beta 2, aunque no está cubierta por la licencia GoLive (con lo que no hay soporte para ponerla en producción).
|