IIS 7.0: Get Started… extiendeMe

Para empezar a probar IIS 7 sobre Windows Server 2008, podemos descargar Windows Web Server 2008, lo montamos sobre Virtual PC 2007, y listo, lo pueden hacer hasta con 512 de RAM si no tienen suficiente memoria. Ahora si queremos administrar remotamente desde el HOST al IIS 7 en Windows Server 2008, podemos usar: IIS 7.0 Manager for Windows XP, 2003 and Vista SP1, no se olviden instalar el SP1 para Vista. Para configurar la administración remota, seguir la siguiente guía: Configuring Remote Administration and Feature Delegation in IIS 7.0.

Para empezar con IIS7 podemos revisar el siguiente artículo: IIS 7.0 Explore The Web Server For Windows Vista And Beyond. Con este artículo: IIS 7.0 Enhance Your Apps with the Integrated ASP.NET Pipeline, verán como podemos tomar ventaja del IIS 7.0 Integrated Pipeline. En IIS 7.0, tenemos dos modos de crear una aplicación Web, en modo clásico y en modo integrado, el modo clásico es como conocemos a ASP.NET 2.0 y IIS 6.0: Figure 1: IIS 6.0 & ASP.NET Pipelines, y en el modo integrado tenemos las algunas features propias de ASP.NET pero montado sobre el IIS: Figure 2: IIS 7.0’s Integrated Mode, esto es lo que permite que aplicaciones no ASP.NET, como el clásico ASP o Php, puedan usar módulos de ASP.NET Autenticación o Output Cache, entre otros, para más detalles revisar: ASP.NET Integration With IIS 7.0.

Como decía, en este artículo: IIS 7.0 Enhance Your Apps with the Integrated ASP.NET Pipeline, van a ver como se implementa una aplicación Php sobre IIS 7.0 usando FastCGI, esta extensión también esta disponible para IIS 6.0. Ojo que en IIS 6.0 también se podía implementar Php, usando ISAPI o en modo CGI, pero ahora se mejorado el rendimiento y soporte con la creación del componente FastCGI para IIS. Sigamos, además de montar una web Php en IIS 7.0, este artículo vamos a ver como usando el modo Integrated Pipeline, con el cual podemos agregar autenticación basada formularios como si fuera una aplicación ASP.NET, creo que a lo que implementaban Php sobre IIS 6.0 usando ISAPI, esta noticia les va agradar mucho, y para otros escenarios habría que hacer pruebas y analizar resultados. Por acá hay un post relacionado con Php: IIS Authentication plugin for the WordPress PHP blogging engine.

Otro de los temas interesantes es la facilidad para crear módulos adicionales a IIS 7.0, y la facilidad para el mantenimiento de estos, al crear una IU para IIS 7.0, ahora creo que la extensibilidad que tome IIS 7.0, va ser mucho más rica en contenido y calidad, y seguro que pronto vamos a tener la lista “Top Modules for IIS 7.0”. Para ver un ejemplo de esto podemos revisar el siguiente artículo: IIS7.0 – Build Web Server Solutions with End-To-End Extensibility. También puede revisar el siguiente artículo: Developing IIS7 modules and handlers with the .NET framework.

Estos sólo son algunos detalles de IIS 7.0, voy a dejar al final algunos links a WebCast en espaniol, para vean todo el detalle de la nueva arquitectura de IIS 7.0, y que herramientas expone tanto a los desarrolladores, como a la personas encargadas de la administración de un Servidor Web.

Nota: si están pensando en correr sus aplicaciones ASP.NET en IIS 7 en modo integrado, el siguiente artículo les va ayudar en esta tarea: Breaking Changes for ASP.NET 2.0 applications running in Integrated mode on IIS 7.0.

Mientras más empresas vena las ventajas de IIS 7.0, va a ver muchas empresas migrando sus Servidores Web, así que no esta demás empezar a echarle un ojo a todas estás nuevas features que trae IIS 7.0. Como desarrolladores creo que hay muchas cosas que podemos explotar de cara al desarrollo de aplicaciones Web. Pero también debemos aprender las tareas administrativas básicas, no siempre todas las empresas tienen personas exclusivas a administrar un servidor Web, y quizás la tarea de hacer el deploymenyt/configuración/mantenimiento quede en nuestras manos, o también la persona encargada no actualizo sus conocimientos a IIS 7.0, al final quién tiene la culpa si la aplicación no funciona al entrar al browser?, quien? -> “El desarrollador”. Pues para evitar este tipo de cosas, tenemos que estar preparados, de lo contrario terminaremos cargando muertitos errores de otras personas.

