Você está na página 1de 48

Generar una aplicacin de principio a fin (con C#.

NET) Acerca de la aplicacin Siguiente recorrido: "Cree la base de datos y las tablas de la base de datos" >> Esta seccin del inicio rpido lo llevar a travs de los procesos necesarios para crear una Aplicacin Web ASP.NET de principio a fin. La aplicacin de escenario que estaremos construyendo es un sistema simple de solicitud de libros de biblioteca que le permitir a los miembros de sta seleccionar los libros antes de ir a la biblioteca. Los usuarios tendrn que iniciar la sesin en el sistema antes de hacer la solicitud. Slo los usuarios que se han autenticado exitosamente podrn tener acceso a la aplicacin Web. Esta funcin de la aplicacin utiliza el archivo web.config de ASP.NET para configurar la restriccin de seguridad de la aplicacin. Cuando el usuario ha sido autenticado, pasa a la pgina Predeterminada, en donde puede explorar la lista de libros de la biblioteca haciendo clic en Autores especficos. Una vez que se ha seleccionado un libro, el usuario puede solicitar la reservacin de una copia del mismo. La aplicacin Web tambin permite a los usuarios eliminar libros previamente seleccionados. Siguiente recorrido: "Cree la base de datos y las tablas de la base de datos" >> En este recorrido, usted crear una base de datos en Acces llamada Biblioteca y agregar cuatro tablas (Autores, Libros, Miembros y Solicitud) a la base de datos. Para lograrlo, siga los siguientes pasos: 1. Abra el Proyecto de matriz Web de Microsoft ASP.NET. Cierre el cuadro de dilogo Agregar un nuevo archivo al oprimir el botn Cancelar. 2. Haga clic en la pestaa Datos en el rea Administracin de archivos (localizada en el extremo derecho de la pantalla. La ventana Workspace es la predeterminada). 3. Haga clic en el botn Agregar la conexin de la base de datos de herramientas de la ventana Datos. en la barra

4. Seleccione la Base de datos en Access (del lado izquierdo del cuadro de dilogo), y despus haga clic en el botn de Aceptar.

5. Haga clic en el vnculo "Crear una nueva base de datos" en la parte inferior izquierda del cuadro de dilogo Conectar a la Base de datos.

6. Seleccione una ruta desde el cuadro combo Guardar y escriba LibraryDatabase en el cuadro de combo Filename.

7. Haga clic en el botn Guardar. 8. El Proyecto de matriz Web ASP.NET agregar la base de datos recin creada a la ventana Datos. Seleccione el nodo de rbol Tablas al expandir el nodo LibraryDatabse.mdb 9. Cree la tabla Autores al hacer clic en el botn Nuevo objeto de la base de datos en la parte superior izquierda de la ventana Datos. Aparecer el cuadro de dilogo Crear nueva tabla, escriba Autores en el cuadro de texto y despus haga clic en el botn Aceptar.

10. Cree las tablas Libros, Miembros y Solicitudes al repetir el Paso 9 para cada tabla. Las tablas recin creadas en el Proyecto de matriz Web ASP.NET:

11. Seleccione la tabla Autores. 12. Seleccione Column0 y establezca las siguientes propiedades (en el panel Propiedades en la parte inferior izquierda de la ventana):
o o o o

Nombre: ayuda DataType: AutoNumber InPrimaryKey: Verdadero IsUniqueKey:Verdadero

13. Agregue una nueva columna a la tabla Autores (al hacer clic en el botn Agregar nueva columna tabla Autores). localizada en la parte superior derecha de la

14. El Proyecto de matriz Web ASP.NET agregar una nueva columna a la lista de columnas llamada Column0, (con Column0 an seleccionada) establezca las propiedades:
o o

Nombre: fname DataType: Texto

15. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin: o Nombre: sname

DataType: Texto

16. Guarde la tabla Autores (al oprimir Ctrl+S o Archivo->Guardar archivo). 17. Seleccione la tabla Libros. 18. Seleccione Column0 y establezca las siguientes propiedades a los valores indicados a continuacin:
o o o o

Nombre: ayuda DataType: AutoNumber InPrimaryKey: Verdadero IsUniqueKey: Verdadero

19. Agregue una nueva columna y establezca la propiedad Nombre como ayuda. 20. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o

Nombre: ttulo DataType: Texto

21. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o

Nombre: isbn DataType: Texto

22. Agregue una nueva columna y establezca la propiedad Nombre como total. 23. Agregue una nueva columna y establezca la propiedad Nombre como disponible. 24. Guarde la tabla Libros. 25. Seleccione la tabla Miembros. 26. Seleccione Column0 y establezca las siguientes propiedades a los valores indicados a continuacin:
o o o o

Nombre: mid DataType: AutoNumber InPrimaryKey: Verdadero IsUniqueKey: Verdadero

27. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o

Nombre: fname DataType: Texto

28. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o

Nombre: sname DataType: Texto

29. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o o o

Nombre: nombre del usuario DataType: Texto Tamao: 12 IsUniqueKey: Verdadero

30. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o

Nombre: contrasea DataType: Texto

31. Guarde la tabla Miembros. 32. Seleccione la tabla Solicitudes. 33. Seleccione Column0 y establezca las siguientes propiedades a los valores indicados a continuacin:
o o

Nombre: bid InPrimaryKey: Verdadero

34. Agregue otra columna y establezca las siguientes propiedades en los valores que se indican a continuacin:
o o

Nombre: mid InPrimaryKey: Verdadero

35. Guarde y Cierre la tabla Solicitudes. Siguiente recorrido: "Introducir los datos en las tablas" >> En este recorrido, usted agregar datos a las tablas que cre en los recorridos anteriores. Para lograrlo, siga los siguientes pasos: a. Seleccione la tabla Autores. b. Cambie a la vista Datos de la tabla Autores (al hacer clic en la pestaa Datos en la parte inferior de la ventana de la tabla Autores) c. Agregue tres nuevas filas de datos a la tabla Autores

Vista de los Datos de la tabla de Autores:

Nota: Oprima la tecla Intro o seleccione una fila diferente en la cuadrcula para comprometer una nueva fila en la base de datos. Nota: La columna ayuda est configurada para auto-incrementar (empezando con 1 y con incrementos de 1). Automticamente, la base de datos determina y asigna el siguiente valor para un campo de auto-incremento cuando se compromete una nueva fila en la base de datos. Vista de los Datos de la tabla Autores:

d. Seleccione la tabla Libros y cambie a la vista Datos. e. Agregue cuatro nuevas filas de datos a la tabla Libros Vista Datos de la tabla Libros con datos:

Nota: La columna ayuda en la tabla Libros es una clave ajena que representa la clave principal de la tabla Autores. Nota: Ayudas duplicadas indican que un Autor ha escrito ms de un libro. En nuestro ejemplo (vea la imagen superior), Applied XML Programming for .NET y Building Web Solutions with ASP.NET ambos fueron escritos por el mismo autor. El autor con ayuda 1 en la tabla Libros y la tabla Autores es Dino Esposito. f. Cierre la tabla Libros. g. Seleccione la tabla Miembros y cambie a la vista Datos. h. Agregue tres nuevas filas de datos a la tabla Miembros Vista Datos de la tabla Miembros con datos:

i. Cierre la tabla Miembros. Siguiente recorrido: "Crear el Control de usuario Encabezado de la biblioteca" >> En este recorrido, crear el Control del usuario "Encabezado de la biblioteca". Para lograrlo, siga los siguientes pasos: a. Abra el cuadro dilogo Agregar nuevo archivo (al oprimir Ctrl+N o Archivo>Nuevo) b. Seleccione la plantilla Control del usuario ASP.NET c. Escriba una ubicacin en el cuadro de texto Ubicacin o utilice el botn Explorar para localizar una carpeta.

d. Escriba LibraryHeaderControl.ascx en el cuadro de texto Nombre de archivo. e. Seleccione C# del cuadro desplegable Lenguaje. En el cuadro de dilogo Agregar nuevo archivo:

f. Haga clic en Aceptar. El Proyecto de matriz Web ASP.NET abrir el control del usuario en la vista de diseo. g. Desde la pestaa Controles Web en la Caja de herramientas (en el lado izquierdo de la herramienta), arrastre un control Label a la pgina ASP.NET. Presione Intro despus de colocar el control. h. Arrastre dos controles label a la pgina ASP.NET. Presione Espacio despus de colocar el control. i. Presione Shift+Intro (ambas teclas simultneamente). j. Arrastre un control HyperLink a la pgina ASP.NET. k. Desde la pestaa Elemento HTML en la Caja de herramientas (en el lado izquierdo de la herramienta), arrastre un elemento Regla horizontal a la pgina ASP.NET. Presione Intro despus de colocar el elemento. l. Seleccione el primer control Label y establezca las siguientes propiedades en la ventana Propiedades:
o o o

Fuente->Negrita: Verdadero Fuente->Tamao: Extragrande Texto: Biblioteca simple

m. Seleccione el segundo control Label y establezca la propiedad de Texto en "Hola". n. Seleccione el tercer control de Label y elimine el texto "Etiqueta". o. Haga clic en el botn Eventos de la ventana Propiedades.

p. Haga doble clic en la propiedad Cargar. El Proyecto de matriz Web ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor ASP.NET (nombrado "Label3_Load") para el evento Cargar del control Label y abra la pgina en la vista Cdigo. q. Agregue el fragmento de cdigo marcado con rojo al mtodo Label3_Load para actualizar la propiedad Texto del control Label para mostrar la hora en que el servidor gener la pgina. void Label3_Load(object sender, EventArgs e){ Label3.Text = Page.User.Identity.Name; }

