lunes, 6 de enero de 2014

AGREGAR FILTRADO

A menudo deseará que en la página sólo se muestren datos seleccionados. En esta parte del tutorial modificará la consulta para el control SqlDataSource de manera que los usuarios puedan seleccionar registros de clientes de una ciudad determinada.
En primer lugar, utilizará un control TextBox para crear un cuadro de texto en el que los usuarios puedan escribir el nombre de una ciudad. A continuación, cambiará la consulta para incluir un filtro parametrizado (cláusula WHERE). Como parte de ese proceso, creará un elemento de parámetro para el control SqlDataSource. El elemento de parámetro establece cómo obtendrá el control SqlDataSource el valor para su consulta parametrizada; concretamente, del cuadro de texto.
Cuando finalice esta parte del tutorial, la página podría tener una apariencia similar a la siguiente en la vista Diseño.
Página de filtro de datos de la vista Diseño

Para agregar el cuadro de texto que permite especificar una ciudad

  1. Desde el grupo Estándar del Cuadro de herramientas, arrastre a la página un control TextBox y un control Button.
    El control Button sólo se utiliza para devolver la página al servidor. En este caso no tendrá que escribir código.
  2. En Propiedades, para el control TextBox, establezca ID en textCity.
  3. Si lo desea, escriba Ciudad o un texto similar delante del cuadro de texto, como título.
  4. En Propiedades para el control Button, establezca Text en Enviar.
Ahora puede modificar la consulta para que incluya un filtro.

Para modificar la consulta con un filtro parametrizado

  1. Haga clic con el botón secundario del mouse en el control SqlDataSource y, a continuación, seleccione Mostrar etiqueta inteligente.
  2. En el menú Tareas de SqlDataSource, haga clic en Configurar origen de datos.
    Aparecerá el asistente Configurar origen de datos - <nombreDelOrigenDeDatos>.
  3. Haga clic en Siguiente.
    El asistente muestra el comando SQL configurado actualmente para el control SqlDataSource.
  4. Haga clic en WHERE.
    Aparecerá la página Agregar cláusula WHERE.
  5. En la lista Columna, haga clic en Ciudad.
  6. En la lista Operador, haga clic en =.
  7. En la lista Origen, haga clic en Control.
  8. En Propiedades del parámetro, en la lista Id. de control, haga clic en textCity.
    Cuadro de diálogo Agregar cláusula Where
    En los cinco pasos anteriores se especifica que con la consulta se obtendrá el valor de búsqueda de Ciudad del control TextBox que agregó en el procedimiento anterior.
  9. Haga clic en Agregar.
    La cláusula WHERE que ha creado aparece en un cuadro en la parte inferior de la página.
  10. Haga clic en Aceptar para cerrar la página Agregar cláusula WHERE.
  11. En el asistente Configurar origen de datos - <nombreDelOrigenDeDatos>, haga clic en Siguiente.
  12. En la página Consulta de prueba, haga clic en Consulta de prueba.
    Aparece el asistente, con la página Editor de valores del parámetro, en la que se solicita un valor para utilizarlo en la cláusula WHERE.
  13. En el cuadro Valor, escriba Londres y, a continuación, haga clic en Aceptar.
    Aparecen los registros de los clientes de Londres.
  14. Haga clic en Finalizar para cerrar el asistente.

PROTEGER CADENAS DE CONEXIÓN AL UTILIZAR CONTROLES DE ORIGEN DE DATOS

Al trabajar con controles de origen de datos debe centralizar la ubicación de las cadenas de conexión situándolas en el archivo Web.config de la aplicación. Los beneficios son dobles: 

Cómo agregar una cadena de conexión a Web.config con un control de origen de datos

  1. Abra una página .aspx en la vista Diseño en Visual Studio.
  2. En el Cuadro de herramientas, en la carpeta Datos, arrastre un control de origen de datos, por ejemplo un control SqlDataSource, hasta la superficie de diseño.
  3. Haga clic con el botón secundario del mouse en el control y, a continuación, haga clic en Mostrar etiqueta inteligente.
  4. En el panel de etiquetas inteligentes, haga clic en Configurar origen de datos.
  5. En el panel Elegir una conexión de datos, haga clic en Nueva conexión.
  6. Seleccione un origen de datos adecuado de la lista en el cuadro de diálogo Elegir una conexión de datos, y luego haga clic en Aceptar.
  7. Indique el nombre de servidor, nombre de usuario y contraseña correctos en el cuadro de diálogo Agregar conexión, y después haga clic en Aceptar.
    Regresa al cuadro de diálogo Configurar origen de datos con un resumen de los detalles de su conexión.
  8. Haga clic en Siguiente, y luego en  para guardar su cadena de conexión en el archivo Web.config.
    La cadena de conexión ahora se almacena en el archivo Web.config y puede configurar los detalles de la consulta para su control.