En cuanto a la administración como la conocíamos ha cambiando un poco, ya que no es la misma IU, esta nueva interfaz ha sido construida desde cero, y esto puede chocar aquellas personas que son muy reacias al cambio, sólo decirles que todo lo que se podía hacer en IIS 6, lo podemos en IIS 7 y mejor, y si no se puede lo extendemos :D:

http://sergiot2.com/blogimages/2008/04Abr/26_admin.jpg

Si tiene alguna duda sobre alguna feature que ustedes hacían en IIS 6.0, y que no saben como hacerla en IIS 7.0, les recomiendo visitar la siguiente guía: IIS 7.0: Operations Guide. Hasta la sencilla tarea de habilitar el “Directory Browsing”, se puede convertir en una tarea marciana, pero si no tenemos idea de donde hacerlo, podemos preguntarle al maestro: “Directory Browsing” IIS 7, y el nos llevará a la respuesta :).

Links Get Started:

Saludos,

IIS 7.0 Manager para WXP, W2k3, y Vista… y la administracion de WebSites

Cuando alquilábamos un servicio de hosting en un servidor compartido, hombre que no todos al inicio tiene un presupuesto para un servidor dedicado, siempre tratamos de tener una administración familiar o una administración avanzada, de nuestro Sitio Web y de la base de datos.

Contra un servidor de SQL si se habilitan las conexiones remotas, y se configura el servidor, podemos acceder a nuestra base de datos a través de SQL Server Management Studio (también se puede acceder a base de datos con SQL Server 2000).

El problema es con la administración de un Sitio Web. En IIS 6.0 (W2k3), lo que podemos hacer es conectarnos hacia un servidor y administrar todo el servidor, pero no llega a conectarse a nivel de un sitio Web, no se si alguien lo creo una herramienta o hizo alguna tarea adicional para lograr esto, la administración a nivel de Sitio Web con IIS 6.0.

Y que hacen la mayoría de proveedores de Hosting?, pues muchos ellos exponen la administración, (manejo de la versión de ASP.NET, Custom errors, Default documents, entre otras) de un sitio Web a través de una aplicación Web. Para tareas simples y básicas, esta herramienta web puede ser suficiente, pero cuando tu quieres más poder más administración, y más facilidad, este tipo de herramientas tiene un límite.

Ahora con Windows Server 2008 liberado, se puede habilitar la administración remota a nivel de un Sitio Web. Recuerden que dentro de un servidor Web (IIS), podemos tener varios Web Sites:

http://sergiot2.com/blogimages/2008/04Abr/26_WebSites.jpg

Y generalmente los proveedores de hosting (hablando a nivel de hosting Windows Server), para ofrecer servicios más económicos, nos rentan sólo un sitio Web y no todo el servidor. Esto también depende del negocio y los objetivos del mismo, pero para alguna pequeña empresa que recién se esta lanzado a la Web, esta puede ser una buena opción, o también para los usuarios que quieran poner su sitio Web en la internet (sergiot2.com :D). Cuando alquilen hosting, procuren que les den un Sitio Web, y que tengan su propio Application Pool. Esto garantiza que no tengamos problemas cuando algún otro Web Site se caiga por algún bugsito, ya que si comparten el mismo Application Pool, y por algo la otra aplicación hace que el Application Pool deje de funcionar, nuestro Web Site también dejará de estar disponible.

Si están pensado en alquilar un servicio de hosting en ASP.NET, les recomendaría buscar uno que ya este usando Windows Server 2008,  y verificar que este tenga habilitando la administración remota de Sites. Una proveedor de hosting, que ya tiene habitando esto es discount ASP.NET, además que el precio no es muy caro si ya reciben algún ingreso por trabajar, o si son una empresa que recién se esta lanzado al mundo de la Internet.

