domingo, 26 de junio de 2011

Convertir una lista desplegable en “autocomplete”

El efecto de búsqueda incremental  a los datos es la mejor opción en relaciones donde la cantidad de datos puede ser grande, con las herramientas SFS esto se hace en unos minutos solo configurando un parámetro.

image

Paso a paso

  1. En el archivo de configuración para la generación de código de “Product” cambiar el atributo PerformanceOption a “OnDemand” de la propiedad “ProductModel”.
    image
    <?xml version="1.0" encoding="utf-8"?>
    <SfsModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Entities>
    <Entity Name="Product" SetName="Products" IsUIVisible="false" GenerateCRUD="true" IsForLocalization="false" IsCustom="false" IsView="false" DefaultProperty="Name">
    <Properties>
    <Property Name="ProductModel" Nullable="true" Order="100.0000" UIRequired="false" Visible="true" VisibleInGrid="true" VisibleInForm="true" PerformanceOption="OnDemand" IsNavigationProperty="true" Type="SFSAdventureWorksModel.ProductModel" MaxLength="0" IsPrimaryKey="false" IsForeignKey="true" IsIdentity="false" IsSearchable="false" IsLocalizable="false" IsDataMember="false" IsCustom="false" />
    </Properties>
    </Entity>
    </Entities>
    </SfsModel>

  2. Si no existieran columnas XML involucradas en este ejemplo, esto sería  todo y la funcionalidad estaría terminada…! Pero lamentablemente debemos corregir un pendiente de columnas XML.
  3. Corrige la columna “Instructions” y “CatalogDescription” que han sido mapeadas automáticamente como string, pero deben ser cambiadas a XML en el archivo de configuración correspondiente y guarda los cambios.
    image
    El código:
    <?xml version="1.0" encoding="utf-8"?>
    <SfsModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Entities>
    <Entity Name="ProductModel" SetName="ProductModels" IsUIVisible="false" GenerateCRUD="true" IsForLocalization="false" IsCustom="false" IsView="false" DefaultProperty="Name">
    <Properties>
    <Property Name="Instructions"
    Nullable="true" Order="100.0000" UIRequired="false"
    Visible="true" VisibleInGrid="true"
    VisibleInForm="true"
    PerformanceOption="Fill"
    IsNavigationProperty="false"
    Type="Xml" MaxLength="0" IsPrimaryKey="false" IsForeignKey="false" IsIdentity="false" IsSearchable="false" IsLocalizable="false" IsDataMember="false" IsCustom="false" />
    <Property Name="CatalogDescription"
    Nullable="true" Order="100.0000"
    UIRequired="false" Visible="true"
    VisibleInGrid="true" VisibleInForm="true"
    PerformanceOption="Fill"
    IsNavigationProperty="false"
    Type="Xml" MaxLength="0" IsPrimaryKey="false" IsForeignKey="false" IsIdentity="false" IsSearchable="false" IsLocalizable="false" IsDataMember="false" IsCustom="false" />
    </Properties>
    </Entity>
    </Entities>
    </SfsModel>

  4. Regenera el código de la capa de presentación.
  5. Regenera el código de la capa de reglas de negocio.
  6. Compila el proyecto de la capa de presentación.
  7. Prueba navegando a la dirección “/SFSAdventureWorks/Products/CreateGen” y el el campo de Model escribe por lo menos dos caracteres (“cl”) para ver el efecto de resultados encontrados en la búsqueda incremental a la base de datos.


Conclusión


Convertir un campo de selección a una búsqueda incremental de autocompletar es muy fácil con las herramientas SFS.  Pero existe también otra práctica similar: el LookUp, para cuando se trata de catálogos aún más poblados y con la necesidad de tener más columnas visibles en la búsqueda.

No hay comentarios.:

Publicar un comentario