r. Cambie a la vista Diseo (al hacer clic en la pestaa Diseo localizada en la parte inferior de la ventana). s. Seleccione el control HyperLink y establezca las siguientes propiedades en la ventana Propiedades:
o o

NavigateUrl: Logout.aspx Texto: Haga clic aqu para cerrar la sesin

t. Guarde y cierre la ventana de control del usuario.

Siguiente recorrido: "Crear el Control del usuario Solicitar un libro" >>

El Control del usuario para solicitar un libro se utiliza para mostrar la lista de libros que han sido solicitados por un usuario en particular. El control tambin se utiliza para proporcionar al usuario un mtodo para eliminar los registros de los libros que se han solicitado con anterioridad. Para lograrlo, siga los siguientes pasos: a. Cree un nuevo Control del usuario y dle el nombre UserBookRequests.ascx. b. De la pestaa Controles Web en la Caja de herramientas (en el lado izquierdo de la herramienta), arrastre dos controles Label y un control DataGrid en la pgina ASP.NET. Oprima Shift+Intro (ambas teclas simultneamente) despus de colocar el control. c. Selecione el primer control Label y establezca la propiedad Texto en la ventana Propiedades en "Usted ha solicitado los siguientes libros". d. Seleccione el segundo control Label y elimine el texto "Label" de la propiedad Texto. e. Seleccione el control DataGrid. f. Establezca la propiedad DataKeyField (en la ventana Propiedades) en bid. g. Haga clic en el vnculo Generador de propiedad... (en la parte inferior de la ventana Propiedades). Entonces aparecer un cuadro de dilogo titulado Propiedades de DataGrid1. h. Seleccione la pestaa Columnas (en la parte izquierda del cuadro de dilogo). i. Desactive el cuadro de texto "Crear columnas automticamente en el momento de ejecucin". j. Agregue dos columnas de lmite (seleccionando el nodo Columna de lmite en las Columnas disponibles, y luego haga clic dos veces en el botn agregar). k. Seleccione la primera Columna de lmite y establezca las Propiedades de BoundColumn como sigue:
o o

Texto del encabezado: Ttulo del libro Campo de datos: ttulo

l. Seleccione la segunda Columna de lmite y establezca las Propiedades de BoundColumn como sigue:

o o

Texto del encabezado: ISBN No. Campo de datos: isbn

m. De las Columnas disponibles, agregue una Columna de botn. n. Seleccione la segunda Columna de botn y establezca las Propiedades de ButtonColumn como sigue:
o o o

Texto del encabezado: Accin Nombre del comando: Seleccionar Texto: Eliminar la solicitud

o. Seleccione la pestaa Formato (en la parte izquierda del cuadro de dilogo). p. Seleccione Encabezado en la lista de Objetos. q. Marque la propiedad Negrilla bajo las propiedades Apariencia. r. Haga clic enAceptar. s. Con el control DataGrid an seleccionado, haga clic en el botn Eventos en la ventana de Propiedades. t. Haga doble clic en la propiedad Cargar. El Proyecto de matriz Web de ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor de ASP.NET (llamado "DataGrid1_Load") para el evento de control de Cargar DataGrid y abrir la pgina en la vista Cdigo. u. Agregue el fragmento de cdigo marcado con rojo al mtodo DataGrid1_Load para cargar la lista de los libros solicitados en el control DataGrid. void DataGrid1_Load(object sender, EventArgs e){ if(!Page.IsPostBack) { LoadRequestedBooks(); } }

v. Agregue el fragemento del cdigo marcado con rojo debajo del mtodo DataGrid1_Load. Nota: Cambie el valor de DataSource por connectionString para seleccionar la ubicacin y el nombre de su archivo en la Base de datos de la biblioteca. string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\TempProjects\LibraryDatabase.mdb"; public void LoadRequestedBooks(){

try { string mySelectQuery = string.Format("SELECT books.* from books, requests where books.bid = requests.bid and requests.mid = {0}", Session["userid"]); System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection(connectionString); System.Data.DataSet myDataSet = new System.Data.DataSet(); System.Data.OleDb.OleDbDataAdapter myOleDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(mySelectQuery, myConnection); myOleDbDataAdapter.Fill(myDataSet); DataGrid1.DataSource = myDataSet.Tables[0]; DataGrid1.DataBind(); myConnection.Close(); } catch(Exception exp) { Label2.Text = "<br>Error: " + exp.Message + "<br>"; } }