Los que ya tengan implementando o alquilando un Sitio Web con IIS 6.0 (W2k3), y estén dudando en migrar a servidor IIS 7.0 (W2k8), creo que no se van arrepentir, pero ojo tener cuidado con la migración de la aplicación Web. Primero pongan su web en un servidor IIS 7.0, de manera local, e verifiquen que todo este funcionando correctamente. Por cierto trabajen sobre el modo Clásico, y no en el modo integrado, si aún no conocen mucho este nuevo modelo de IIS. No hay muchos cambios, pero por ahí que hay algún detallito que no funciona en el modo Integrado de IIS 7.0.

Para Clientes

Si tenemos un servicio de hosting con IIS 7.0, y tiene habilitado la administración remota de Sites, podemos descargar: Internet Information Services (IIS) 7.0 Manager, para x86 y para x64. Este cliente es para Windows XP con SP2, Windows Vista con SP1, y Windows Server 2003 SP1. En Windows Vista no se instalará ninguna aplicación, es más un add-in, para la Consola de IIS 7.0, por eso es un requisito instalar IIS 7 sobre Vista para poder instalar este cliente. También lo pueden descargar desde aquí: Internet Information Services (IIS) 7.0 Manager.

Los pasos de instalación y detalles lo encuentran en el siguiente post: Remote Administration: Managing IIS 7 (RCO) from Windows XP, 2k3 and Vista. Una vez instalado los pasos para conectarse a un Sitio Web son lo siguientes:

  1. Iniciamos IIS 7.0 Manager, y hacemos clic en “Connect to a site…“:
    http://sergiot2.com/blogimages/2008/04Abr/26_connect.jpg
  2. Ingresamos el nombre del servidor, y el nombre del Sitio Web, o del dominio dependiendo del caso:
    http://sergiot2.com/blogimages/2008/04Abr/26_Domain.jpg
  3. Ingresamos nuestro usuario y password (solicitar a nuestro proveedor de hosting, claro si es contra un servicio de hosting, y no en una LAN):
    http://sergiot2.com/blogimages/2008/04Abr/26_Username.jpg
  4. Ahora le asignamos un nombre a nuestra conexión, y hacemos clic en Finish:
    http://sergiot2.com/blogimages/2008/04Abr/26_Success.jpg
  5. Ahora ya podemos administrar nuestro Sitio Web, con todas las features de IIS 7.0 Manager:
    http://sergiot2.com/blogimages/2008/04Abr/26_admin.jpg

Para Proveedores de Hosting o Servidores

Ya vimos la parte cliente, pero también hay que hacer algunas configuraciones en nuestro servidor W2k8 para poder habilitar la administración remota de Sitios Web. Podemos leer el siguiente artículo con mucha información: Configuring Remote Administration and Feature Delegation in IIS 7.0.

Creo que los proveedores de hosting de ASP.NET, deben ponerse las pilas y comenzar a usar W2k8, esta feature (administrar remotamente Sitios Web en un Servidor Web), va ser determinante para algunas personas a la hora de escoger un determinado proveedor de hosting.

Saludos,

LDLS: .NET y mas [2008abr21]

ASP.NET

.NET

Silverlight y Sharepoint

SQL Server 2008

Varios

Humor

Saludos,

Leer archivos CSV, Obdc vs Oledb

Después de un par de horas angustia, tengo algunas conclusiones que le pueden servir aquellos que estén manipulando archivos CSV.

El tema es que tengo un formulario, donde se suben productos de diversos proveedores (a través de archivos excels, csv, txt, y xml), a la base de datos. Y estaba habilitando el soporte para archivos CSV (puedes abrir el archivo con el Notepad y darte cuenta porque es “Comma-separated values”, aunque tenga el icono asociado de excel).

Y aunque lo puedes leer con System.IO, pues tienes la opción de leer con un determinado proveedor como OleDb o Obdc. Usar un dataReader, recorrerlo, llenarlo a una List<Product>, y poder usar Linq to Objects, para filtros extras antes de enviarlo a tu base de datos.

Por suerte que si llegaba primero al otro, ya no aprendía nada, y no hubiera tenido existencia este post primero llegue a este artículo donde se lee el CSV con Obdc: Importing CSV Data and saving it in database. Y para archivos grandes con columnas simples, no he tenido ningún problema.

