Lenguaje de Programación III_2

Embed Size (px)

Citation preview

  • 8/17/2019 Lenguaje de Programación III_2

    1/52

    LENGUAJE DE PROGRAMACIÓN I I I 49

    CIBERTEC CARRERAS PROFESIONALES

    ADMINISTRANDO LOS ESTADOSY DISEÑANDO UNA APLICACIÓN

    WEBLOGRO DE LA UNIDAD DE APRENDIZAJE

    Al término de la unidad, los alumnos, utilizando las técnicas explicadas en clase y loscontroles que proporciona el Framework 3.5, construyen el diseño de páginas Webpara personalizar el diseño y apariencia de una página Web.

    TEMARIO

      Tipos de Web Site en Visual Studio 2008•  Gestión de Web Form•  Tipos de programación :Script y Code-Behind•  Manejo de controles estándar de Servidor: Implementación, configuración y

    programación•  Manejo de controles de validación: RequiredFieldValidator, CompareValidator,

    RegularExpressionValidator, CustomValidator, RangeValidator•  Trabajar con objetos intrínsecos de ASP.NET: Request, Response, Server,

    ViewState, Cookies, Session, Application•  Diseño e implementación de una página web: Hojas de estilo, temas, master

    page, App_Themes, StyleSheetTheme

    ACTIVIDADES PROPUESTAS

    •  Los alumnos manejan los estados de una página: Cookies, ViewState, Application ySession.

    •  Los alumnos diseñan un master page, definen hojas de estilos y temas paraimplementar un sitio Web

    UNIDAD DE

    APRENDIZAJE 

    1

    SEMANA 

    3

  • 8/17/2019 Lenguaje de Programación III_2

    2/52

    50

    CARRERAS PROFESIONALES CIBERTEC

    1. INFORMACIÓN GENERAL SOBRE LA ADMINISTRACIÓN DEESTADOS EN ASP .NET

    Cada vez que la página se envía al servidor, se crea una nueva instancia de laclase de la página Web. En la programación Web tradicional, esto se traduce enque toda la información asociada a la página y sus controles se pierden con cada

    recorrido de ida y vuelta.Para superar esta limitación inherente de la programación Web tradicional,ASP.NET incluye varias opciones que ayudan a preservar los datos en cadapágina y en toda la aplicación. Estas características son las siguientes:

    •  Estado de vista•  Estado de control•  Campos ocultos•  Cookies•  Cadenas de consulta•  Estado de aplicación•  Estado de sesión•  Propiedades de perfiles

    1.1 OPCIONES DE ADMINISTRACIÓN DE ESTADO EN EL CLIENTELas siguientes secciones describen opciones para administrar el estado quealmacenan la información en la página o en el equipo cliente.

    1.1.1 Estado de vista: ViewStatePermite conservar valores entre las distintas solicitudes de una mismapágina. Éste es el método predeterminado que la página utiliza paraconservar los valores de las propiedades de la propia página y suscontroles entre recorridos de ida y vuelta.

    1.1.2 Estado de control: ControlState

    La propiedad ControlState  permite mantener la información de laspropiedades que es específica de un control y que no se puededesactivar como ocurre con la propiedad ViewState. Por ejemplo, si haescrito un control personalizado con varias fichas que muestran distintostipos de información, el control debe saber la ficha que se selecciona enlos recorridos de ida y vuelta para que funcione tal y como se espera.

    1.1.3 Campos ocultos: HiddenFieldUn control HiddenField almacena una única variable en su propiedadValue y se debe agregar en la página de forma explícita.Para que los valores de los campos ocultos estén disponibles durante elprocesamiento de la página, debe enviarla mediante el método POSTde HTTP. Si utiliza campos ocultos y una página se procesa comorespuesta a un vínculo o a un comando GET de HTTP, los camposocultos no estarán disponibles.

    1.1.4 CookiesUna cookie es una cantidad pequeña de datos que se almacena en unarchivo de texto en el sistema de archivos del cliente o que se mantieneen la memoria durante la sesión del explorador cliente. Contieneinformación específica del sitio que el servidor envía al cliente junto conel resultado de la página.

  • 8/17/2019 Lenguaje de Programación III_2

    3/52

    LENGUAJE DE PROGRAMACIÓN I I I 51

    CIBERTEC CARRERAS PROFESIONALES

    1.1.5 Cadenas de consulta: QueryStringUna cadena de consulta es información que se anexa al final de ladirección URL de una página. Un ejemplo típico de cadena de consulta:http://www.contoso.com/listwidgets.aspx?category=basic&price=100En la ruta URL indicada, la cadena de consulta empieza por un signo deinterrogación (?) e incluye dos pares de atributo-valor, uno de ellos sedenomina "category" y el otro, "price".Para que los valores de las cadenas de consulta estén disponiblesdurante el procesamiento de la página, debe utilizar el método GET deHTTP.

    1.2 OPCIONES DE ADMINISTRACIÓN DE ESTADO EN EL SERVIDOR ASP.NET proporciona una serie de medios para mantener la información deestado en el servidor, en lugar de conservarla en el cliente. Con laadministración de estados basada en servidor, puede reducir la cantidad deinformación que se envía al cliente para conservar el estado.

    1.2.1 Estado de aplicación: ApplicationStateEl estado de aplicación es un mecanismo de almacenamiento global alque se puede obtener acceso desde todas las páginas de la aplicaciónWeb.Es una instancia de la clase HttpApplicationState, de cada aplicaciónWeb activa. Por tanto, el estado de aplicación resulta útil paraalmacenar la información que se debe mantener en los recorridos de iday vuelta del servidor y entre las solicitudes de las páginas.

    1.2.2 Estado de sesión: SessionStateEstado de sesión es similar a estado de aplicación con la diferencia deque el ámbito es la actual sesión del explorador. Si hay varios usuariosutilizando la aplicación, cada uno de ellos tendrá un estado de sesióndistinto.

    2. INFORMACIÓN GENERAL SOBRE LAS COOKIESLas cookies son pequeños fragmentos de texto que acompaña a las solicitudes ya las páginas mientras éstas se transmiten del servidor Web al explorador yviceversa. Permiten a los sitios Web almacenar información sobre los visitantes.Se utilizan para muchos propósitos; todos ellos destinados a facilitar al sitio Webel reconocimiento de los usuarios. Por ejemplo, un sitio que lleva a cabo unsondeo podría utilizar una cookie, simplemente, como un valor booleano paraindicar si el explorador del usuario ya ha participado en la votación con el fin deevitar que el usuario vote dos veces.

    La mayoría de los exploradores admiten cookies de un tamaño máximo de 4096bytes. Los exploradores también imponen limitaciones: sólo permiten 20 cookiespor sitio; si se intenta almacenar más, las cookies más antiguas se descartan.

    2.1 MODO DE ESCRIBIR COOKIESEl explorador administra las cookies en los equipos de los clientes. Lascookies se envían al cliente utilizando el objeto HttpResponse, que exponeuna propiedad denominada Cookies.Cuando escriba una nueva cookie, deberá especificar sus propiedades Name y Value. Cada cookie debe tener un nombre único para que la aplicación Webpueda identificarla cuando el explorador la envíe con solicitudes futuras.

  • 8/17/2019 Lenguaje de Programación III_2

    4/52

    52

    CARRERAS PROFESIONALES CIBERTEC

    Hay dos maneras de escribir una cookie en el equipo de un usuario:Establecer las propiedades de la cookie directamente en la colección Cookies  

    Crear una instancia del objeto HttpCookie  y agregarla a la colección Cookies .

    Las cookies también pueden almacenar varios pares de nombre y valor enuna sola cookie.

    En el ejemplo siguiente se muestra la manera de escribir la mismacookie, cada una con dos subclaves:

    Para limitar las cookies a una carpeta del servidor, establezca lapropiedad Path de la cookie, como en el ejemplo siguiente:

    2.2 MODO DE LEER LAS COOKIES

    En sus aplicaciones ASP.NET, puede leer las cookies mediante el objetoHttpRequest, que está disponible como propiedad Request  de la clasePage. En el ejemplo, se muestran dos maneras de obtener el valor de unacookie denominada username

    Para leer los nombres y los valores de todas las cookies disponiblespara la página, puede recorrer la colección Cookies mediante códigocomo el siguiente.

    Response.Cookies("userName").Value = "patrick"Response.Cookies("userName").Expires = DateTime.Now.AddDays(1)

    Dim aCookie As New HttpCookie("lastVisit")aCookie.Value = DateTime.Now.ToString()aCookie.Expires = DateTime.Now.AddDays(1)Response.Cookies.Add(aCookie)

    Dim aCookie As New HttpCookie("userInfo")aCookie.Values("userName") = "patrick"aCookie.Values("lastVisit") = DateTime.Now.ToString()aCookie.Expires = DateTime.Now.AddDays(1)Response.Cookies.Add(aCookie)

    Dim appCookie As New HttpCookie("AppCookie")appCookie.Value = "written " & DateTime.Now.ToString()appCookie.Expires = DateTime.Now.AddDays(1)appCookie.Path = "/Application1"Response.Cookies.Add(appCookie)

    If Not Request.Cookies("userName") Is Nothing ThenDim aCookie As HttpCookie = Request.Cookies("userName")Label1.Text = Server.HtmlEncode(aCookie.Value)

    End If

  • 8/17/2019 Lenguaje de Programación III_2

    5/52

    LENGUAJE DE PROGRAMACIÓN I I I 53

    CIBERTEC CARRERAS PROFESIONALES

    2.3 ELIMINACIÓN DE LAS COOKIESLa eliminación de una cookie, es decir, su borrado físico del disco duro del

    usuario, es una variación del proceso de modificación. No es posibleeliminar directamente una cookie, ya que se encuentra en el equipo delusuario. Sin embargo, puede conseguir que el explorador la elimine.

    3. INFORMACIÓN GENERAL SOBRE EL ESTADO DE VISTA

    El estado de vista es el método que permite conservar los valores de página ycontrol entre acciones de ida y vuelta. Puede tener acceso al estado de vista ensu propio código mediante la propiedad ViewState  de la página para conservarlos datos durante las acciones de ida y vuelta al servidor Web.

    3.1 MODO DE GUARDAR VALORES EN EL ESTADO DE VISTA

    El estado de vista es un repositorio de una página ASP.NET en el que sepueden almacenar valores que deben conservarse durante la devolución dedatos.Los datos de estado de vista se almacenan en uno o más campos ocultoscomo cadenas codificadas en base64. Puede tener acceso a información deestado de vista mediante la propiedad ViewState de la página que expone un

    objeto de diccionario. Puesto que el estado de vista se envía como un campooculto, se pueden realizar cambios en el estado hasta el evento PreRender.

    3.1.1 Para guardar un valor en el estado de vista:

    Dim output As System.Text.StringBuilder = New System.Text.StringBuilderDim aCookie As HttpCookieFor i as Integer= 0 to Request.Cookies.Count - 1aCookie = Request.Cookies(i)output.Append("
    ")output.Append("Name=" & Server.HtmlEncode(aCookie.Name) & "
    ")

    output.Append("Value=" & Server.HtmlEncode(aCookie.Value) & "
    ")NextLabel1.Text = output.ToString() 

    Dim aCookie As HttpCookie

    Dim cookieName As StringDim limit As Integer = Request.Cookies.Count - 1For i as Integer=0 To limit

    cookieName = Request.Cookies(i).NameaCookie = New HttpCookie(cookieName)aCookie.Expires = DateTime.Now.AddDays(-1)Response.Cookies.Add(aCookie)

    Next

    Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)Me.ViewState.Add("arrayListInViewState", PageArrayList)

    End Sub

  • 8/17/2019 Lenguaje de Programación III_2

    6/52

    54

    CARRERAS PROFESIONALES CIBERTEC

    3.1.2 Para cifrar el estado de vista:En la directiva @Page, establezca el atributo ViewStateEncryptionModeen "Always", como en el ejemplo siguiente:

    3.2 MODO DE HABILITAR O DESHABILITAR EL VIEWSTATE PARA UNCONTROL O PÁGINA

    Para habilitar o deshabilitar el estado de vista para un control:•  Seleccione el control en la vista diseño del Web form.•  En la ventana de propiedad, seleccione la propiedad EnabledViewState

    y seleccione el valor de true  para habilitar el estado; seleccione falsepara deshabilitar el estado de la vista del control

    Para habilitar o deshabilitar el estado de vista de una página:•  Seleccione la vista de origen (Source View) de la página Web.•  Ubique la directiva •  Para habilitar el ViewState,  añada a la directiva

    EnabledViewState=”true”; para deshabilitar el ViewState, a ladirectiva EnabledViewState=”false”.

    4. INFORMACIÓN GENERAL SOBRE EL ESTADO DE SESSION

    El estado de sesión de ASP.NET identifica las solicitudes recibidas desde elmismo explorador durante un tiempo limitado como una sesión y conserva losvalores de las variables mientras dure esa sesión.

    Por ejemplo, crear las variables de sesión FirstName y LastName pararepresentar el nombre y el apellido de un usuario y las variables seestablecen en los valores recuperados de los controles

    4.1 EVENTOS DEL ESTADO DE SESSIONASP.NET proporciona dos eventos que ayudan a administrar las sesiones deusuario: Session_OnStart  se desencadena cuando inicia una nueva sesión,y Session_OnEnd se desencadena cuando se abandona una sesión.

    4.1.1 Session_OnStartSe ejecuta al principio de una solicitud, si ésta inicia una nueva sesión.Se utiliza para inicializar las variables de sesión, así como para realizarel seguimiento de la información relacionada con la sesión.

    4.1.2 Session_OnEndSe ejecuta cuando se llama al método Abandon o cuando la sesión hacaducado. Una sesión caduca cuando el número de minutosespecificado por la propiedad Timeout  transcurre sin que se hayacreado ninguna solicitud para la sesión.Si la propiedad Mode del objeto Session es StateServer o SQLServer,se omite el evento Session_OnEnd en el archivo Global.asax. Puedeutilizar el evento Session_OnEnd  para limpiar la informaciónrelacionada con la sesión.

    Session("FirstName") = FirstNameTextBox.TextSession("LastName") = LastNameTextBox.Text

  • 8/17/2019 Lenguaje de Programación III_2

    7/52

    LENGUAJE DE PROGRAMACIÓN I I I 55

    CIBERTEC CARRERAS PROFESIONALES

    Ejemplo de eventos de sessionLas subrutinas definidas en este ejemplo crean un contador querealiza el seguimiento del número de usuarios de la aplicación queutilizan dicha aplicación de forma activa. Observe que este ejemplo

    sólo funcionará correctamente cuando la propiedad de estado de sesiónMode se establezca en InProc, ya que el evento Session_OnEnd  sólo escompatible con el almacén de estado de sesión en proceso.

    4.2 RECUPERAR LOS VALORES EN UN ESTADO DE SESSIONLa propiedad Ítem permite recuperar los valores de un estado de sesión.

    El estado de la sesión caduca, de forma predeterminada, después de 20minutos de inactividad. Puede controlar el período de duración del estado de

    sesión mediante el atributo timeout  de la sección de configuraciónsessionState.

    4.3 MODOS DE UN ESTADO DE SESSIONEl estado de sesión de ASP.NET es compatible con distintas opciones dealmacenamiento de los datos de la sesión. En la lista siguiente se describenlos modos de estado de sesión disponibles:•  Modo InProc, que almacena el estado de sesión en memoria en el servidor

    Web. Éste es el valor predeterminado.•  Modo StateServer, que almacena el estado de sesión en un proceso

    distinto denominado "servicio de estado de ASP.NET". Este modogarantiza que el estado de sesión se mantiene si se reinicia la aplicaciónWeb y que esté disponible también para varios servidores Web.

    •  Modo SQLServer, que almacena el estado de sesión en una base dedatos de SQL Server. Este modo garantiza que el estado de sesión semantiene si se reinicia la aplicación Web y que esté disponible tambiénpara varios servidores Web en una batería de servidores Web.

    •  Modo Custom, que permite especificar un proveedor de almacenamientopersonalizado.

    Public Sub Application_OnStart()Application("UsersOnline") = 0End Sub

    Public Sub Session_OnStart()Application.Lock()Application("UsersOnline") = CInt(Application("UsersOnline")) + 1Application.UnLock()End Sub

    Public Sub Session_OnEnd()Application.Lock()

    Application("UsersOnline") = CInt(Application("UsersOnline")) - 1Application.UnLock()End Sub

    Dim firstName as String = CType(Session.Item("FirstName"), String)Dim lastName as String = CType(Session.Item("LastName"), String)

  • 8/17/2019 Lenguaje de Programación III_2

    8/52

    56

    CARRERAS PROFESIONALES CIBERTEC

    5. INFORMACIÓN GENERAL SOBRE EL ESTADO DEAPLICACION

    El estado de aplicación es un repositorio de datos disponible para todas las clasesde una aplicación ASP.NET. El estado de aplicación se almacena en la memoriadel servidor y ofrece más rapidez que el almacenamiento y la recuperación de

    información de una base de datos.El estado de aplicación se almacena en una instancia de la claseHttpApplicationState. Esta expone un diccionario de objetos con valores yclaves. La instancia de HttpApplicationState  se crea la primera vez que elusuario tiene acceso a cualquier recurso de dirección URL de la aplicación.

    5.1 MODO DE GUARDAR VALORES EN UN ESTADO DE APLICACIÓN El estado de aplicación se almacena en la memoria del servidor, por lo queuna cantidad grande de datos puede llenarla rápidamente. Si se reinicia laaplicación, los datos de estado de aplicación se pierden.

    5.1.1 Modo de escribir un valor en el estado de aplicaciónEstablezca el valor de la variable en la clase HttpApplicationState, en

    el controlador Application_Start del archivo Global.asaxEn el ejemplo de código siguiente, se muestra cómo establecer lavariable de aplicación Message en una cadena.

    5.1.2 Modo de escribir un valor en el estado de aplicación con bloqueoVarios subprocesos pueden tener acceso, simultáneamente, a lasvariables de estado de aplicación. Para establecer los valores esnecesario bloquearlas para que sólo pueda escribir en un subproceso.  Para establecer el valor de la variable de aplicación, llame al métodoLock, y, a continuación, llame al método UnLock a fin de desbloquear

    el estado de aplicación y liberarlo para otras solicitudes de escritura.En el ejemplo de código siguiente, incremente la variable Count enuno (1) y, a continuación, desbloquee el estado de aplicación.

    5.2 MODO DE LEER VALORES EN UN ESTADO DE APLICACIÓN El estado de aplicación almacena los datos como tipos de datos Object. Porconsiguiente, debe convertirlos al tipo apropiado al recuperarlos.

    5.2.1 Modo de leer un valor desde el estado de aplicaciónDetermine si la variable de aplicación existe y, a continuación,conviértala al tipo adecuado cuando tenga acceso a ella.

    En el ejemplo de código siguiente se recupera el valor AppTime deestado de aplicación y se convierte en una variable denominadaAppStartTime de tipo DateTime.

    Application("Message") = "Bienvenido al Portal Cibertec"Application("Count") = 0

    Application.Lock()Application("Count") = CInt(Application("Count")) + 1Application.UnLock()

    If (Not Application("AppTime") Is Nothing) ThenDim AppTime As DateTime = CDate(Application("AppTime"))

    End If

  • 8/17/2019 Lenguaje de Programación III_2

    9/52

    LENGUAJE DE PROGRAMACIÓN I I I 57

    CIBERTEC CARRERAS PROFESIONALES

    6. INFORMACIÓN SOBRE EL ALMACENAMIENTO EN CACHÉ

    Para ayudarle a aumentar el rendimiento de la aplicación, ASP.NET proporcionaalmacenamiento en caché mediante dos mecanismos básicos: almacenamientoen caché de aplicaciones y caché de los resultados de las páginas

    6.1 CACHÉ DE APLICACIONESPermite almacenar en memoria datos arbitrarios mediante programaciónutilizando pares de clave y valor. Los datos de la caché de aplicaciones sonvolátiles. La ventaja de utilizar la caché de aplicaciones es que ASP.NET seencarga de administrarla y elimina los elementos cuando caducan o seinvalidan, o cuando hay poca memoria.

    6.2 CACHÉ DE RESULTADOS DE PÁGINASAlmacena en memoria el contenido de una página ASP.NET procesada. Estopermite a ASP.NET enviar una página de respuesta a un cliente sin volver arecorrer el ciclo de vida de procesamiento de la página. El almacenamientoen caché de los resultados de las páginas resulta especialmente útil enaquellas páginas que no cambian a menudo, pero cuya creación requiere un

    cantidad significativa de procesamiento.El almacenamiento en caché de resultados de páginas proporciona dosmodelos de almacenamiento: almacenamiento en caché de páginascompletas y almacenamiento en caché de una parte de las páginas. Elalmacenamiento en caché de páginas completas permite conservar elcontenido completo de la página en memoria y utilizarlo para satisfacer lassolicitudes de los clientes. El almacenamiento en caché de una parte de laspáginas permite almacenar en la caché ciertas partes de una página,mientras otras se recuperan de forma dinámica.

    6.1 MODO DE AGREGAR ELEMENTOS A CACHEEl objeto Caché tiene acceso a los elementos en la caché de la aplicación.Puede agregar un elemento a la caché de la aplicación utilizando:•  El método Insert: agrega un elemento a la caché, si un elemento con el

    mismo nombre se reemplaza el elemento de la caché.•  El método Add: maneja las mismas opciones que el método Insert; sin

    embargo, si ya existe un elemento con el mismo nombre en la caché, elmétodo no reemplazará el elemento y no producirá una excepción.

    6.1.1 Modo de agregar un elemento a la caché estableciendodirectamente el elemento a través de la clave y valorCache("CacheItem1") = "Cached Item 1"

    6.1.2 Modo de agregar elementos a la caché mediante el método InsertCache.Insert("CacheItem2", "Cached Item 2")

    6.1.3 Modo de agregar un elemento a la caché especificando unadependencia

    El siguiente ejemplo de código agrega un elemento denominadoCacheItem3 que es dependiente de otro elemento en la cachédenominado CacheItem2:

    Dim dependencies As String() = {"CacheItem2"}Cache.Insert("CacheItem3", "Cached Item 3", _New Caching.CacheDependency(Nothing, dependencies)) 

  • 8/17/2019 Lenguaje de Programación III_2

    10/52

    58

    CARRERAS PROFESIONALES CIBERTEC

    6.1.4 Modo de agregar un elemento a la caché con directivas decaducidadLlame al método Insert pasándole una hora de caducidad absoluta oun plazo de tiempo.

    El ejemplo agrega un elemento a la caché con plazo decaducidad de 10 minutos:

    6.1.5 Modo de agregar un elemento a la caché mediante el método AddLlame al método Add, que devuelve un objeto que representa elelemento.

    El siguiente ejemplo agrega un elemento a la caché y estableceel valor de la variable para que sea el elemento que se agregó.

    6.2 MODO DE RECUPERAR VALORES ALMACENADOS EN CACHEPara recuperar los datos de la caché, especifique la clave con la que sealmacenó el elemento en memoria caché.

    6.2.1 Modo de obtener el valor de un elemento almacenado en cachéCompruebe si el elemento no es null, en el objeto Cache. Si existe,asígnelo a su variable. De lo contrario, vuelva a crear el elemento,agréguelo a la caché y, a continuación, tenga acceso a él.

    En el ejemplo, se muestra cómo recuperar el elementodenominado CacheItem de la memoria caché. Si el elemento noestá en la caché, el código agrega el elemento a la caché y, a

    continuación, asigna el elemento a cachedString.

    6.3 MODO DE ELIMINAR ELEMENTOS DE CACHÉ EN ASP.NETLos datos almacenados en la caché de ASP.NET son volátiles. Se puedeneliminar automáticamente de la caché por una de las razones siguientes:•  La caché está llena.•  El elemento ha caducado.•  Un elemento depende de ciertos cambios.El método concreto utilizado para eliminar un elemento de la caché sedetermina en el código que se emplea para agregar el elemento a la caché.

    6.3.1 Modo de eliminar un elemento de la caché de forma explícitaLlame al método Remove y pásele la clave del elemento a eliminar.

    Cache.Remove("MyData1")

    Cache.Insert("CacheItem7", "Cached Item 7", Nothing, _Caching.Cache.NoAbsoluteExpiration, New TimeSpan(0, 10, 0))

    Dim CacheIt As String = CStr(Cache.Add("Item9", "Item 9", _Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _System.Web.Caching.Cache.NoSlidingExpiration, _System.Web.Caching.CacheItemPriority.Default, Nothing))

    Dim cachedString As String = CStr(Cache("CacheItem"))If cachedString Is Nothing Then

    cachedString = "Hello, World."Cache.Insert("CacheItem", cachedString)

    End If

  • 8/17/2019 Lenguaje de Programación III_2

    11/52

    LENGUAJE DE PROGRAMACIÓN I I I 59

    CIBERTEC CARRERAS PROFESIONALES

    7. DISEÑANDO UNA APLICACIÓN WEB ASP.NET

    En este capítulo vamos a crear, personalizar y administrar una aplicación WebASP.NET (a veces denominada simplemente sitio Web). En estos temas, se ofreceinformación relativa a la aplicación o sitio en su totalidad: la estructura de archivos deun sitio Web ASP.NET, el ciclo de vida de una aplicación, los métodos para crear unaspecto (temas) y un diseño (páginas principales) coherentes en todas las páginas delsitio y cómo ampliar la aplicación con módulos personalizados.

    7.1 PÁGINAS PRINCIPALES DE ASP.NETLas páginas principales de ASP.NET permiten crear un diseño de páginaque se puede utilizar en ciertas páginas o en todas (páginas de contenido) enun sitio Web.Una página principal es un archivo de ASP.NET con la extensión .master quetiene un diseño predefinido que puede incluir texto estático, elementos HTMLy controles de servidor. La página principal se identifica mediante unadirectiva @Master especial que reemplaza la directiva @Page utilizada en laspáginas .aspx ordinarias. El aspecto de la directiva es el siguiente:

    Además de la directiva @ Master, la página principal también incluye todoslos elementos HTML de nivel superior de una página, como html, head  yform. Por ejemplo, en una página principal podría utilizar una tabla HTMLpara el diseño, un elemento img  para el logotipo de la compañía, textoestático para el aviso de copyright y controles de servidor para crear laexploración estándar del sitio.Además del texto estático y los controles que aparecerán en todas laspáginas, la página principal también incluye controles ContenPlaceHolder.

    7.2 CONTENT PAGES (PÁGINAS DE CONTENIDO)Para definir el contenido de los controles PlaceHolder de la página principal,cree páginas de contenido individuales, que son páginas ASP.NET que estánenlazadas a una página principal concreta. El enlace se establece en ladirectiva @ Page  de la página de contenido al incluir un atributoMasterPageFile que apunta a la página principal que se va a utilizar.Por ejemplo, una página de contenido podría tener la siguiente directiva@ Page, que la enlaza con la página Master1.master.

    En la página de contenido, cree el contenido agregando los controlesContent y asignándolos a los controles ContentPlaceHolder  de la páginaprincipal.

  • 8/17/2019 Lenguaje de Programación III_2

    12/52

    60

    CARRERAS PROFESIONALES CIBERTEC

    7.3 ÁMBITO DE LAS PÁGINAS PRINCIPALESPuede adjuntar páginas de contenido a una página principal en tres niveles:1. En el nivel de la página  Puede utilizar una directiva de página en

    cada página de contenido para enlazarla a una página principal, comoen el ejemplo de código siguiente.

    2. En el nivel de la aplicación  Al establecer la configuración delelemento pages  en el Web.config, puede especificar que todas laspáginas de ASP.NET (archivos .aspx) de la aplicación se enlacenautomáticamente a una página principal. El elemento podría tener elaspecto siguiente:

    3. En el nivel de la carpeta  Esta estrategia es igual que la estrategia dedefinir enlaces en el nivel de la aplicación, excepto en que laconfiguración se define en un archivo Web.config en una única carpeta.

    7.4 MODO DE CREAR UNA PÁGINA PRINCIPALLa página principal es la plantilla que define la apariencia que tendrán laspáginas. A continuación se creará primero una página principal.

    7.4.1 Modo de añadir una página principal al Web Site1. En el Explorador de soluciones, haga clic con el botón secundario

    del mouse en el sitio Web y, a continuación, seleccione Agregar nuevo Item.

    2. En Plantillas, haga clic en Página principal.3. En el cuadro Nombre, escriba Master1.4. En la lista Lenguaje, haga clic en el lenguaje de programación con

    el que prefiera trabajar y, a continuación, haga clic en Agregar.

    7.4.2 Edición de la página principalLa página principal define la apariencia de las páginas del sitio. Puedecontener cualquier combinación de texto estático y controles. Unapágina principal también contiene uno o más marcadores de posición decontenido los cuales indican dónde aparecerá el contenido. Cuandoedita una página principal, el diseñador le ayuda de las siguientesmaneras:•  Como valor predeterminado, la página principal contiene un único

    control ContentPlaceHolder. Se pueden agregar tantosContentPlaceHolder adicionales como sean necesarios.

    •  En la vista de código fuente, el editor comprueba el marcado de lapágina para asegurarse de que no agrega elementos o atributos queno sean válidos en las páginas principales. Por ejemplo, si agrega

    un control  Content a una página principal en la vista de códigofuente, el editor marca el control porque los controles Content  noestán permitidos en las páginas principales.

    •  Cuando edita una página principal en el diseñador, el menú SitioWeb y el menú del botón secundario contienen el comando Agregarpágina de contenido, el cual crea una página nueva que ya estávinculada con la página principal actual.

  • 8/17/2019 Lenguaje de Programación III_2

    13/52

    LENGUAJE DE PROGRAMACIÓN I I I 61

    CIBERTEC CARRERAS PROFESIONALES

    7.5 PÁGINAS PRINCIPALES ANIDADASLas páginas principales anidadas permiten crear páginas principales divididasen componentes. Por ejemplo, un sitio de gran volumen podría contener unapágina principal general en la que se define la apariencia del sitio. Otroscolaboradores del contenido del sitio pueden definir sus propias páginasprincipales secundarias que harán referencia a la página principal del sitio yque, a su vez, definirán la apariencia del contenido de ese colaborador.

    Una página principal secundaria tiene la extensión de nombre de archivo.master, como cualquier página principal. La página principal secundaria,normalmente, contiene controles de contenido que están asignados a losmarcadores de posición de contenido de la página principal primaria. En estesentido, la página principal secundaria está diseñada como cualquier páginade contenido.Este es el archivo principal primario: 

    Este es el archivo principal secundario:

    Este es un archivo secundario que hace referencia a la página principalsecundaria:

    Parent Master

    This is  parent master content.

      

    Child master

    This is  childmaster content.

    This is  childmaster content.

      


  • 8/17/2019 Lenguaje de Programación III_2

    14/52

    62

    CARRERAS PROFESIONALES CIBERTEC

    8. MANEJO DE TEMAS Y MÁSCARAS EN ASP.NET

    Los temas de ASP.NET son una colección de propiedades que definen el aspectode las páginas y los controles de un sitio Web. Un tema puede contener archivosde máscara, que definen los valores de las propiedades de los controles de

    servidor Web de ASP.NET; también pueden contener archivos de hojas de estilosen cascada (archivos .css) y gráficos. Si se aplica un tema, se puede dar a todaslas páginas del sitio Web un aspecto coherente.

    8.1 MODO DE APLICAR TEMAS EN ASP.NETPuede aplicar los temas a una página, un sitio Web o globalmente. Alestablecer un tema en el nivel del sito Web los estilos y máscaras se aplican atodas las páginas y controles del sitio, a no ser que reemplace un tema parauna página individual. Al establecer un tema en el nivel de la página, losestilos y máscaras se aplican a esa página y a todos sus controles.

    8.1.1 Aplicar un tema a un sitio webEn el archivo Web.config de la aplicación, establezca el elemento

     en el nombre del tema, ya sea éste global o de página, comose muestra en el siguiente ejemplo:

    Para establecer un tema como tema de la hoja de estilos de forma quese subordine a la configuración local del control, establezca en su lugarel atributo styleSheetTheme:

    8.1.2 Aplicar un tema a una página individualEstablezca el atributo Theme o StyleSheetTheme de la directiva@ Page en el nombre del tema que se va a utilizar, como se muestra enel siguiente ejemplo:

    8.2 MODO DE APLICAR MÁSCARAS A LOS CONTROLESLas máscaras definidas en el tema se aplicarán en todas las instancias decontroles de la aplicación o en las páginas a las que se aplique el tema. Enalgunos casos, es posible que desee aplicar un conjunto concreto depropiedades a un control individual. Puede hacerse creando una máscara connombre (entrada en un archivo .skin que tiene establecida la propiedad

  • 8/17/2019 Lenguaje de Programación III_2

    15/52

    LENGUAJE DE PROGRAMACIÓN I I I 63

    CIBERTEC CARRERAS PROFESIONALES

    SkinID) y aplicándola a continuación mediante el identificador a controlesindividuales.8.2.1 Aplicar una máscara con nombre a un control

    Establezca la propiedad SkinID  del control, como se muestra en elejemplo siguiente:

    8.3 MODO DE APLICA TEMAS MEDIANTE PROGRAMACIÓNAparte de especificar las preferencias de máscaras y temas en lasdeclaraciones de página y los archivos de configuración, puede aplicar temasmediante programación. Puede establecer mediante programación temas depáginas y temas de hojas de estilos; sin embargo, el procedimiento paraaplicar cada tipo de tema es diferente.

    8.3.1 Aplicar un tema mediante programaciónEn el ejemplo siguiente se muestra cómo establecer el tema de unapágina basándose condicionalmente en un valor pasado en la cadenade consulta.

    8.3.2 Aplicar máscaras de control mediante programaciónEn el ejemplo de código siguiente se muestra cómo se establece lapropiedad SkinID de un control Calendar. En el ejemplo se supone queya se ha establecido el tema de la página.

    8.4 CREACIÓN DE TEMAS GLOBALESUn tema global se aplica a todos los sitios Web de un servidor. La ubicaciónen la que se crea una carpeta para los temas globales depende de si seejecuta el sitio Web con Servicios de Internet Information Server (IIS) o si seprueba con el servidor de desarrollo de ASP.NET.

    8.4.1 Modo de crear un tema global1. Cree una carpeta Themes con la ruta de acceso siguiente.

    %windows%\Microsoft.NET\Framework\version\ASP.NETClientFiles\T hemes

    Protected Sub Page_PreInit(ByVal sender As Object, _

    ByVal e As System.EventArgs) _

    Handles Me.PreInit

    Select Case Request.QueryString("theme")

    Case "Blue" 

    Page.Theme = "BlueTheme" 

    Case "Theme2" 

    Page.Theme = "PinkTheme" 

    End Select 

    End Sub 

    Sub Page_PreInit(ByVal sender As Object, _

    ByVal e As System.EventArgs) _

    Handles Me.PreInit

    Calendar1.SkinID = "CustomSkin" 

    End Sub 

  • 8/17/2019 Lenguaje de Programación III_2

    16/52

    64

    CARRERAS PROFESIONALES CIBERTEC

    Cree una subcarpeta de la carpeta Themes para que contenga losarchivos de temas globales.

    2. Agregue archivos a la carpeta para incorporar las máscaras decontroles, hojas de estilos e imágenes que compondrán el temaglobal.

    3. Si el sitio Web es un sitio Web de sistema de archivos que estáprobando con el servidor de desarrollo de ASP.NET, el tema estálisto para realizar las pruebas.

    4. Si está probando el sitio Web utilizando un sitio Web local de IIS,abra una ventana de comandos y ejecute aspnet_regiis -c parainstalar el tema en el servidor donde e ejecuta IIS.

    5. Si está probando el tema en un sitio Web remoto o en un sitio Webde FTP, debe crear manualmente una carpeta de temas en lasiguiente ruta de acceso.

    IISRootWeb\aspnet_client\system_web\version\Themes

  • 8/17/2019 Lenguaje de Programación III_2

    17/52

    LENGUAJE DE PROGRAMACIÓN I I I 65

    CIBERTEC CARRERAS PROFESIONALES

    LABORATORIO 3.1DISEÑO DE UN SITIO WEBEn este laboratorio, se creará Sitio Web utilizando un Master Page. El master Pagedeberá visualizar un banner de imágenes, el logo de la institución, el usuario y lainstitución a la que pertenece.1. Ingrese a Visual Studio 2008

    2. Seleccione FilesNew Web Site; asigne el nombre de WebSite3 3. Agregue al Web Site un nuevo elemento; seleccione en Plantillas  el ítem

    Master Page. 4. Asigne el Nombre: Principal.master. 5. Active la casilla de verificación, Colocar codigo en un archivo independiente 

    6. Con el Master Page agregado, establezca al color de fondo (BgColor) deldocumento un color distintivo: Seleccione DOCUMENT  de la ventana depropiedades y seleccione un color a la propiedad BgColor. 

    Seleccione laplantillaMaster Page

    Nombre alMaster Page

    Pagina deContenido delMaster Page

    PropiedadBgColor deDOCUMENT

  • 8/17/2019 Lenguaje de Programación III_2

    18/52

    66

    CARRERAS PROFESIONALES CIBERTEC

    7. En el menú TABLA, seleccione la opción INSERTARTABLA. 

    8. En la ventana insertar tabla defina el tamaño de la tabla:5 filas y 1 columna, tal como se muestra en la figura y, acontinuación, haga clic en Aceptar.

    9. Agregue los siguientes controles a las celdas de la tabla de la página principal:control Image, AdRotator y Label.Para configurar el control AdRotator, agregue un archivo XML llamadoXMLFile.xml; agregue las etiquetas para configurar el banner. Luego en lapropiedad AdvertisimentFile del control AdRotator asociarlo con el archivoXML.

    Arrastre el ContentPlaceHolder al centro de la tabla, tal como se muestra enla figura.

    Seleccione 5 filas 

    Seleccione 1columna 

    En la cabecera agregue uncontrol Image y un controlAdRotator

    En el pie agregue un label:Co ri ht 2009 Cibertec

    Arrastre elContentPlaceHolder alcentro de la tabla 

  • 8/17/2019 Lenguaje de Programación III_2

    19/52

    LENGUAJE DE PROGRAMACIÓN I I I 67

    CIBERTEC CARRERAS PROFESIONALES

    10. Para establecer máscara a los labels, vamos a definir un Skin llamadoSkinLabel.skin

    11. Defina las máscaras para los labels dentro del archivo SkinLabel

    12. Para activar las máscaras, en la etiqueta del archivo web.config agregue el atributo theme:

    13. Para establecer las máscaras a cada label, asinarleen la propiedad SkinID de la ventana depropiedades.

    14. Agregue un Web Form al proyecto llamado Default.aspx; en la casilla deverificación Seleccionar Página Principal  y, a continuación, haga clic enAgregar. Aparece el cuadro de diálogo Seleccionar Master Page. Haga clicen Principal.master y en Aceptar.

    Dentro de la carpetaApp_Themes agregue el

    tema Labels; a partir deallí agregue la máscara

    Agregue una máscaracuyo nombre esSkinLabel.skin

    Habilite la opciónSeleccionar la páginaprincipal al Web Form

  • 8/17/2019 Lenguaje de Programación III_2

    20/52

    68

    CARRERAS PROFESIONALES CIBERTEC

    Agregue dentro deContent1 loscontroles Label eImage 

    15. En la página Default.aspx personalizar el Content para agregar controles;habilte la opción Crear contenido personalizado desde la lista de tareas delContent, tal como se muestra.

    16. Agregue los controles Label e Image dentro del Content1, tal como se muestraen la figura.

    Seleccione la páginaprincipal que se asocia alWeb Form Default.aspx,luego presione el botónAceptar

    Desde la lista de tareasdel Content, habilite la

    opción Crear contenidopersonalizado

  • 8/17/2019 Lenguaje de Programación III_2

    21/52

    LENGUAJE DE PROGRAMACIÓN I I I 69

    CIBERTEC CARRERAS PROFESIONALES

    17. En la ventana Explorador de Soluciones, seleccione la página Default comopágina de inicio, presione la combinación de teclas CTRL + F5 para ejecutarla aplicación.

    LABORATORIO 3.2IMPLEMENTACIÓN DE ESTILO A LOS CONTROLES ENTIEMPO DE EJECUCIONEn este laboratorio, implemente una página Web que calcule los HonorariosProfesionales donde, si el monto de la remuneración a pagar es mayor a 1500, sele aplicará un descuento del 10% de su remuneración sino su descuento será cero.Implemente estilos para visualizar los resultados de los controles.

    1. En el WebSite3 agregue un Web Form llamado pageBoletas.aspx.2. Diseñe la página Web tal como se muestra

    TextBox, ID: txtempleado

    TextBox, ID: txtbasico

    TextBox, ID: txtbonif

    TextBox, ID: txtremun

    TextBox, ID: txtdescuento

    TextBox, ID: txtneto

  • 8/17/2019 Lenguaje de Programación III_2

    22/52

    70

    CARRERAS PROFESIONALES CIBERTEC

    3. Defina las funciones de estilo para los controles de tipo Label y Button y lafunción Resultados.

    4. Programe el evento Load que inicialice la definición de los controles Label yButton a través de la propiedad ApplyStyle. En el evento Click  del controlBtnCalcular, calcula la remuneración, el descuento y neto; además, asigne elestilo a los controles txtdescuento y txtneto a través de la función Resultados.

    5. Seleccione la página como página de inicio y presione la combinación de teclasCTRL + F5.

  • 8/17/2019 Lenguaje de Programación III_2

    23/52

    LENGUAJE DE PROGRAMACIÓN I I I 71

    CIBERTEC CARRERAS PROFESIONALES

    El atributo ,indica que se ejecutara losprocesos en el lado del servidor

    LABORATORIO 3.3MANEJO DE UN ESTADO DE VISTAEn este laboratorio, se implementará una página en la cual los alumnos puedenvisualizar el plan curricular del ciclo que ha seleccionado en una lista.

    1. En el WebSite3, agregue nuevo Elemento.2. Agregue un Web form llamado pageCurricula. 

    3. Diseñe el Web Form agregado, tal como se muestre en la figura.

    4. Cifre los estados de vista, asigne al atributo ViewStateEncriptionMode el valorde “Always”.

    5. Inicie la codificación en la vista,defina dentro de la etiqueta body 

    la etiqueta .

    Control ListBoxpermite mostrarlos ciclosacadémicos.

    Defina el atributoViewStateEncryptionModey asigne el valor de Always

    Control GridViewvisualiza lacurrícula por cicloseleccionado. 

  • 8/17/2019 Lenguaje de Programación III_2

    24/52

    72

    CARRERAS PROFESIONALES CIBERTEC

    FunciónTablaCiclos define lascolumnas del plancurricular.Función Ciclos 

    define los ciclos

    académicos de lacarrera.

    Defina unafunción de tipoDataTable para

    cada ciclo.

    6. Defina dos funciones: la función TablaCiclos  que define los campos del plancurricular por ciclo y la función Ciclos, que almacena los ciclos de estudios dela carrera.

    7. Defina las funcionespara cada cicloacadémico, donde seregistrará, en cada

    ciclo, los cursos, elnúmero de créditospor curso y el pre-requisito, tal como semuestra.

  • 8/17/2019 Lenguaje de Programación III_2

    25/52

    LENGUAJE DE PROGRAMACIÓN I I I 73

    CIBERTEC CARRERAS PROFESIONALES

    8. En el evento Init,registre a cada estadode vista una funciónque representa el ciclo.

    9. En el evento Load asigne a la propiedadDataSource  delListBox1 el estado devista ciclos.

    10. Defina el controlador de evento Selecciona  que permite evaluar el textoseleccionado del control ListBox1.  Según el texto seleccionado (ciclo),visualizamos el plan curricular del ciclo, tal como se muestra.

    LABORATORIO 3.4MANEJO DE COOKIESEn este laboratorio, implemente una página Web form que permita registrar losdatos personales de un usuario: nombre, email y confirmar su email.Si está correcto su ingreso, visualizaremos en otra página los datos ingresados.

    1. Agregue un Web form llamado pageIngreso 2. Agregue los controles de servidor y controles de validación tal como se

    muestra en la figura

    RequiredFieldValidator quevalida al control txtusuario

    RequiredFieldValidator quevalida al control txtemail

    Control CompareValidator,que se compara con elcontrol txtemail

  • 8/17/2019 Lenguaje de Programación III_2

    26/52

    74

    CARRERAS PROFESIONALES CIBERTEC

    3. A continuación, procedemos a codificar el botón Aceptar

    4. Diseña el Web Form PageDatos.aspx y agregamos sus controles

    5. Para visualizar los datos de la página anterior, codifiquemos en el eventoPage_Load de la página.

    6. En el Explorador de Soluciones, seleccione la página pageIngreso comopágina de inicio, presione la combinación de teclas CTRL + F5 para ejecutar.

    LABORATORIO 3.5MANEJO DE UN ESTADO DE APLICACIÓNEn este laboratorio, se implementa una página que imprima el total de visitas y lacantidad de usuarios activos en el sitio Web.1. En el WebSite3 agregue un Web form llamado pageVisitas. 

    Defina el cookie“datos”, agregue

    dos valores:nombre, email

    Control txtusuario

    Control txtemail

    Pregunto si existe elcookie “datos”

    Declaro al cookie“cookiedatos” y le asignoal cookie “datos”

    Mostrar los valores delcookie en los TextBox

    Expirar el cookie

  • 8/17/2019 Lenguaje de Programación III_2

    27/52

    LENGUAJE DE PROGRAMACIÓN I I I 75

    CIBERTEC CARRERAS PROFESIONALES

    2. Diseñe el Web Form agregado, tal como se muestre en la figura.

    3. Para trabajar con estadode aplicación, agregue alWebSite3 el elementoClase de aplicaciónglobal  cuyo nombre esGlobal.asax, tal como semuestra en la figura.

    4. Para registrar las visitas y los usuarios activos, definimos dos objetosapplication: visitas y usuarios, en el evento Application_Start Cuando se inicie la aplicación, los objetos visitas y usuarios, incrementarán suvalor. Cuando cerramos la aplicación, descontamos en 1 el valor del objetousuario en el evento Application_End

    Control label, ID lblusuarios

    Control label, ID lblvisitas

    Evento donde seincrementausuarios y visitasal iniciar

    Evento dondedisminuyeusuarios alterminar

  • 8/17/2019 Lenguaje de Programación III_2

    28/52

    76

    CARRERAS PROFESIONALES CIBERTEC

    5. Programe el evento Page_Load de la página para visualizar la cantidad devisitas y los usuarios activos en los controles: lblusuarios y lblvistitas.

    6. Seleccione la página pageVisitas como página de inicio, presione lacombinación de teclas CTRL + F5 para ejecutar.

    LABORATORIO 3.6MANEJO DE UN ESTADO DE SESIÓNEn este laboratorio, implemente una página la cual ingresará los datos delsolicitante y de los cursos que desea tener información en el departamento detecnología de Cibertec DAT. Los datos del solicitante y los cursos seleccionadosse visualizarán en otra página.

    1. En el WebSite3, agregue un Web Form llamado PageInformacion. 2. Diseñe el Web Form agregado, tal como se muestre en la figura.

    3. En el archivo Global.asax, definimos el estado de sesión para los objetosnombre, apellido y mail; para el caso de los cursos, defina un objeto DataTable

    Control textbox, ID:txtnombre

    Control textbox, ID:txtapellido

    Control textbox, ID:txtmail

    ControlCheckBoxList1,agregue sus ítemsen la ventana depropiedades: Items

  • 8/17/2019 Lenguaje de Programación III_2

    29/52

    LENGUAJE DE PROGRAMACIÓN I I I 77

    CIBERTEC CARRERAS PROFESIONALES

    y agregue las columnas; a continuación defina un estado de sesión llamadotabla para el DataTable definido.

    4. En el Web Form PageInformacion,  registre los datos del solicitante yseleccione los cursos en la lista. El botón Resumen permite almacenar losdatos ingresados en los estados de sesión.

    5. Agregue y diseñe elWeb FormPageResumen  talcomo se muestra.

    Defina los estadosde Session en el

    eventoSession_Start para cada objeto.

    Al terminar lasesión en eleventoSession_End, libere la sesiónactual: ejecute elmétodo Abandon.

    Asigne a cadaestado de sesión unvalor.

    Defina un objeto de tipoDataTable al cual se leasignará el estado desesión “tabla”convertida aDataTable, donde esteobjeto almacenará loscursos seleccionados.

  • 8/17/2019 Lenguaje de Programación III_2

    30/52

    78

    CARRERAS PROFESIONALES CIBERTEC

    6. Para mostrar los datos, almacenados en los estados de sesión, en loscontroles web de la form PageResumen, codifique las operaciones en elevento Page_Load 

    7. En el Explorador de Soluciones, seleccione la página PageInformacion comopágina de inicio, presione la combinación de teclas CTRL + F5 para ejecutar.

  • 8/17/2019 Lenguaje de Programación III_2

    31/52

    LENGUAJE DE PROGRAMACIÓN I I I 79

    CIBERTEC CARRERAS PROFESIONALES

    Autoevaluación

    1. Defina cada una de las opciones para administrar el estado en el cliente---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2. Defina cada una de las opciones para administrar el estado en el servidor------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3. ¿Qué es una cookie y cuál es su limitación?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------4. ¿Cómo escribir una cookie? ¿Se puede definir una cookie con varios valores?

    Explique.------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------5. ¿Qué es un estado de sesión y cuales son sus eventos?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------6. ¿Qué es un estado de aplicación y cómo se declara un estado de aplicación?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------7. ¿Qué es un Master Page y cómo funciona?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------8. ¿Qué es una página de contenido, cual es la sintaxis al añadir una página de

    contenido al Master Page?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------9. ¿Cuál es el comportamiento de un Master Page en tiempo de ejecución?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------10. ¿Cómo configurar una página de contenido en un Master Page?------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 8/17/2019 Lenguaje de Programación III_2

    32/52

    80

    CARRERAS PROFESIONALES CIBERTEC

    Para recordar  

     El estado de vista es el método que utiliza el marco de trabajo de la páginaASP.NET para conservar los valores de página y control entre acciones de iday vuelta. La propiedad ViewState  es un diccionario que contiene paresclave/valor con los datos del estado de vista.

     El estado de sesión de ASP.NET permite almacenar y recuperar los valores deun usuario cuando el usuario explora diferentes páginas ASP.NET queconforman una aplicación Web. El estado de sesión de ASP.NET identifica lassolicitudes recibidas desde el mismo explorador durante un período limitado detiempo como una sesión y conserva los valores de las variables durante laduración de esa sesión. ASP.NET proporciona dos eventos que ayudan aadministrar las sesiones de usuario: Session_OnStart  se desencadenacuando comienza una nueva sesión, y Session_OnEnd  se desencadenacuando se abandona o caduca una sesión.

     El estado de aplicación es un repositorio de datos disponible para todas lasclases de una aplicación ASP.NET. El estado de aplicación se almacena en lamemoria del servidor y ofrece más rapidez que el almacenamiento y larecuperación de información de una base de datos.

      La caché de aplicaciones permite almacenar, en memoria, datos arbitrariosmediante programación utilizando pares de clave y valor. La caché deaplicaciones son volátiles, lo que significa que no se almacenan en memoriadurante toda la duración de la aplicación.

     Un Master Page es un archivo de ASP.NET con la extensión .master que tieneun diseño predefinido que puede incluir texto estático, elementos HTML ycontroles de servidor. El Master Page se identifica mediante una directiva@Master que reemplaza la directiva @Page utilizadas en las paginas aspx.

     Para definir el contenido de los controles de la página principal, cree páginasde contenido individuales, que son páginas ASP.NET (archivos .aspx y,opcionalmente, archivos de código subyacente) que están enlazadas a unapágina principal concreta. El enlace se establece en la directiva @ Page de lapágina de contenido al incluir un atributo MasterPageFile que apunta a lapágina principal que se va a utilizar.

     Puede adjuntar páginas de contenido a un Master Page en tres niveles:En el nivel de la página, puede utilizar una directiva de página en cadapágina de contenido para enlazarla a una página principal.En el nivel de la aplicación, en el Web.config, puede especificar todas laspáginas de ASP.NET (archivos .aspx) de la aplicación que se van a enlazar.En el nivel de la carpeta,  la configuración se define en un archivo Web.config

    en una única carpeta.  Si desea hacer consultas:  http://msdn.microsoft.com/es-es/library/18sc7456.aspx 

    Página referente al Master Page  http://msdn.microsoft.com/es-es/library/wcyt4fxb.aspx 

    Página referente al manejo de temas y máscaras  http://msdn.microsoft.com/es-es/library/75x4ha6s.aspx 

    Página referente al manejo de estados

  • 8/17/2019 Lenguaje de Programación III_2

    33/52

    LENGUAJE DE PROGRAMACIÓN I I I 81

    CIBERTEC CARRERAS PROFESIONALES

    ACCESO A DATOS

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al término de la unidad, los alumnos elaboran aplicaciones Web que acceden a unorigen de datos y construyen reportes, listados y gráficos en Crystal Report usando elmodelo de objetos ADO.NET. 

    TEMARIO

      El modelo de objetos ADO.NET  Manejo de datos utilizando DataSet y DataReader  Manejo de controles de datos: GridView, DataList, DropDownList.  Manejo de controles DataSource: SqlDataSource, ObjectDataSource y

    XmlDataSource, LinqDataSource.  Manejo de reportes con Crystal Report  Uso de reportes gráficos  Llamar a un servicio Windows Communication Foundation (WCF) o a un

    servicio Web desde una página Web ASP.NET.

    ACTIVIDADES PROPUESTAS

    •  Los alumnos manejan la conexión a la base de datos de un origen de datos.•  Los alumnos consultan y actualizan los datos desde un origen de datos•  Los alumnos configurar los controles enlazados a los datos para realizar

    operaciones de consultas y actualización.

    UNIDAD DE

    APRENDIZAJE 

    2

    SEMANA 

    4

  • 8/17/2019 Lenguaje de Programación III_2

    34/52

    82

    CARRERAS PROFESIONALES CIBERTEC

    1. INTRODUCCIÓN AL ACCESO A DATOS

    La mayoría de las aplicaciones se escriben para que procesen información queestá almacenada o lo estará en un soporte concreto: una base de datos o unRDBMS. Es fundamental contar con servicios que hagan posible conectar conesos recursos y transferir la información desde y hacia la aplicación.

    Estos servicios reciben la denominación genérica de ADO.NET. Esta nuevaiteración aporta una serie de interfaces y objetos, así como nuevos controles ymejoras en las clases ya existentes y, también, en el propio motor que se encargade la manipulación de los datos en el cliente.ADO.NET incorpora varios proveedores de datos, entre ellos dos que permitenconectar con SQL Server y Oracle, así como otros que facilitan el uso decontroladores ODBC y OLE DB para acceder a aquellos provenientes de Excel,Access, MySQL, etc.

    2. ARQUITECTURA DE ADO .NET

    Tradicionalmente, el procesamiento de datos ha dependido principalmente de unmodelo de dos niveles basado en una conexión. A medida que el procesamiento

    de datos utilizacada vez másarquitecturas devarios niveles, losprogramadoresestán pasando aun enfoque sinconexión con elfin deproporcionar unaescalabilidadmejor para susaplicaciones.

    2.1 COMPONENTES DE ADO.NET Existen dos componentes de ADO .NET que se pueden utilizar para obteneracceso a datos y manipularlos:•  El DataSet•  Proveedores de datos de .NET FrameWork

    2.1.1 El DataSetEstá diseñado para el acceso a datos independientemente del origen dedatos. Como resultado, se puede utilizar con múltiples y distintos orígenesde datos, con datos XML o para administrar datos locales de la aplicación. ElDataSet contiene una colección de uno o más objetos DataTable formadospor filas y columnas de datos, así como información sobre clavesprincipales, claves externas, restricciones y relaciones relativas a los datosincluidos en los objetos DataTable 

    2.1.2 Proveedores de datos de .NET FrameworkUn proveedor de datos de .NET Framework sirve para conectarse a unabase de datos, ejecutar comandos y recuperar resultados. Los proveedoresde datos de .NET Framework crean un nivel mínimo entre el origen dedatos y su código, con lo que aumenta el rendimiento sin sacrificar sufuncionalidad.

  • 8/17/2019 Lenguaje de Programación III_2

    35/52

    LENGUAJE DE PROGRAMACIÓN I I I 83

    CIBERTEC CARRERAS PROFESIONALES

    2.1.3 Objetos principales de los proveedores de datos de .NET FrameworkEn la tabla siguiente se describen los cuatro objetos centrales queconstituyen un proveedor de datos de .NET Framework.

    Objeto Descripción

    Connection  Establece una conexión a un origen de datosdeterminado.

    Command  Ejecuta una sentencia o procedure. Expone Parameters y puede ejecutarse en el ámbito de un objetoTransaction.

    DataReader  Lee una secuencia de datos de sólo avance y sólolectura desde un origen de datos.

    DataAdapter  Llena un DataSet  y realiza las actualizacionesnecesarias en el origen de datos.

    Los proveedores de datos de .NET Framework también incluyen las que se

    enumeran en la tabla siguiente:Objeto Descripción

    Transaction  Permite incluir comandos en las transacciones quese realizan en el origen de datos.

    CommandBuilder  Objeto que genera las propiedades de comando deun DataAdapter  o que obtiene, de unprocedimiento almacenado, información acerca deparámetros con las que puede rellenar la colecciónParameters de un objeto Command.

    Parameter  Define los parámetros de entrada, salida para loscomandos y procedimientos almacenados.

    Error  Expone la información relacionada con unaadvertencia o error devueltos por un origen dedatos.

    ClientPermission  Se proporciona para los atributos de seguridad deacceso a código de los proveedores de datos de.NET Framework.

    Proveedor de Datos

    System.Data.SqlClient : Acceso a datos para SQL Server 7.0 o posterior

    System.Data.OleDb: Origen de datos que se exponen mediante OLE DB

    System.Data.Odbc: Origen de datos que se exponen mediante ODBC

    System.Data.OracleClient : Acceso a datos de Oracle 8.1.7 o posterior

  • 8/17/2019 Lenguaje de Programación III_2

    36/52

    84

    CARRERAS PROFESIONALES CIBERTEC

    3. CONEXIÓN A UNA BASE DE DATOS EN ADO.NET

    3.1 CADENAS DE CONEXIONProporciona la información que un proveedor necesita para comunicarse conuna base de datos determinada. Puede almacenarse en el archivoWeb.config y hacer referencia en un control de origen de datos.

    Una cadena de conexión generalmente proporciona el origen de datos, labase de datos que se debe utilizar y la información de autenticación.

    3.2 MODO DE ALMACENAR UNA CADENA DE CONEXIÓN EN ELARCHIVO WEB.CONFIGIncluir las cadenas de conexión en el archivo Web.config. En el elemento, se puede crear un elemento secundario denominado e incluir allí las cadenas de conexión:

    Una ventaja del almacenamiento de la cadena de conexión en el Web.configes que permite cambiar el nombre del servidor, la base de datos o lainformación de autenticación. Además, puede proteger la cadena de conexiónmediante cifrado.

    3.3 MODO DE RECUPERACIÓN DE UNA CADENA DE CONEXIÓNPROGRAMÁTICAMENTEPodemos recuperar cadenas de conexión programáticamente desde elWeb.config en tiempo de ejecución. En el siguiente ejemplo, se muestracómo recuperar una cadena de conexión y utilizarlo para abrir una conexión.

    3.4 MODO DE PROTEGER CADENAS DE CONEXIÓN El comando Aspnet_regiis.exe  permite para cifrar la cadena de conexión;este comando se ejecuta en la línea de comandos de Windows con lasopciones 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.En el ejemplo se muestra cómo se cifra la sección connectionStrings  delarchivo Web.config de una aplicación denominada AplicacionWeb.

    3.4.1 Para descifrar el contenido cifrado del archivo Web.config Ejecute la herramienta aspnet_regiis.exe con la opción -pd. La sintaxises igual para cifrar el contenido, excepto que no se especifica ningúnproveedor de configuración protegido.En el siguiente ejemplo de código se muestra cómo descifrar elelemento connectionStrings de la aplicación ASP.NET AplicacionWeb.

    Dim strcon as String = _ConfigurationManager.ConnectionStrings(“Cn”).ConnectionStringDim cn as new Data.SqlClient.SqlConnection(strcon)

    aspnet_regiis -pe "connectionStrings" -app "/AplicacionWeb"

    aspnet_regiis -pd "connectionStrings" -app "/ AplicacionWeb "

  • 8/17/2019 Lenguaje de Programación III_2

    37/52

    LENGUAJE DE PROGRAMACIÓN I I I 85

    CIBERTEC CARRERAS PROFESIONALES

    4. ACCESO A DATOS UTILIZANDO CONTROLES ENLAZADOSA DATOS ASP.NETLos controles enlazados a datos se pueden enlazar a un control de origen dedatos y buscar datos automáticamente en el momento apropiado del ciclo de vidade la solicitud de página.

    Los controles enlazados a datos pueden aprovechar las ventajas de las funcionesproporcionadas por un control de origen de datos entre las que se incluyen laordenación, la paginación, el almacenamiento en caché, el filtrado, laactualización, la eliminación y la inserción.

    Un control enlazado a datos establece una conexión con un control de origen dedatos a través de su propiedad DataSourceID. Los controles enlazados a datosque se describen en la tabla siguiente:

    Controlesenlazados a datos Descripción

    Controles de

    Lista

    Representan los datos en una variedad de formato de

    listas. Entre los controles de lista se incluyen los controlesBulletedList, CheckBoxList, DropDownList, ListBox yRadioButtonList.

    DataList Muestra un registro cada vez en disposición de tabla ypermite editar, eliminar e insertar registros. También sepuede realizar la paginación a través de varios registros.

    DetailsView Permite trabajar con un archivo XML, que esespecialmente útil para controles de servidor ASP.NET jerárquicos tales como el control TreeView o Menu.

    FormView Permite definir una disposición de formato libre para cadaregistro. El control FormView  es como un control

    DataList para un registro único.GridView Muestra los datos en una tabla e incluye compatibilidad

    para editar, actualizar, ordenar y paginar datos sinnecesidad de código.

    TreeView Representa los datos en un árbol jerárquico de nodos quese pueden expandir.

    5. ARQUITECTURA DE DATOS EN ASP.NET

    Se ha convertido en un principio ampliamente

    aceptado en el diseño de aplicacionesdistribuidas la división de la aplicación encomponentes que ofrezcan servicios depresentación, empresariales y de datos.

    Los componentes que realizan tipos defunciones similares se pueden agrupar encapas, que en muchos casos estánorganizados en forma de apilamiento para que

  • 8/17/2019 Lenguaje de Programación III_2

    38/52

    86

    CARRERAS PROFESIONALES CIBERTEC

    los componentes que se encuentran por "encima" de una capa determinadautilicen los servicios proporcionados por ésta, y un componente especifico utilizarála funcionalidad proporcionada por otros componentes de su propia capa, y otrascapas "inferiores", para realizar su trabajo.

    Desde un punto de vista de alto nivel, se puede considerar que la solución basadaen servicios está formada por varios servicios, los cuales se comunican entre sípasando mensajes. Desde el punto de vista conceptual, los servicios se puedenconsiderar como componentes de la solución global. Sin embargo, internamente elservicio está formado por componentes de software, al igual que cualquier otraaplicación, los cuales se pueden agrupar de forma lógica en servicios depresentación, empresariales y de datos.

    5.1 TIPOS DE COMPONENTES DE LA ARQUITECTURA

    5.1.1 Componentes de interfaz de usuario (IU).La mayor parte de las soluciones necesitan ofrecer al usuario un modode interactuar con la aplicación. Las interfaces de usuario seimplementan utilizando formularios de Windows Forms, páginasMicrosoft ASP.NET, u otro tipo de tecnología que permita procesar yvalidar los datos.

    5.1.2 Componentes empresariales (BL).La aplicación requiere del uso de componentes que implementen reglasempresariales y realicen tareas empresariales. Por ejemplo, en laaplicación comercial, deberá implementar una funcionalidad que calculeel precio total del pedido y agregue el costo adicional correspondientepor el envío del mismo. Los componentes empresariales implementan lalógica empresarial de la aplicación.

    5.1.3 Componentes lógicos de acceso a datos (DAL). La mayoría de las aplicaciones y servicios necesitan obtener acceso a

    un almacén de datos en un momento determinado del procesoempresarial. Por ejemplo, la aplicación empresarial necesita recuperarlos datos de los productos para mostrar al usuario los detalles de losmismos. Por tanto, es razonable abstraer la lógica necesaria paraobtener acceso a los datos en una capa independiente de componenteslógicos de acceso a datos, ya que de este modo se centraliza lafuncionalidad de acceso a datos y se facilita la configuración y elmantenimiento de la misma.

    5.14 Componentes de entidad empresarial (BE).La mayoría de las aplicaciones requieren el paso de datos entre distintoscomponentes. Por ejemplo, en la aplicación comercial es necesariopasar una lista de productos de los componentes lógicos de acceso a

    datos a los componentes de la interfaz de usuario para que éste puedavisualizar dicha lista. Los datos se utilizan para representar entidadesempresariales del mundo real, como productos o pedidos. Las entidadesempresariales que se utilizan de forma interna en la aplicación suelen serestructuras de datos, como conjuntos de datos, DataReader osecuencias de lenguaje de marcado extensible (XML), aunque tambiénse pueden implementar utilizando clases orientadas a objetospersonalizados que representan entidades del mundo real necesariaspara la aplicación, como productos o pedidos.

  • 8/17/2019 Lenguaje de Programación III_2

    39/52

    LENGUAJE DE PROGRAMACIÓN I I I 87

    CIBERTEC CARRERAS PROFESIONALES

    Propiedad que permite navegara una determinada á ina

    Titulo del ítem de menú

    LABORATORIO 4.1DEFINICIÓN DE UN MASTER PAGE Y PUBLICACIÓN DEUNA CONEXIÓN A UN ORIGEN DE DATOSImplemente un portal para realizar consultas y actualización de datos. Diseñe unMasterPage,  agregue un control Menú  para listar las opciones de consultas;publique la conexión a la base de datos llamada DBVentas, para que lasoperaciones de consultas y/o actualización puedan acceder a esta base de datos.1. Ingrese a Microsoft Visual Studio 20092. Agregue el proyecto de tipo Web Site y asigne el nombre de WebSite4.3. Agregue la plantilla Master Page, asigne el nombre de Principal.master. 4. Diseñe los controles al Master Page tal como se muestra en la figura.

    5. Dentro del Master Page, dibuje un control Menú. Agregue en la ventana deleditor ítems y subitems donde a cada subitems se le ha asociado una página

    Web form a través de la propiedad NavigateUrl tal como se muestra

    6. Abra el archivo web.config y en la etiqueta , añada unaconexión a la base de datos.

    Control Image

    Control Menú:Orientación horizontal.Agregue Ítems para lasopciones del control

    ControlContenPlaceHolder

  • 8/17/2019 Lenguaje de Programación III_2

    40/52

    88

    CARRERAS PROFESIONALES CIBERTEC

    LABORATORIO 4.2DEFINICIÓN DE LA ARQUITECTURA DE DATOS:CONSULTA DE DATOS EN UN CONTROL GRIDVIEWEn este laboratorio, implemente una arquitectura de datos para realizar lasoperaciones de consulta y actualización de datos.1. Defina las siguientes carpetas y clases dentro del App_Code

    2. Defina la cadena de conexión a la base de datos DBVentas en la claseConexionDAO

    3. En la clase PedidosDAO, defina una función que retorne los pedidosalmacenados en la base de datos DBVentas

    Carpeta para almacenarlas Entidad del Negocio

    Carpeta para almacenar laCapa lógica del Negocio

    Carpeta para almacenar laCapa de Acceso a Datos

    FunciónGetCadenaConexionque retorna la cadenade conexiónpublicada en elweb.confi

    Instancia de la claseConexiónDAO

    Función Listado queretorna los pedidos

  • 8/17/2019 Lenguaje de Programación III_2

    41/52

    LENGUAJE DE PROGRAMACIÓN I I I 89

    CIBERTEC CARRERAS PROFESIONALES

    4. En la clase PedidosBL defina la función que retorne los registros de la funciónListado de PedidosDAO

    5. Agregue un Web form llamado pagePedidos, marque la opción Select MasterPage  y seleccione el Master Page Principal.master. Dentro de Content1, agregue los controles que se muestra en la figura

    6. Declare una función llamada pedidos de tipo DataTable  que retorne losregistros de la tabla tb_pedidoscabe.

    Control GridView,para establecerpaginación:AllowPa in = true

    Instancia de PedidosBL

    Función Listado de tipoDataTable que retornelos registros de pedidos

    utilizando la funciónlistado de PedidosDAO

    En el evento Load cargar elGridView con el método Listadode la instancia de PedidosBL

  • 8/17/2019 Lenguaje de Programación III_2

    42/52

    90

    CARRERAS PROFESIONALES CIBERTEC

    7. En el evento PageIndexChanging del control GridView1, permite visualizar losregistros al cambiar de página en el control.

    8. En el Explorador de Soluciones, seleccione la página PagePedidos comopágina de inicio, presione la combinación de teclas CTRL + F5 para ejecutar.

    LABORATORIO 4.3CONSULTA DE DATOS UTILIZANDO COMANDOSPARAMETRIZADOSEn este laboratorio, implemente una página donde listará todos los pedidosalmacenados en la base de datos DBVentas al seleccionar un cliente desde uncontrol DropdownList.

    1. En la clase ClientesDAO defina una función que retorne los clientes.

    2. En la clase ClientesBL, defina la función que retorne los registros de la funciónListado de ClientesDAO

    Al realizar el cambio de página, volver aasignar al origen de datos del GridViewlos registros a través del método listadode la instancia PedidosBL

    Instancia de la claseConexiónDAO

    Función Listadoque retorna losclientes

    Función Listado de tipoDataTable, retorna losregistros de clientesdesde el método listadode ClientesDAO

  • 8/17/2019 Lenguaje de Programación III_2

    43/52

    LENGUAJE DE PROGRAMACIÓN I I I 91

    CIBERTEC CARRERAS PROFESIONALES

    3. En la clase PedidosDAO, defina la función Listado_Cliente que retorne losregistros de pedidos por Cliente, valor de parámetro

    4. En la clase PedidosBL, defina la función que retorne los registros de lospedidos por cliente en PedidosDAO

    5. Agregue un Web form llamado pagePedidosCliente, marque la opción SelectMaster Page  y seleccione el Master Page Principal.master. Dentro delContent1, agregue los controles como se muestra en la f igura.

    Control DropDownListlista los génerosalmacenadas,AutoPostBack = true

    Función Listado_Clienteque retorna los pedidos

    por cliente.

    Programación quepermite listar los pedidospor cliente

    Función Listado_Cliente queretorna los registros depedidos por cliente desde elmétodo listado_cliente dePedidosDAO

  • 8/17/2019 Lenguaje de Programación III_2

    44/52

    92

    CARRERAS PROFESIONALES CIBERTEC

    6. Defina las instancia de las entidades de negocio para pedidos y clientes

    7. Programe el evento Load de la página para configurar el control DropdownListcon la información de los clientes

    8. Programe el evento SelectedIndexChanged del control DropDownList paravisualizar los pedidos del cliente seleccionado

    9. Presione la combinación de teclas CTRL + F5 para ejecutar y seleccione de laopción de menú Consulta de Pedidos por Clientes.

    Definición de las instancias denegocios pedidos y clientes

    Evento Load que configura eldropdownlist con el métodolistado de clientes

    Al seleccionar un cliente,se ejecuta el método

    Listado_Cliente

  • 8/17/2019 Lenguaje de Programación III_2

    45/52

    LENGUAJE DE PROGRAMACIÓN I I I 93

    CIBERTEC CARRERAS PROFESIONALES

    LABORATORIO 4.4MANEJO DE PROCEDIMIENTOS ALMACENADOSEn este laboratorio, implemente una página donde liste los pedidos entre dosfechas seleccionadas desde DBVentas. En este proceso se utilizará unprocedimiento almacenado llamado usp_pedidos_fechas .

    1. Defina el procedimiento almacenado para realizar las consultas de pedidos

    entre fechas.

    2. Defina el procedimiento almacenado para listar las fechas de la tabla pedidos.

    3. En la clase PedidosDAO, defina los métodos Fechas () y Listado_Fechas ()

    4. En la clase PedidosBL, defina los métodos asociados a la clase PedidosDAO.

    CREATE PROCEDURE usp_pedidos_Fechas@f1 datetime, @f2 datetimeAsSelect * from tb_pedidoscabeWhere Fechapedido BETWEEN @f1 AND @f2 

    CREATE PROCEDURE usp_FechasAsSelect distinct FechaPedido from tb_pedidoscabe Order by 1 

    Método fechas,retorna las fechas delos pedidos

    Método que lista lospedidos entre dosfechas, ejecuta unprocedure llamadousp_pedidos_fechas

    Función Fechas, retorna las

    fechas de pedidos

    Función Listado_Fechas, retorna lospedidos entre dos fechas desde elmétodo de PedidosDAO

  • 8/17/2019 Lenguaje de Programación III_2

    46/52

    94

    CARRERAS PROFESIONALES CIBERTEC

    5. Agregue un Web form llamado pagePedidosFechas , seleccione el MasterPage Principal.master. Agregue los controles como se muestra en la figura.

    6. Defina la instancia de la capa de Negocios de pedidos

    7. Programe el evento Load para cargar las fechas en los controles DropDownList

    8. Programe el evento Click del control Button para ejecutar el métodoListado_Fechas enviando como parámetros los valores seleccionados de loscontroles DropDownList.

    Método que lista los pedidos entredos fechas, ejecuta un procedurellamado usp_pedidos_fechas

  • 8/17/2019 Lenguaje de Programación III_2

    47/52

    LENGUAJE DE PROGRAMACIÓN I I I 95

    CIBERTEC CARRERAS PROFESIONALES

    LABORATORIO 4.5CONSULTA DE DATOS UTILIZANDO CONTROLES DEORÍGENES DE DATOS Y MANEJO DE PROCEDIMIENTOSALMACENADOS EN ADO.NETEn este laboratorio, implemente una página donde liste los productos por

    categoría, seleccionados desde un control DropDownList, visualizando losproductos en un control DataList. En este proceso defina procedimientosalmacenados para la solución del problema.

    1. Defina el procedimiento almacenado para realizar las consultas de categorías.

    2. Defina el procedimiento almacenado para listar las fechas de la tabla pedidos.

    3. En la clase ProductosDAO, defina el método categorías que retorne susregistros

    4. En la clase productosDAO, defina el método pedidos por categoría que retornelos pedidos por categoría

    CREATE PROCEDURE usp_categoriasAS

    Select * from tb_categorias 

    CREATE PROCEDURE usp_pedidos_categorias@cat char(4)AS

    Select * from tb_productosWhere idcategoria=@cat 

    Método que lista los productos poruna categoría ejecutando elprocedure usp_pedidos_categorías

  • 8/17/2019 Lenguaje de Programación III_2

    48/52

    96

    CARRERAS PROFESIONALES CIBERTEC

    5. Agregue un Web form llamado pageProductos, seleccione el Master PagePrincipal.master. Agregue los controles como se muestra en la figura

    6. A continuación, editamos el DataList para agregar controles en su plantilla:seleccione desde la lista de Tareas la opción Editar plantillas. 

    7. En el ItemTemplate del control DataList, agregue los controles los cualespermitirán visualizar los datos del producto. Al finalizar seleccionar la opciónTerminar edición de plantilla 

    Control DataList que permite listarlos productos por columnas y filas

    Seleccione la opción Editar Plantilla

    para agregar controles

    Control Image de HTML

    Controles Label

  • 8/17/2019 Lenguaje de Programación III_2

    49/52

    LENGUAJE DE PROGRAMACIÓN I I I 97

    CIBERTEC CARRERAS PROFESIONALES

    8. Enlace a cada Label, agregado al ItemTemplate,  una columna de la tablatb_productos, tal como se muestra, presione el botón Aceptar

    9. Para determinar el número de columnas por fila, seleccione de Tareas delDataList la opción Generador de Propiedades

    10. Asignada lapropiedad, elDataList sevisualiza talcomo semuestra en lafigura

    Asigne a lapropiedad ColumnsColumnsColumnsColumnsel valor de 3,donde, por cadafila se visualizatres productos

    En la propiedad Text de cada Label,asigne la expresión Eval(“nombre campo”)

  • 8/17/2019 Lenguaje de Programación III_2

    50/52

    98

    CARRERAS PROFESIONALES CIBERTEC

    11. Como siguiente paso desarrollamos la parte de la programación en el modelode la arquitectura “n” capas. En la clase clase ProductosBL referencie losmétodos de la clase ProductosDAO:

    12. Para realizar el proceso de la consulta, en la página PageProductos.aspx,instancie la clase ProductosBL en productos; en el evento Page_Loadconfigure el control DropDownList con los registros de Categorías.

    13. Programe el evento SelectedIndexChanged del control DropDownList dondeliste los productos por categoría.

    13. Presione Ctrl + F5, al seleccionar una categoría liste los productos.

    Método Categorías () quereferencia al método de laclase ProductoDAO

    Método Producto_Categorías ()que referencia al método de laclase ProductoDAO

    Evento Load que configura eldropdownlist con las categorías

    Instancia de ProductosBL

    Evento SelectedIndexChanged deldropdownlist para listar los productos porlas categorías

  • 8/17/2019 Lenguaje de Programación III_2

    51/52

    LENGUAJE DE PROGRAMACIÓN I I I 99

    CIBERTEC CARRERAS PROFESIONALES

    Autoevaluación

    1. ¿Qué es ADO.NET?2. Explique cada uno de los componentes que su utilizan en ADO.NET3. ¿Cuáles son los proveedores de base de datos más utilizados en ADO.NET?

    Explique cada uno de ellos.4. ¿Cuáles son los objetos principales de los proveedores de base de datos?

    Explique cada uno de ellos.5. ¿Cómo se almacena una cadena de conexión en el web.conifg?6. Explique brevemente cada uno de los controles de orígenes de datos en

    ASP.NET

    Para recordar  

     ADO.NET incorpora varios proveedores de datos, entre ellos dos que permitenconectar con SQL Server y Oracle, así como otros que facilitan el uso decontroladores ODBC y OLE DB para acceder a aquellos provenientes deExcel, Access, MySQL, etc.

     Existen dos componentes de ADO .NET que se pueden utilizar para obteneracceso a datos y manipularlos: DataSet, Proveedores de datos de .NETFrameWork

      El DataSet está diseñado para el acceso a datos independientemente delorigen de datos. Contiene una colección de uno o más objetos DataTableformados por filas y columnas de datos, así como información sobre clavesprincipales, claves externas, restricciones y relaciones relativas a los datosincluidos en los objetos DataTable 

      Proveedores de datos sirve para conectarse a una base de datos, ejecutarcomandos y recuperar resultados. Los proveedores de datos de .NETFramework crean un nivel mínimo entre el origen de datos y su código, con loque aumenta el rendimiento sin sacrificar su funcionalidad.

      Una cadena de conexión proporciona la información que un proveedornecesita para comunicarse con una base de datos determinada. Se puedealmacenar en el archivo Web.config y hacer referencia en un control de origende datos.

      Es recomendable incluir las cadenas de conexión en el archivo Web.config. Enel elemento , se puede crear un elemento secundariodenominado

      Los controles enlazados a datos representan datos como marcados alexplorador que realizó la solicitud. Un control enlazado a datos se puedeenlazar a un control de origen de datos y buscar datos automáticamente en elmomento apropiado del ciclo de vida de la solicitud de página.

      Consultar a las siguientes páginas:  http://bjcu.uca.edu.ni/LibrosIstiII/Arquitectura%20de%20Aplicaciones%20.N

    ET_%20Dise%C3%B1o%20de%20Aplicaciones%20y%20Servicios.pdf Página referente a la arquitectura de servicios

  • 8/17/2019 Lenguaje de Programación III_2

    52/52

    100