Para cifrar la información de la cadena de conexión almacenada en el archivo Web.config

  1. En la línea de comandos de Windows, ejecute la herramienta Registro de IIS de ASP.NET (Aspnet_regiis.exe) con las opciones siguientes:
    • La opción -pe, pasándole la cadena "connectionStrings" para cifrar el elemento connectionStrings.
    • La opción -app, pasándole el nombre de su aplicación.
    La herramienta Aspnet_regiis.exe está ubicada en la carpeta %systemroot%\Microsoft.NET\Framework\númeroDeVersión.
    En el ejemplo siguiente se muestra cómo se cifra la sección connectionStrings del archivo Web.config de una aplicación denominada SampleApplication.
    aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"
    
    Cuando el comando haya finalizado, puede ver el contenido del archivo Web.config. La sección de configuración connectionStrings contendrá información cifrada en vez de una cadena de conexión de texto no cifrado, como se muestra en el ejemplo siguiente.
    <configuration>
       <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
          <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
             xmlns="http://www.w3.org/2001/04/xmlenc#">
             <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
             <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
                   <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
                   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                      <KeyName>RSA Key
                      </KeyName>
                   </KeyInfo>
                   <CipherData>
                      <CipherValue>WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
                      </CipherValue>
                   </CipherData>
                </EncryptedKey>
             </KeyInfo>
             <CipherData>
                <CipherValue>OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE=
                </CipherValue>
             </CipherData>
          </EncryptedData>
       </connectionStrings>
    </configuration>
    
    Deje el símbolo del sistema abierto para los pasos posteriores.
  2. Determine la cuenta de usuario o identidad con la que se ejecuta ASP.NET recuperando el nombre de WindowsIdentity actual.
    En el siguiente ejemplo de código se muestra una forma de determinar el nombre de WindowsIdentity.
    <%@ Page Language="C#" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
    %>
    
    La cuenta de usuario o la identidad con la que se ejecuta ASP.NET debe tener acceso de Lectura a la clave de cifrado utilizada para cifrar y descifrar las secciones del archivo Web.config. En este procedimiento se supone que su sitio Web se configura con el RsaProtectedConfigurationProvider predeterminado especificado en el archivo Machine.config denominado "RsaProtectedConfigurationProvider". El contenedor de claves RSA utilizado por el RsaProtectedConfigurationProviderpredeterminado se denomina "NetFrameworkConfigurationKey".
  3. En el símbolo del sistema, ejecute la herramienta Aspnet_regiis.exe con las opciones siguientes:
    • La opción -pa, pasándole el nombre del contenedor de claves RSA del RsaProtectedConfigurationProvider predeterminado
    • La identidad de la aplicación ASP.NET, como se determinó en el paso anterior.
    En el ejemplo siguiente se muestra cómo conceder el acceso de la cuenta NETWORK SERVICE al contenedor de claves RSA de "NetFrameworkConfigurationKey" en el nivel de equipo.
    aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
    
  4. Para descifrar el contenido cifrado del archivo Web.config, ejecute la herramienta aspnet_regiis.exe con la opción -pd. La sintaxis es igual que la usada para cifrar el contenido del archivo Web.config con la opción -pe, excepto que no se especifica ningún proveedor de configuración protegido. Se identifica el proveedor adecuado en el atributo configProtectionProvider para la sección protegida.
    En el siguiente ejemplo de código se muestra cómo descifrar el elemento connectionStrings de la aplicación ASP.NET SampleApplication.
    aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"

MOSTRAR, PAGINAR Y ORDENAR DATOS CON EL CONTROL DE SERVIDOR WEB LISTVIEW

Para mostrar datos en una página Web de ASP.NET, necesita lo siguiente:
  • Una conexión con un origen de datos como una base de datos. En el procedimiento siguiente creará una conexión a la base de datos de AdventureWorks de SQL Server.
  • Un control de origen de datos en la página, que interactúa con el origen de datos (la base de datos) para leer y escribir datos. En este tutorial, utilizará un controlSqlDataSource que interactúa con la base de datos de AdventureWorks de SQL Server.
  • Un control en la página para mostrar los datos. En el procedimiento siguiente, mostrará los datos en un control ListView, que recibe sus datos del controlSqlDataSource.