Pero llego un file de un proveedor, que tenia unos cuantos registros con unas columnas (descripción), anómalas… y que estaba lanzado una excepción… lo peor que el mensaje de la excepción estaba en blanco, como buscar ayuda sin mensaje de error ¿? :S… después de cierto tiempo de guerra con el archivo, vi que por lo menos la excepción te daba el Stack Trace, y por fin vi una luz: OdbcException: NO_DATA – no error information. Este thread comentaba que habría que tener la ultima versión de MDAC, descargue la herramienta, MDAC Utility: Component Checker, para verificar que versión de MDAC tengo, y por lo que entendí :S, parece que tengo la última versión.

A volver a recorrer la lista y depurar, después de minutos de penurias me pude dar cuenta que un registro no tomaba las ultimas 6 columnas, para ese registro no existían, pero los demás registros si reconocía estas columnas, pero el registro en cuestión lanzaba una excepción cuando intentaba acceder al índice, y decía que no existía. Este registro tenía una columna anómala a las de más (el archivo esta bien porque con excel, ves toda la información del archivo).

Lo único que se me ocurrió, antes de tirar la toalla era que la conexión podía tener otros parámetros para burlar este bug, y fui a ConnectionStrings. Ahí pude notar que también podía leer los CSV, con OleDb. De ahí vi la luz, y comenzaron a salir los artículos: Manipulating CSV files.

Y nada que con OleDb, ya no tenía ningún problema. Me queda como conclusión que OleDb, es más salvaje para leer los archivos, y tiene más soporte para columnas anómalas.

Después de unas horas de angustia, ya me siento deshagoado :D, no dicen que la mejor terapia es escribir un post? xD

P.D.: Encontré este otro artículo: A Fast CSV Reader, es una clase personalizada para leer archivos CVS… pero surge la pregunta, quieres rapidez o soporte (en la comunidad, foros, blogs, etc)?, en mi caso más que rapidez se necesita salvajismo para leer los archivos :D.

Saludos,

Para desestresarse: Concurso de programación en .NET

Vía Mauro Rondinelli, me entero del siguiente concurso: Concurso de programación en .NET, Ganate un IPhone!!!

http://www.elguruprogramador.com.ar/images/iphone.jpg

Detalles del Concurso:

El concurso consiste en programar una aplicación de escritorio en .NET que devuelva (buscando en Internet) imágenes y descripciones del producto indicado. Por ejemplo si buscamos ‘motorola v3’ nos debe devolver por un lado las imágenes mas relevantes (relacionadas a esa búsqueda por supuesto) y por otro las descripciones del producto. El programa debe tener la opción de poder guardar la(s) imágenes seleccionada(s) al disco rígido y copiar al portapapeles la(s) descripción(es) seleccionada(s).

Fechas

  • Apertura: 8 de Abril del 2008
  • Cierre de inscripción: 8 de Mayo del 2008
  • Fecha limite de entrega: 8 de Julio del 2008
  • Dictamen del Jurado: 15 de Julio del 2008 a las 15hs (Hora de Argentina GMT -3)
  • Entrega de Premios: 21 de Julio del 2008

Registro, reglas del concurso y más información -> Concurso de programación en .NET.

Saludos,

VS2008: CSS for Developer (Dummies Designers)

En alguna presentaciones de VS2008 en las que me toco participar, el hecho de tener una mejor herramienta con soporte para CSS, no llamo mucho la atención, y si no recuerdo mal, se dijo: “eso yo lo hacía con VS2005 y CSS”. La demo que presente fue una similar a la demo de ScottGu’s, que este caso es crear un nuevo estilo con todo el diseño, e ir viendo como lo vamos creando. Quizás el ejemplo no quedo muy claro, de ahí el origen de este post, para ver las verdadera utilidad de estas nueva feature en la IDE.

Pasemos a meter floro ver un poco más de esta herramienta y hacia quien esta orientada.

En primer lugar no creo que estas features de VS2008 reemplacen a una herramienta de diseño, ni tampoco convierte a VS2008 en una herramienta para hacer diseños espectaculares siendo un developer.

A mi parecer creo que esta feature esta orientada para un developer que quiere hacer algunos cambios o ajustes a un diseño, sin necesitar de un designer. No se si les ha pasado, pero hasta el cuadrar un tabla en los navegadores es un tarea “compleja”, he visto muchas preguntas en los foros, de gente con este problema. Mi recomendación es que si eres un developer, no designer, tiene que haber otra persona encargada del diseño, sobre todo si quieren un diseño personalizado, un buen diseño, y que respete los estándares. La tarea de nosotros viene al momento de integrar ese diseño (archivos html, images, CSS, y javascript si los hubiera), en las páginas aspx, e integrar la funcionalidad.