w. Haga clic en el botn de la pestaa ver Diseo. x. Seleccione el control DataGrid y haga clic en el botn Eventos en la ventana de Propiedades. y. Haga doble clic en la propiedad "SelectedIndexChanged". El Proyecto de matriz Web de ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor de ASP.NET (llamado "DataGrid1_SelectedIndexChanged") para el evento SelectedIndexChanged del control DataGrid y abrir la pgina en la vista Cdigo. z. Agregue el fragmento de cdigo en rojo al cuerpo del mtodo SelectedIndexChanged void DataGrid1_SelectedIndexChanged(object sender, EventArgs e) { string bid = DataGrid1.DataKeys[DataGrid1.SelectedIndex].ToString(); string myInsertQuery = string.Format("delete from Requests where bid = {0} and mid = {1}", bid, Session["userid"]); string myUpdateQuery = string.Format("update books set available=available +

1 where bid={0}", bid); System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection(connectionString); System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(myInsertQuery,myConnection); myConnection.Open(); myCommand.ExecuteNonQuery(); myCommand.CommandText = myUpdateQuery; myCommand.ExecuteNonQuery(); myConnection.Close(); LoadRequestedBooks(); RaiseBubbleEvent(this, e); }

aa. Guarde y cierre la ventana Control del usuario. Siguiente recorrido: "Crear la pgina de inicio de sesin" >> En este recorrido, crear una pgina con un inicio de sesin simple que se utilizar para autenticar a los usuarios. Para lograrlo, siga los siguientes pasos: a. Abra el cuadro de dilogo Agregar nuevo archivo (al oprimir Ctrl+N o seleccionar el men Archivo->Nuevo). b. Seleccione la Plantilla de seguridad de las plantillas (localizada en el lado derecho del cuadro de dilogo). c. Haga clic en la plantilla Pgina de inicio de sesin y escriba Login.aspx en el cuadro de texto Filename. d. Haga clic en Aceptar. e. Cambie a la vista Cdigo. f. De la pestaa Asistentes de cdigo en la Caja de herramientas, arrastre un Asistente de cdigo SELECT Data Method a la pgina ASP.NET. g. Usted ver que aparece el cuadro de dilogo Seleccionar el asistente de cdigo de datos. h. Seleccione la base de datos LibraryDatabase.mdb del cuadro desplegable Seleccionar una base de datos.

i. Haga clic en Siguiente.

j. Seleccione Miembros en la vista de lista Tablas.

k. Marque el cuadro contiguo al elemento * en la vista de lista de Columnas.

l. Haga clic en DONDE. m. Del panel Operando izquierdo, seleccione el nombre de usuario de la lista Columna.

n. Seleccione Filtro en el panel Operando derecho.

o. Haga clic en Aceptar. p. Haga clic en Y Cierre. q. Del panel Operando izquierdo, seleccione la contrasea de la lista Columna. r. Seleccione Filtro en el panel Operando derecho. s. Haga clic en Aceptar

t. Haga clic en Siguiente.

u. Del siguiente paso de Asistente SELECCIONAR cdigo de datos; llamado Vista previa de consulta, haga clic en el botn Probar consulta. v. Usted ver el cuadro Vista previa, introduzca las credenciales vlidas de nombre de usuario/contrasea Por ejemplo: En [Members].[username]= textbox escriba bsmith En [Members].[password]= textbox escriba bsmith

w. Haga clic en Aceptar.

x. Haga clic en Aceptar.

y. Haga clic en Siguiente z. Del siguiente paso de Asistente SELECCIONAR cdigo de datos; llamado Vista previa de consulta, escriba GetUser en el cuadro de texto del nombre del mtodo.

aa. Haga clic en terminar bb. El Proyecto de la matriz Web ASP.NET generar y agregar el segmento de cdigo siguiente a su pgina ASP.NET.

System.Data.DataSet GetUser(string username, string password) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data" + "Source=D:\\TempProjects\\LibraryDatabase.mdb"; System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString = "SELECT [Members].* FROM [Members] WHERE" + "(([Members].[username] = @username) AND (" + "[Members].[password] = @password))"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; System.Data.IDataParameter dbParam_username = new System.Data.OleDb.OleDbParameter(); dbParam_username.ParameterName = "@username";

dbParam_username.Value = username; dbParam_username.DbType = System.Data.DbType.String; dbCommand.Parameters.Add(dbParam_username); System.Data.IDataParameter dbParam_password = new System.Data.OleDb.OleDbParameter(); dbParam_password.ParameterName = "@password"; dbParam_password.Value = password; dbParam_password.DbType = System.Data.DbType.String; dbCommand.Parameters.Add(dbParam_password); System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(); dataAdapter.SelectCommand = dbCommand; System.Data.DataSet dataSet = new System.Data.DataSet(); dataAdapter.Fill(dataSet); return dataSet; }

cc. Localice el mtodo del manejador de eventos LoginBtn_Click. dd. Reemplace el fragmento de cdigo resaltado en amarillo con el marcado en rojo void LoginBtn_Click(Object sender, EventArgs e) { if (Page.IsValid) { if ((UserName.Text == "jdoe@somewhere.com") && (UserPass.Text == "password")) { FormsAuthentication.RedirectFromLoginPage(UserName.Text, true); } else { Msg.Text = "Invalid Credentials: Please try again"; } } } Reemplace el texto resaltado con lo siguiente: void LoginBtn_Click(Object sender, EventArgs e) { if (Page.IsValid) {

System.Data.DataSet userDS = new System.Data.DataSet(); userDS = GetUser(UserName.Text, UserPass.Text); if (userDS.Tables[0].Rows.Count == 1) { Session["userid"] = userDS.Tables[0].Rows[0].ItemArray[0]; FormsAuthentication.RedirectFromLoginPage(UserName.Text, false); } else { Msg.Text = "Invalid Credentials: Please try again"; } } }

ee. Guarde y cierre la ventana de la pgina Inicio de sesin. Siguiente recorrido: "Crear el archivo Web.config file " >> En este recorrido, crear el archivo de configuracin web.config. Para lograrlo, siga los siguientes pasos: a. Abra el cuadro de dilogo Agregar nuevo archivo. b. Seleccione la Plantilla de seguridad de las plantillas (localizada en el lado derecho del cuadro de dilogo). c. Haga clic en la plantilla Configurar archivo. d. Haga clic en Aceptar. e. Guarde y cierre la ventana del archivo web.config. Siguiente recorrido: "Crear la pgina Predeterminada" >> En este recorrido, usted crear la pgina "Predeterminada" de ASP.NET para la aplicacin. Para lograrlo, siga los siguientes pasos: a. Cree una nueva pgina ASP.NET y llmela Default.aspx . b. Arrastre los controles del usuario LibraryHeaderControl.ascx y UserBookRequests.ascx a la pgina ASP.NET. Oprima Shift+Intro (ambas teclas simultneamente) entre la colocacin de cada control. c. Seleccione la ventana Datos en el rea Administracin de archivos (localizada en el extremo derecho de la pantalla. La ventana rea de trabajo es la predeterminada).

d. De la ventana Datos, arrastre las tablas Autores y Libros a la pgina ASP.NET. Oprima Shift+Intro (ambas teclas simultneamente) entre la colocacin de cada tabla. e. Seleccione el control MxDataGrid2 y establezca la propiedad AutoGenerateFields en Falso. f. Haga clic en la pestaa Todos. g. Agregue el siguiente fragmento de cdigo en rojo al cuerpo del <script>. <script runat="server"> void LoadBooksByAuthor(string aid) { try { Session["selectedAuthorID"] = aid; AccessDataSourceControl2.SelectCommand=string.Format("SEL ECT * FROM Books where aid={0}", aid); MxDataGrid2.DataBind(); MxDataGrid2.Visible = true; } catch {} } void Page_Load(object sender, EventArgs e) { MxDataGrid2.Visible = false; if(IsPostBack) { MxDataGrid1.DataBind(); LoadBooksByAuthor(MxDataGrid1.DataKeys[MxDataGrid1.Selected Index].ToString()); } else { MxDataGrid1.SelectedIndex = 0; MxDataGrid1.DataBind(); LoadBooksByAuthor(MxDataGrid1.DataKeys[MxDataGrid1.SelectedI ndex].ToString()); } } protected override bool OnBubbleEvent(object sender, EventArgs e) {

LoadBooksByAuthor((string)Session["selectedAuthorID"]); return false; } </script>

h. Localice la etiqueta de control del usuario UserBookRequests (<uc0:UserBookRequests id="UserControl2" runat="server">) y agregue el siguiente fragmento de cdigo resaltado en amarillo a la etiqueta del control. <uc0:UserBookRequests id="UserControl2" runat="server" OnBubbleEvent="OnBubbleEvent">

i. Haga clic en la pestaa Diseo. j. Seleccione el primer control MxDataGrid. k. Haga clic en la propiedad Campos de la ventana Propiedades.

l. Agregue un ButtonField (al oprimir la lista desplegable en el botn Agregar). m. Establezca las propiedades ButtonField como se indica a continuacin:
o o o o

HeaderText: Accin CommandName: Seleccionar DataTextField: ayuda DataTextFormatString: Ver los libros

n. Haga clic en Aceptar. o. Haga clic en el botn Eventos de la ventana Propiedades. p. Haga doble clic en la propiedad "SelectedIndexChanged". El Proyecto de matriz Web de ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor ASP.NET (llamado "MxDataGrid1_SelectedIndexChanged") para el evento SelectedIndexChanged del control MxDataGrid y abrir la pgina en la vista Cdigo. q. Agregue el fragmento de cdigo en rojo al cuerpo del mtodo SelectedIndexChanged void MxDataGrid1_SelectedIndexChanged(object sender, EventArgs e) { LoadBooksByAuthor(MxDataGrid1.DataKeys[MxDataGrid1.SelectedIndex].To String()); }

r. Haga clic en la pestaa Diseo. s. Haga clic en el segundo control MxDataGrid. t. Seleccione el segundo control MxDataGrid.

u. Haga clic en la propiedad Campos de la ventana Propiedades. v. Agregue un miembro ButtonField y cuatro miembros BoundField. w. Seleccione ButtonField y establezca las siguientes propiedades para los valores indicados a continuacin:
o o o o

HeaderText: Accin CommandName: Seleccionar DataTextField:bid DataTextFormatString: Solicitar un libro

x. Seleccione el segundo ButtonField y establezca las siguientes propiedades para los valores indicados a continuacin: o HeaderText: Ttulo o DataField: ttulo

y. Seleccione el tercer ButtonField y establezca las siguientes propiedades para los valores indicados a continuacin: o HeaderText: ISBN o DataField:isbn

z. Seleccione los cuatro ButtonField y establezca las siguientes propiedades para los valores indicados a continuacin:
o o

HeaderText: Nmero total de libros DataField: total

aa. Seleccione los cinco ButtonField y establezca las siguientes propiedades para los valores indicados a continuacin:
o o

HeaderText: Disponible DataField:disponible

bb. Haga clic en Aceptar. cc. Haga clic en el botn Eventos de la ventana Propiedades. dd. Haga doble clic en la propiedad "SelectedIndexChanged". El Proyecto de matriz Web de ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor ASP.NET (llamado "MxDataGrid2_SelectedIndexChanged") para el evento SelectedIndexChanged del control MxDataGrid y abre la pgina en la vista Cdigo. ee. Agregue el fragmento de cdigo en rojo al cuerpo del mtodo SelectedIndexChanged void MxDataGrid2_SelectedIndexChanged(object sender, EventArgs e) { Response.Redirect(string.Format("BookRequests.aspx ?bid={0}&aid={1}", MxDataGrid2.DataKeys[MxDataGrid2.SelectedIndex], MxDataGrid1.DataKeys[MxDataGrid1.SelectedIndex])); }

ff. Guarde y cierre la ventana de pgina Default.aspx. Siguiente recorrido: "Crear la pgina Solicitar un libro" >>

Esta seccin de la Aplicacin de extremo a extremo lo guiar a travs de los pasos necesarios para crear la pgina Solicitar un libro. Esta pgina proporcionar al usuario la funcionalidad para solicitar libros nuevos una vez que el usuario haya hecho clic en el vnculo Solicitar un libro en la pgina Predeterminada. Esta pgina consiste en el Encabezado de la biblioteca y los Controles UserBookRequests. Para crear la pgina Solicitar un libro, siga los siguientes pasos: a. Cree una nueva pgina ASP.NET y llmela BookRequests.aspx . b. Desde la ventana rea de trabajo, arrastre el archivo de control de usuarios LibraryHeaderControl.ascx a la pgina. c. Desde la pestaa Controles Web en la Caja de herramientas (en el lado izquierdo de la herramienta), arrastre un control HyperLink a la pgina ASP.NET. Presione Intro despus de colocar el control. d. Seleccione la propiedad Texto en la ventana Propiedades para el control HyperLink, y establzcalo en "Regresar a la pgina de Bsqueda". e. Seleccione la propiedad NavigateUrl y establzcala en "default.aspx ?aid={0}". f. Desde la ventana rea de trabajo, arrastre el archivo de control de usuarios UserBookRequests.ascx a la pgina. Presione Intro despus de colocar el control. g. Arrastre un control Label a la pgina ASP.NET. Presione Intro despus de colocar el control. h. Desde la pestaa Elemento HTML en la Caja de herramientas (en el lado izquierdo de la herramienta), arrastre un elemento Tabla a la pgina ASP.NET. Presione Intro despus de colocar el elemento. i. Agregue tres filas adicionales a la tabla (al hacer clic con el botn alterno del mouse en la tabla y selecionando Agregar fila de la tabla) j. Arrastre cuatro controles Label a la tabla, colocando un control en las primeras cuatro celdas de la primera columna. k. Arrastre cuatro controles Label a la tabla, colocando un control en las primeras cuatro celdas de la tercera columna. l. Arrastre un control Button a la sexta celda de la primera columna. m. Arrastre un control Label a la pgina ASP.NET colocndolo despus del elemento de la tabla HTML. Presione Intro despus de colocar el control. n. Arrastre otro control HyperLink a la pgina ASP.NET. o. Seleccione la propiedad Texto en la ventana Propiedades para el control HyperLinkiper, y establzcalo en "Regresar a la pgina de Bsqueda".

p. Seleccione la propiedad NavigateUrl y establzcala en "default.aspx ?aid={0}". q. Seleccione el control Label1, establezca la propiedad Texto en "Libros solicitados". r. Seleccione el control Label2, establezca la propiedad Texto en "Ttulo". s. Seleccione el control Label3, establezca la propiedad Texto en "ISBN". t. Seleccione el control Label4, establezca la propiedad Texto en "Disponibilidad". u. Seleccione el control Label5, establezca la propiedad Texto en "Autor". v. Seleccione el control Button, establezca la propiedad Texto en "Solicitar un libro". w. Haga doble clic en el control Button. El proyecto de matriz Web de ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor ASP.NET (llamado "Button1_Click") para el evento de hacer clic en el control Button y abrir la pgina en la vista Cdigo. x. Agregue el fragmento de cdigo en rojo al cuerpo del mtodo del manejador de eventos Button1_Click void Button1_Click(object sender, EventArgs e) { string myInsertQuery = string.Format("insert into requests (bid, mid) values ('{0}', '{1}')", Request.QueryString["bid"], Session["userid"]); string mySelectQuery = string.Format("Select available from books where bid={0}", Request.QueryString["bid"]); string myUpdateQuery = string.Format("update books set available = available 1 where bid={0}", Request.QueryString["bid"]); OleDbConnection myConnection = new OleDbConnection(connectionString); OleDbCommand myCommand = new OleDbCommand(myInsertQuery,myConnection); object queryResult; myConnection.Open(); myCommand.ExecuteNonQuery(); myCommand.CommandText = mySelectQuery; queryResult = myCommand.ExecuteScalar(); if((queryResult == null) || (int.Parse(queryResult.ToString()) > 0)){ myCommand.CommandText = myUpdateQuery; myCommand.ExecuteNonQuery(); } else {

Label10.Text += "<br>This book is not available"; } myConnection.Close(); Response.Redirect(HyperLink1.NavigateUrl); }

y. Seleccione el control Page de la ventana Propiedades

z. Haga clic en el botn Eventos. aa. Haga doble clic en el control Page. El proyecto de matriz Web de ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor ASP.NET (llamado "Page_Load") para el evento Cargar del control Pgina y abrir la pgina en la vista Cdigo. bb. Agregue el complemento del cdigo en rojo al mtodo del controlador de eventos Page_Load void Page_Load(object sender, EventArgs e) { try { if(Request.QueryString["bid"] == null) { Response.Redirect("Default.aspx "); }

HyperLink2.NavigateUrl = string.Format(HyperLink2.NavigateUrl, Request.QueryString["aid"]); HyperLink1.NavigateUrl = string.Format(HyperLink1.NavigateUrl, Request.QueryString["aid"]); string mySelectQuery = string.Format("SELECT books.title, books.isbn, books.available, authors.fname, authors.sname from books, authors where books.bid={0} and authors.aid=books.aid", Request.QueryString["bid"]); string mySelectQuery2 = string.Format("Select count(*) from requests where bid={0} and mid={1}", Request.QueryString["bid"], Session["userid"]); OleDbConnection myConnection = new OleDbConnection(connectionString); OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection); OleDbDataReader myReader; object queryResult; myConnection.Open(); myReader = myCommand.ExecuteReader(); myReader.Read(); Label6.Text = myReader.GetString(0); Label7.Text = myReader.GetString(1); Label8.Text = myReader.GetInt16(2).ToString(); Label9.Text = myReader.GetString(3) + " " + myReader.GetString(4); myReader.Close(); myCommand.CommandText = mySelectQuery2; queryResult = myCommand.ExecuteScalar(); if((queryResult != null) && (int.Parse(queryResult.ToString()) != 0)) { Button1.Visible = false; Label10.Text = "You have already made a request for this book<br>"; } myConnection.Close(); } catch(Exception exp) { Label10.Text = "Error: [" + exp.Message + "]<br>"; } }