Para mostrar y paginar los datos del control ListView

  1. Si el sitio web no tiene una carpeta App_Data, en el Explorador de soluciones, haga clic con el botón secundario en el proyecto, haga clic en Agregar carpeta ASP.NET y, a continuación, en App_Data.
  2. En el Explorador de soluciones, haga clic con el botón secundario en la carpeta App_Data y después haga clic en Agregar elemento existente.
    Se mostrará el cuadro de diálogo Agregar elemento existente.
  3. Escriba la ubicación del archivo de base de datos de AdventureWorks (AdventureWorks_Data.mdf).
    De forma predeterminada, el archivo .mdf se instala en la ruta de acceso C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf.
    En el Explorador de soluciones, haga clic con el botón secundario en el proyecto y, a continuación, haga clic en Agregar nuevo elemento.
  4. Se abrirá el cuadro de diálogo Agregar nuevo elemento.
  5. En Plantillas instaladas, seleccione Visual Basic o Visual C# y, a continuación, seleccione Web Forms.
  6. Escriba Sample.aspx como nombre de la nueva página web y haga clic en Agregar.
  7. Cambie a la vista Diseño.
  8. En la pestaña Datos del Cuadro de herramientas, arrastre un control ListView a la página.
    Control ListView
  9. En el menú Tareas de ListView comunes, en la lista desplegable Elegirorigen de datos, haga clic en <Nuevo origen de datos…>.
    Aparece el Asistente para configuración de orígenes de datos.
  10. Haga clic en Base de datos.
    Al hacerlo, especifica que desea obtener los datos de una base de datos que admite instrucciones SQL, lo que incluye SQL Server y otras bases de datos compatibles con OLE-DB.
  11. En el cuadro Especificar un id. para el origen de datos, aparece un nombre de control de origen de datos predeterminado, SqlDataSource1. Puede dejar este nombre.
    Asistente para la configuración de orígenes de datos
  12. Haga clic en Aceptar.
    Se muestra el Asistente para la configuración de orígenes de datos.
  13. En la lista ¿Qué conexión de datos debería utilizar la aplicación para conectarse a la base de datos?, seleccione AdventureWorks_Data.mdf .
  14. Haga clic en Siguiente.
    El asistente muestra una página donde puede especificar que desea almacenar la cadena de conexión en el archivo de configuración. Si se almacena la cadena de conexión en el archivo de configuración, se tienen dos ventajas:
    • Puede resultar más seguro que almacenarla en la página.
    • Puede utilizar la misma cadena de conexión en varias páginas.
  15. Asegúrese de que está activada la casilla Sí, guardar esta conexión como y haga clic en Siguiente. Puede dejar el nombre predeterminado de la cadena de conexión.
    El asistente muestra una página en la que puede especificar los datos que desea obtener de la base de datos.
  16. Seleccione la opción Especificar una instrucción SQL o un procedimiento almacenado personalizado.
    Configurar la instrucción Select
  17. Haga clic en Siguiente.
  18. En la página Definir instrucciones o procedimientos almacenados personalizados, escriba la consulta SQL siguiente, que recupera datos de contacto de la base de datos de AdventureWorks.
    SELECT  ContactID, FirstName, LastName, EmailAddress
    FROM    Person.Contact
    
    Puede hacer clic también en Generador de consultas y utilizar la ventana Generador de consultas para crear una consulta y a continuación, validarla con el botónEjecutar consulta.
  19. Haga clic en Siguiente.
  20. Haga clic en Consulta de prueba para asegurarse de que recupera los datos que desea.
  21. Haga clic en Finalizar.
    El asistente crea un control SqlDataSource y lo agrega a la página. El control ListView que agregó anteriormente se enlaza al control SqlDataSource.
    Si observa las propiedades del control SqlDataSource, verá que el asistente ha creado valores para las propiedades ConnectionString y SelectCommand.
  22. Haga clic con el botón secundario en el control ListView y, a continuación, haga clic en Mostrar etiqueta inteligente.
  23. En el menú Tareas de ListView comunes, haga clic en Configurar ListView.
    Se muestra el cuadro de diálogo Configurar ListView.
  24. Seleccione Habilitar paginación.
    El asistente crea las plantillas para el control ListView, basándose en las columnas de la consulta. Puede personalizar el diseño mediante la modificación de las plantillas que contienen los elementos de diseño, los controles y las expresiones de enlace.
    Configurar ListView
  25. Haga clic en Aceptar.
    Control ListView
Antes de continuar, puede probar el control ListView.

Para probar el control ListView

  1. Presione CTRL+F5 para ejecutar la página.
    El control ListView se muestra con las columnas ContactIDFirstNameLastNameEmailAddress.
  2. Haga clic en los botones FirstPreviousNext y Last en la parte inferior de la página para paginar los datos.
  3. Cuando finalice, cierre el explorador.
Ahora agregará la función de ordenación al control ListView. Puede proporcionar esta función si agrega un botón al control ListView y configura el botón.

Para agregar la función de ordenación al control ListView

  1. En el archivo Default.aspx y cambie a la vista Código fuente.
  2. De la pestaña Estándar del Cuadro de herramientas, arrastre dos controles Button y colóquelos después del elemento de table que está en el elementoLayoutTemplate.
  3. En la ventana Propiedades, cambie las propiedades de los botones como sigue:
    • Para el primer botón, establezca la propiedad Text en "Sort by First Name", la propiedad CommandName en "Sort" y CommandArgument en "FirstName".
    • En el segundo botón, establezca la propiedad Text en "Sort by Last Name", la propiedad CommandName en "Sort" y CommandArgument en "LastName".
    Las propiedades CommandArgument del botón se establecen en una expresión de ordenación. En los datos de la base de datos, éste es normalmente el nombre de una columna.
  4. Guarde la página.