Muchas veces en un presupuesto para un proyecto sólo hay para developers con un sueldo respetable y por ahí un dba, y contratar un designer profesional es lo último para lo que alcanza ni modo que se quite el presupuesto para las reuniones extra de trabajo (B). Y si uno no hace nada con respecto al incluir un designer en el equipo, cuando estén entregando el software al cliente, y no lo vea bien en Firefox U Ppera, vendrán los problemas y las amanecidas para corregir esto.

¿Cuál es la estrategia?. Recordarles a nuestros jefes, que no somos designers, y que si quieren que nosotros hagamos el diseño es bajo su responsabilidad. Si el proyecto esta interesante, renunciar no es una buena opción. Una alternativa razonable es que podemos usar una plantilla de algún sitio existente y que este disponible para descarga: Templates for ASP.NET (también hay unas plantillas para Webs en general, es decir que igual las pueden usar con php, jsp, o lo que usen). Esta demás decir que estas plantillas están respetando los estándares, por los menos de las que he revisado ha sido así.

Y eso, presentar al jefe estas plantillas y que escoja una, y si no le gusta, tomar unas cervezas para bajar el coraje recomendarle contratar un designer profesional, y que disminuirá su presupuesto, aunque después de esto van a terminar aceptando una de esas de plantillas.

Ahora estamos sobre el supuesto que ya tenemos un plantilla, o el designer profesional ya nos envió su trabajo. En nuestro caso vamos a descargar: Visual C# Corporate Design para el ejemplo, obviamente C#, por cierto no se pierdan la gran batalla: C#.Net vs VB.Net, nótese que primero nombraron a C# :D, por algo será no?.

Después de descargar la plantilla, sólo le hacemos doble clic al archivo, e iniciará el asistente para instalar la plantilla y tenerla disponible en Visual Studio. Uno de los problemas es la plantilla esta disponible como Web Site, y no como Web Application Project, sólo es cosa de crearlo como Web Site, y después movemos los archivos a nuestra Web Application Project.

En la página de templates, unos para ASP.NET y otros html, la diferencia es que los de ASP.NET viene implementados con algunas features como master pages, y algunos controles de ASP.NET. En el template que estamos usando, viene con el servicio membership, pero como ni lo voy a usar, no hago las configuraciones respectivas en el web.config

Después de hacer un View in Browser, tenemos lo siguiente:

Si queremos podemos ver el código fuente de la página, y copiarlo y llevarlo al Validator de la W3C: http://validator.w3.org/#validate_by_input, y comprobarán como todo el html es válido, en su labor mantenerlo así :D.

Este tema no me gusta, así que vamos al web.config, y cambiamos al tema a otro disponible “Paper”:

Ahora se ve mejor, a aunque faltan hacer unos ajustes en el menú principal, para que se vea bien, en IE, Firefox, y Opera se ve bien, pero podemos hacer un ajuste para que en Safari, también se vea bien.

Si nos vamos a la master page, seleccionamos el menú en cuestión y nos vamos a la ventana CSS Properties, veremos que aparece seleccionado el estilo #mainnav, que es el estilo del div que contiene al menú:

Ahora en la ventana de propiedades, en el estilo padding-bottom le asignamos 2px:

Ahora hacemos View in Browser, nuevamente y veremos que ya se ve mejor la Web:

Vamos haciendo algunas conclusiones:

  1. Este no es un cambio del código agregando style inline, la herramienta automáticamente ha hecho el cambio en la hoja de estilo:

    Nótese además que este cambio lo ha hecho, dentro del skin que contiene este estilo.
  2. Tenemos soporte en Design del cambio aplicado, es decir que visualmente puedo ir cambiando la propiedad, y ver como va quedando, y todo automáticamente es actualizado en la hoja de estilo.
  3. La mejora o ajustes de diseños, deja de ser una tarea difícil para un developer.