cc. Agregue el complemento del cdigo debajo del final de la pgina. Nota: Cambie el valor DataSource de connectionString para que apunte hacia la ubicacin y nombre de su archivo en la Base de datos de la biblioteca. string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\TempProjects\LibraryDatabase.mdb"; protected override bool OnBubbleEvent(object sender,EventArgs e) { string mySelectQuery = string.Format("Select count(*) from requests where bid={0} and mid={1}", Request.QueryString["bid"], Session["userid"]); OleDbConnection myConnection = new OleDbConnection(connectionString); OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection); object queryResult; myConnection.Open(); queryResult = myCommand.ExecuteScalar(); myConnection.Close(); if((queryResult != null) && (int.Parse(queryResult.ToString()) != 0)) { Button1.Visible = false; Label10.Text = "You have already made a request for this book<br>"; } else { Button1.Visible = true; Label10.Text = ""; } return true; }

dd. Haga clic en la pestaa Todos y agregue las siguientes directrices de pgina sobre la etiqueta de la secuencia de comandos <script> <%@ import Namespace="System.Data.OleDb" %> <%@ import Namespace="System.Data" %>

ee. Guarde y cierre la pgina.

Siguiente recorrido: "Crear la pgina Terminar sesin" >> En este recorrido, analizaremos los pasos requeridos para crear una pgina Cierre de sesin desde el Proyecto de la matriz Web ASP.NET. Para lograrlo, siga los siguientes pasos: a. Abra el cuadro de dilogo Agregar nuevo archivo (al oprimir Ctrl+N o seleccionar el men Archivo->Nuevo). b. Seleccione la Plantilla de seguridad de las plantillas (localizadas en el lado derecho del cuadro de dilogo). c. Haga clic en la Plantilla de la pgina de cierre de sesin y escriba Logout.aspx en el cuadro de texto Filename. d. Haga clic en Aceptar. e. Desde la pestaa Controles Web en la Caja de herramientas (en el lado izquierdo de la herramienta), arrastre un control HyperLink enfrente del texto Estado en la pgina ASP.NET. Presione Intro despus de colocar el control. f. Seleccione la propiedad Texto en la ventana Propiedades y establzcala en "Regresar a la pgina de bsqueda". g. Seleccione la propiedad NavigateUrl y establzcala en "Default.aspx ". h. Haga doble clic en el control del botn Cerrar sesin. El Proyecto de matriz Web ASP.NET conectar automticamente un mtodo del manejador de eventos del lado del servidor ASP.NET (llamado "LogOffBtn_Click") para el evento Click del control DataGrid y abrir la pgina en la vista Cdigo. i. Reemplace el fragmento de cdigo resaltado en amarillo con el marcado en rojo. void LogOffBtn_Click(Object sender, EventArgs e) { FormsAuthentication.SignOut(); Status.Text = "Not authenticated."; } Reemplace el fragmento del cdigo resaltado con Response.Redirect("Login.aspx ");

