viernes, 11 de febrero de 2011

ASP.NET y Ajax: configurar el AutoComplete extender

Hola, en este post voy a volver a mundo de ASP.NET analizando la nueva plantilla ‘Nuevo Sitio web ASP.NET’ que viene con el Visual Studio 2010. Voy a comentar como administrar el sitio web denegando a los usuarios anónimos, es decir, no autentificados, el acceder al contenido de una carpeta de mi sitio web y por último lo que quiero es mostrar como configurar el AutoCompleteExtender. Ya que estoy desarrollando una página ASP.NET pues retomo el tema de los controles Ajax que vienen con el “ASP.NET Ajax Control Tookit”. Configurar el AutoCompleteExtender es un poco engorroso. De hecho si miramos aquí en la página en la que descargamos los controles, viene una demostración de cómo queda el control correctamente configurado y nos explican cómo configurar algunas de sus propiedades. Pues bien lo que voy a hacer va a ser demostrar cómo configurarlo. Para ello utilizaré la base de datos ‘AdventureWorks’ y al proyecto le añadiré un elemento ‘Clases de LINQToSQL’. Arrastraré la tabla ‘Address’ de la base de datos ‘AdventureWorks’ al diseñador de LINQToSQL y al guardar se me generará una clase DataContext, en este caso CiudadesDataContext que es el nombre que yo le pongo. Una vez que hemos modelado nuestra base de datos con el diseñador de LINQToSQL podemos hacer consultas LINQ de una manera muy fácil y potente. Eso sí recuerdo que es necesario trabajar con bases de datos sql ya que por ejemplo con una base de datos Access no se puede. Me podrías decir que a día de hoy es un poco cutre tener una aplicación profesional usando Access como base de datos. Te diré que sí pero para proyectos de andar por casa o si creas un instalador y no quieres obligar al cliente a instalar el SQLSERVER Express para trabajar con la base de datos en local, Access se puede seguir utilizando digan lo que digan los más puritanos en la materia. Eso sí no niego que se pierden funciones y facilidades como ésta de LINQToSQL.
Pues para que funcione el control escribiremos en la propiedad ServiceMethod el texto 'GetInfo' que es el método donde escribiremos la consulta LINQ, que nos devolverá los nombres de ciudades que empiecen por el texto que vamos escribiendo en el TextBox, que oportunamente hemos añadido a la página (al cual le hemos añadido el AutoCompleteExtender)

En código quedará + o - de la siguiente manera:
[WebMethod]
[ScriptMethod]
public static string[] GetInfo(string prefixText, int count)
{
' CiudadesDataContext en este caso o el nombre que le pongas tú
CiudadesDataContext dc = new CiudadesDataContext();
' consulta LINQ
var query = (from c in dc.Address
where c.City.StartsWith(prefixText)
select c.City).Distinct();
return query.Take(count).ToArray();
}

Y el vídeo:


Bueno con esto escribo algo en el blog que ya llevaba varios meses sin. Es que con los exámenes del curso de controller de costes que me tienen adsorbido. De hecho estoy diseñando un componente para arrastrar a un formulario y que te calcule el fondo de maniobra, las necesidades operativas de fondos, el EDITBA, así como el ROA y el ROE y más ratios, y puede ser guapo porque te crea en tiempo real un gráfico con el análisis patrimonial de una empresa. A ver si esto lo comparto con vosotros así como algunos proyectos guapos que tengo un poco olvidados.
A parte tengo pendiente explicar cómo añadir varios idiomas a una aplicación de WindowsForms, ya sea poniendo la propiedad Localizable a ‘True’ y seleccionando el idioma en la propiedad ‘Language’ (de esta forma ya se nos crea el archivo de recursos automáticamente y sólo hay que ir control por control modificando al nuevo idioma las los textos que queramos), o si queremos mostrar mensajes al usuario en función del idioma que tenga seleccionado habrá que crear nuestro archivo de recursos. Bueno no me enrollo más.

6 comentarios:

  1. Exelente! muy buena la información y el blog por supuesto :D

    Agregado a mis lecturas diarias!

    ResponderEliminar
  2. Muchas gracias!!! A ver si el tiempo me lo va permitiendo e hiré colgado más cosas interesantes.

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Gracias!!!!!
    ya se porque no me funcionaba ... es muy lento lo del autocomplete ... toca con paciencia esperar que salga la lista :( ... y por tu vídeo me dí cuenta..
    Gracias!!!!!

    ResponderEliminar
  5. funciona con cualquier version de visual?

    ResponderEliminar
  6. Hola Raúl,

    Bueno, empiezo por lo positivo. Antes que nada muchas gracias por los inteligentes tutoriales, me gusta ver cosas bien trabajadas, de alguien bien estudiado, no como los americanos que hacen tutoriales de mocosos donde todo está mal hecho. Los tuyos son un trabajo inteligente y se nota que eres licenciado A++

    Lo que me hace jurar siguiendo tus tutoriales es lo siguiente:

    Vas hablando bien de lo que quieres hacer u obtener y mientras haces eso, el cursor se mueve rápidamente de una esquina a otra sin guardar sincronización con lo que estás hablando en ese momento. Esto se ve agravado por el hecho de que no mencionas lo que estás haciendo o vas a hacer con el ratón. Es decir: deberías hacer: Ahora vamos a administrar el web, para eso me voy a : Esquina superior derecha, head login view, selecciono Loggedin temnplate de la select list, después me voy a administrar web, selecciono seguridad. Si no dices eso, resulta dificilísimo seguir el cursor y tengo que estar parando el vídeo cada 5 segundos. El video de youtube tiene una barra de status que desaparece a los tres segundos, entonces si estoy esperando el momento exacto para detener el vídeo y ver dónde has dejado el cursor, la barra desaparece y no puedo detenerlo.

    Bueno, pero a pesar de esto estoy muy agradecido por el excelente trabajo que denota tu muy buena talla intelectual.

    Sigue haciendo más porque hay muy pocos buenos trabajos. Yo hablo 6 idiomas y he elegido tus tutoriales porque son de lo mejor que he encontrado por ahí.

    Cordialmente

    Alvaro

    ResponderEliminar