Este puede ser un primer requerimiento, ajustar el estilo para que se vea bien en la mayoría de navegadores, aunque mayoría es muy subjetivo, al inicio del desarrollo se debería determinar cuales son los navegadores en los cuales la aplicación web se debe ver correctamente, aunque la idea es hacerlo bajo estándares y que sea posible que en todos se vea igual.

Ahora como segundo requerimiento, en una determinada página quieren mostrar una información de “la página”, en la zona derecha del menú principal:

Si sólo fuera un mensaje simple, podría hacerse con un literal, y desde la página lo busco en la master page, pero vamos a crear un nuevo content para esto.

Primero vamos a copiar un estilo parecido a este. Nos vamos a la ventana Manage Styles, seleccionamos el estilo #search, hacemos clic derecho sobre el y seleccionamos “New Style Copy…“:

Podemos modificar el estilo antes de copiarlo, o simplemente hacer clic en Ok, nótese que agrega el nuevo estilo a la hoja actualmente usada por la página, no se olviden de cambiar el nombre del estilo a #msjPage:

Ahora muevo el estilo que ha sido agregado al final, debajo del estilo #mainmenu, no se si esto sea necesario o no, pero así este lo demás xD (*creo que si era necesario por lo de la posición relativa y absoluta del estilo):

Ahora nos vamos al contenido de la página y agrego un div, que use el estilo creado, y agrego un texto para hacer las pruebas respectivas:

Si vamos a la vista diseño (de la master page), se podrán percatar, a los que también están haciendo la demo a modo de HOL, que el estilo sale muy abajo, pero después de unos ajustes (y con el soporte visual), podremos llegar al estilo deseado eso creíamos:

Y que es lo mejor de arriba?, que todo se guarda automáticamente en la hoja de estilo.

Ahora agrego un ContentPlaceHolder a mi estilo:

   1: <div id="msjPage">
   2:     <asp:ContentPlaceHolder ID="newsPage" runat="server">
   3:     </asp:ContentPlaceHolder>
   4: </div>

Ahora nos vamos a la página de contenido y agregamos lo que quisiéremos poner en el top, la cantidad de resultados de una búsqueda, alertas, o lo que se necesite:

   1: <asp:Content ContentPlaceHolderID="newsPage" ID="newsContent" 
   2:           runat="server" >
   3:     Aqu&iacute; un control Literal
   4: </asp:Content>

Ahora si nos vamos a la parte de diseño, no se ve como quisiéremos, sale muy a la izquierda:

Pero como ya sabemos el nombre del estilo podemos ir directamente a el y darle algunas modificaciones:

Tener en cuenta que esta es una posición absoluta, pero el contenedor inmediato superior no es relativo. Por ejemplo si dejamos toda la pantalla para el diseñador:

Al hacer View in Browser, podrán notar diferencias cuando minimizan el navegador como queda el search, y como queda este nuevo estilo. El contenedor del estilo search, que es le header, tiene posición relativo, esto  hace que se acomode automáticamente cuando se redimensiona el navegador. Debe haber un poquito más que hay que saber, pero la cosa es hacer que funcione, que se vea bien, y pase la validación de la W3C. Recordar siempre para este tipo de situaciones, escoger un tipo ideal de resolución ideal, por ejemplo definir que tu resolución mínima sea 1024×768. Así les estas avisando a los que tengan un 800×600, que no se podría ver como esperan la web.

Verán como haciendo uso de esta feature de Visual Studio 2008, hasta te hace aprender un poco de CSS sin querer queriendo.

Conclusiones:

  • CSS de VS2008 esta orientado a developers sin o con algo de experiencia en diseño, para darles soporte y poder hacer ajustes, mantenimientos, o hasta agregar nuevos estilos.
  • Se puede tener soporte en diseño e ir viendo como va quedando el diseño.
  • Todos los cambios son guardados automáticamente en la hoja de estilo.
  • Aprendes CSS, sin querer queriendo xD!

P.D.: CSS for Developer + ASP.NET AJAX + Support Javascript (mejorado) + Linq to Objects + ListView, a mi parecer es una razón suficiente para dejar al viejo VS2005, y empezar a usar VS2008. Y recuerden que ahora es más fácil migrar sus proyectos que tengan en VS2005, es más quizás ni sientan la migración.

Saludos,

Tip: Usar un control de otro Content como parametro en un DataSource

El título esta un poco largo, pero es puntual para lo que trata en este post.