j. Guarde y cierre la ventana Logout.aspx. Siguiente recorrido: "Ejecutar la aplicacin" >>

En este recorrido, usted ir a travs de los pasos necesarios para ejecutar la aplicacin Web que ha creado. El punto de entrada para la aplicacin es Login.aspx . Para lograrlo, siga los siguientes pasos: a. Abra la pgina Login.aspx. b. Ejecute la pgina ASP.NET Login.aspx. Nota: Si abre cualquier otra pgina (con excepcin de la pgina Cerrar sesin, no tendr acceso a la pgina (debido a que no ha iniciado la sesin). ASP.NET automticamente lo enviar a la pgina de inicio de sesin en donde debe introducir sus credenciales de nombre de usuario y contrasea existentes. Una vez que ha iniciado la sesin, se le enviar de vuelta a la pgina default.aspx en donde tendr acceso al sitio restringido c. Su pgina ASP.NET automticamente aparecer en una nueva instancia de su explorador Web. d. Introduzca las credenciales de su nombre de usuario/contrasea y luego oprima la tecla Intro y haga clic en el botn Inicio de sesin.

e. Si sus credenciales son correctas, se le enviar a la pgina Default.aspx

f. Si hace clic en el vnculo Ver los libros, observar que la lista de libros cambiar para cada autor.

g. Seleccione el vnculo Ver los libros para Michael Young

h. Haga clic en el vnculo Solicitar un libro

i. Haga clic en el botn Solicitar un libro. j. Observe que se ha agregado el Libro a la lista solicitada. Este es el resumen en rojo de la imagen siguiente

k. Ver los Libros escritos por Rebecca Riordan (al hacer clic en el vinculo Ver los libros)

l. Haga clic en Solicitar un libro.

m. Haga clic en el botn Solicitar un libro en la pgina BookRequests

n. Se le llevar a la pgina Predeterminada. Observe que el nmero de Libros solicitados ha cambiado para mostrar la adicin de un nuevo libro.

o. Haga clic en Ver los libros escritos por Michael Young. Observe el nmero de libros disponibles.

p. Haga clic en Eliminar la solicitud para XML Step by Step (2a edicin). Observe que el nmero disponible de libros ha aumentado en 1. q. Haga clic en Ver los libros de Rebecca Riordan. r. Haga clic en Solicitar un libro.

s. Observe que no est visible el botn de Solicitar.

t. Cierre la instancia del explorador Web. u. Cierre el Proyecto de matriz Web ASP.NET. v. Detenga el Servidor de la matriz Web Microsoft ASP.NET Siguiente seccin: "Generar una aplicacin de extremo a extremo (con J#.NET) ">>

Você também pode gostar