Recuerden que en ASP.NET 2.0++ tenemos los famosos controles DataSource, ObjectDataSource, y los demás…

Todos estos controles son parametrizables, por ejemplo si mapeo mi ObjectDataSource a un método getMany (que devuelve una lista de generic del tipo de productos:

   1: [DataObjectMethod(DataObjectMethodType.Select, true)]
   2: public static List<Product> getManyByCustomRepository(
   3:                String model, String description,             
   4:              Int32 startRowIndex, Int32 maximumRows, String sortExpression)
   5: {
   6:      BLProductCustom blProd = new BLProductCustom();         
   7:  
   8:      return blProd.GetManyRepository(model, description,
   9:                    startRowIndex, maximumRows,
  10:                    sortExpression);
  11: }

El wizard me pide mapear los parámetros del método, con parámetros en mi página que puede ser por Control, QueryString, entre otras. Los tres últimos parámetros son para la paginación personalizada (que requiere un método contar para el ObjectDataSource), y el otro es para el Sort. Estos parámetros deben ser eliminados cuando el Wizard los mapea…

Ahora el código que tiene el ObjectDataSource es, como pueden ver estoy mapeando los parámetros a controles:

   1: <asp:ObjectDataSource ID="odsSearchProducts" runat="server" EnablePaging="True" 
   2:        OldValuesParameterFormatString="original_{0}"
   3:        SelectCountMethod="getCountByCustomRepository" SelectMethod="getManyByCustomRepository"
   4:        TypeName="ABC.AgProductUpload" OnSelecting="odsSearchProducts_Selecting" 
   5:        SortParameterName="sortExpression">
   6:     <SelectParameters>     
   7:         <asp:ControlParameter ControlID="txtModel" Name="model" PropertyName="Text"
   8:                        Type="String" />       
   9:         <asp:ControlParameter ControlID="txtDescription" Name="description" 
  10:                        PropertyName="Text" Type="String" />                
  11:     </SelectParameters>
  12: </asp:ObjectDataSource>

El caso es que ahora he tenido que mover los controles de filtro a otro control Content de ASP.NET, por temas de layout. Y pues venía el problema que no se reconoce los controles al ejecutar la página:

“Could not find control ‘txtModel in ControlParameter ‘model’.”

Y pues la solución es simple, (y no hay hacer ninguna marcianada en los eventos de selecting), sólo hay que cambiar el nombre de referencia:

   1: <asp:ObjectDataSource ID="odsSearchProducts" runat="server" EnablePaging="True" 
   2:        .... >
   3:     <SelectParameters>     
   4:         <asp:ControlParameter 
   5:                ControlID="ctl00$ctl00$placeSearchTop$placeSearch$txtModel" 
   6:                Name="model" PropertyName="Text" Type="String" />
   7:         <asp:ControlParameter 
   8:                ControlID="ctl00$ctl00$placeSearchTop$placeSearch$txtDescription" 
   9:                Name="description" PropertyName="Text" Type="String" />
  10:     </SelectParameters>
  11: </asp:ObjectDataSource>

Y eso…, el nombre depende de la estructura del uso del ContePlaceHolder que tengan, nada que no se puede ver haciendo un “View in Browser“, y ver el código html para ver el nombre completo de los controles.

Fuente: ASP.NET: could not find Control in ControlParameter.

Saludos,

Coleccion de temas para Visual Studio 2008

Alguna vez leí en un artículo de Internet que un leer sobre un fondo negro cansa menos que leer sobre un fondo blanco, no tengo el link a la mano, de repente para algunos no es así.

Lo cierto es que, si estamos desarrollando algún proyecto, la mayor parte del tiempo del día la pasamos después del messenger claro usando Visual Studio, dependiendo del lado donde estés, ya sea para crear código o revisar código corregir muertitos, y si es la herramienta que más usada durante el día por que tratar de optimizar el trabajo con respecto a esta, y este post específicamente a la parte visual.

Voy compartir esta lista de temas para Visual Studio:

Voy a ir probando por cierto tiempo cada tema, a ver con cual me quedo.

Fuente: Visual Studio Programmer Themes Gallery.

Temas relacionados:

P.D.: Todos los temas que descargas, ustedes lo pueden modificar para darle el toque final.

Saludos,