You are on page 1of 21

Programacin en ASP.Net 3.

5 y Acceso a Datos con Microsoft SQL Server 2008

Creacin de un Catalogo virtual


Presentacin del Caso a Estudiar
Microsoft SQL Server y Microsoft Visual Studio 2008 cuenta con una tcnica llamada ADO.NET, es la versin evolucionada de ADO. Es mucho ms confiable y robusto, ADO.Net trabaja en modo conectado y desconectado. Es mucho ms sencillo programar en este entorno. Los objetos que se utilizaran en este laboratorio son de modo desconectado. Objetivos: Establecer la cadena de conexin. Utilizacin de la carpeta App_Code. Utilizacin de Clases. Creacin de Mtodos. Utilizacin de la propiedad AutoPostBack. Configuracin de una GridView. Captulo VII Creacin de un catalogo virtual

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008

Creacion de un Catalogo Virtual


1. Crear un proyecto llamado CatalogoVirtual.

2. Establecer la cadena de conexin en la seccion llamada ConnectionStrings del archivo de configuraciones. <connectionStrings> <add name="CnImportacionesNeptuno" connectionString="Data Source=.;Database=importacionesNeptuno;integrated security=true"/> </connectionStrings> Captulo VII Creacin de un catalogo virtual 3. Agregar una clase dentro del proyecto y asignar el nombre de MetodosProdu ctos.

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 4. Aparecera un mensaje indicando que se agregara una carpeta llamada App_Code.

porque se agrega esta carpeta?

5. Abrir la clase llamada MetodosProductos. Imports Microsoft.VisualBasic Public Class MetodosProductos End Class 6. Importar las siguientes librerias dentro de la clase. Imports System.Data.SqlClient Imports System.Data 7. Mtodo que obtiene la cadena de conexin. 'Metodo para Obtener la cadena de conexion Public Shared Function Conexion() As String Try Dim Leer As String = ConfigurationManager.ConnectionStrings("CnImportacionesNeptuno").ToString Return Leer Catch ex As Exception Throw ex End Try End Function 8. Crear un mtodo que nos permita mostrar el contenido de la tabla productos. 'Metodo que permite mostrar el contenido de la Tabla Productos Public Shared Function GetProductos() As DataTable Try Using cn As New SqlConnection(Conexion) Using da As New SqlDataAdapter("sp_ProductosSelectAll", cn) Dim dt As New DataTable Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 dt.Clear() da.Fill(dt) Return dt End Using End Using Catch ex As Exception Throw ex End Try End Function

9. Se declaran 5 variables publicas compartidas.

'Se Crea 5 Variables Publicas compartidas Public Shared nombre As String Public Shared descripcion As String Public Shared precio As Decimal Public Shared Stock As Integer Public Shared imagen() As Byte

10. Metodo que devuelve el valor de una consulta en variables.

Public Shared Sub GetProductosSelectParameters(ByVal cod As Integer) Try 'se establece la cadena de conexion Using cn As New SqlConnection(Conexion) 'se establece el nombre del Objeto Using cmd As New SqlCommand("sp_ProductosSelect", cn) 'se indica el tipo de Objeto cmd.CommandType = 4 'se indica el nombre del parametro y el valor que toma el parametro cmd.Parameters.AddWithValue("@cod", codd) 'se crea un DataAdapter Dim da As New SqlDataAdapter(cmd) 'se crea una Tabla Dim dt As New DataTable 'se limpia la Tabla Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 dt.Clear() 'Se llena la Tabla da.Fill(dt) 'se determina si el numero total de filas es diferente a 0 If dt.Rows.Count <> 0 Then 'se llena a la variable Nombre con el valor de la primera fila de la columna NombreProducto nombre = dt.Rows(0).Item("NombreProducto") 'se llena a la variable descripcion con el valor de la primera fila de la columna CantidadPorUnidad descripcion = dt.Rows(0).Item("CantidadPorUnidad") 'se llena a la variable PrecioUnidad con el valor de la primera fila de la columna PrecioUnidad precio = dt.Rows(0).Item("PrecioUnidad") 'se llena a la variable UnidadesEnExistencia con el valor de la primera fila de la columna UnidadesEnExistencia Stock = dt.Rows(0).Item("UnidadesEnExistencia") 'se llena a la variable imagen con el valor de la primera fila de la columna imagen imagen = CType(dt.Rows(0).Item("image"), Byte()) Else 'en caso de que la tabla este vacia indicara un mensaje Throw New Exception("Producto No Encontrado") End If End Using End Using Catch ex As Exception Throw ex End Try Captulo VII Creacin de un catalogo virtual End Sub

11. Metodo que devuelva el valor de una consulta en un DataTable.

'Metodo que devuelve el valor de una Consulta Public Shared Function GetProductosSelect(ByVal cod As Integer) As DataTable Try 'se establece la cadena de conexion Using cn As New SqlConnection(Conexion) 'se establece el nombre del Objeto

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 Using cmd As New SqlCommand("sp_ProductosSelect", cn) 'se indica el tipo de Objeto cmd.CommandType = 4 'se indica el nombre del parametro y el valor que toma el parametro cmd.Parameters.AddWithValue("@cod", cod) 'se crea un DataAdapter Dim da As New SqlDataAdapter(cmd) 'se crea una Tabla Dim dt As New DataTable 'se limpia la Tabla dt.Clear() 'Se llena la Tabla da.Fill(dt) Return dt End Using End Using Catch ex As Exception Throw ex End Try End Function

12. Metodo que devuelva el valor de los productos por Categoria. 'Metodo que devuelve los productos por Categoria Public Shared Function GetProductosSelectCategorie(ByVal cod As Integer) As DataTable Try 'se establece la cadena de conexion Using cn As New SqlConnection(Conexion) 'se establece el nombre del Objeto Using cmd As New SqlCommand("Select * from ProductosPorCategoria(" & cod & ")", cn) Dim da As New SqlDataAdapter(cmd) 'se crea una Tabla Dim dt As New DataTable 'se limpia la Tabla dt.Clear() 'Se llena la Tabla da.Fill(dt) Return dt End Using End Using Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 Catch ex As Exception Throw ex End Try End Function 13. Agregar una Clase y asignar el nombre de MetodosCategorias.

14. Abrir la clase. 15. Importar las siguientes libreras. Imports System.Data.SqlClient Imports System.Data 16. Crear un mtodo que permita obtener la cadena de conexin. 'Metodo para Obtener la cadena de conexion Public Shared Function Conexion() As String Try Dim Leer As String = ConfigurationManager.ConnectionStrings("CnImportacionesNeptuno").ToString Return Leer Catch ex As Exception Throw ex End Try Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 End Function 17. Crear un mtodo que nos permita mostrar el contenido de la tabla Categoras. Public Shared Function GetCategorias() As DataTable Try Using cn As New SqlConnection(conexion) Using da As New SqlDataAdapter("sp_CategoriasSelectAll", cn) Dim dt As New DataTable dt.Clear() da.Fill(dt) Return dt End Using End Using Catch ex As Exception Throw ex End Try End Function

Mostrando el contenido de los metodos


Nota. Para mostrar el contenido de los metodos usted tendra que disear un master pages deacuerdo su agrado. 18. Agregar al proyecto una pagina llamada ListarProductos.aspx.

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008

Utilizacion de las propiedades AutoPostBack y IsPostBack


IsPostBack.- Obtiene un valor que indica si la pgina se est cargando como respuesta a un valor devuelto por el cliente, o si es la primera vez que se carga y se obtiene acceso a la misma. AutoPostBack.- Es true si se produce una devolucin automtica al servidor cuando el usuario cambia el texto en el cuadro de texto y sale del control con el tabulador; de lo contrario, es false. El valor predeterminado es false. 19. Arrastra el control ListBox de la Ficha Estndar(diseo) a la pgina ListarProductos. 20. Seleccionar el control ListBox y en la propiedad ID asignar el nombre de lstCategorias. 21. Hacer clic en la etiqueta inteligente y Activar la Opcin AutoPostBack. 22. Hacer doble clic sobre la pgina. 23. Importar la siguiente librera. Imports System.Data 24. situarnos en el evento Load. 25. Digitar el siguiente Script. T ry '//se indica si la carga de la pagina es nula If Page.IsPostBack = False Then lstCategorias.DataSource = MetodosCategorias.GetCategorias ' se utiliza la propiedad DataTextField, para mostrar una lista de nombres en el 'control lstCategorias.DataTextField = "NombreCategora" 'se utiliza la propiedad DataValueField, para asignar un valor a cada elemento mostrado lstCategorias.DataValueField = "idCategora" 'Se utiliza el DataBind, para enlazar el control con el origen de datos lstCategorias.DataBind() End If Catch ex As Exception Response.Write(ex.Message) End Try Captulo VII Creacin de un catalogo virtual

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 26. Ejecutar la pagina (pulsar la tecla F5). 27. Aparecer un cuadro de dialogo donde indica que el archivo de configuraciones va hacer modificado. 28. Hacer clic en aceptar.

29. Como usted puede apreciar se visualiza el contenido del mtodo dentro del control ListBox.

30. crear una carpeta llamada imagenesproductos. 31. Seleccionar la carpeta, hacer clic derecho sobre dicha carpeta y seleccionar la opcion Agregar Elemento Existente.

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

10

Captulo VII Creacin de un catalogo virtual

Agregando elementos Existentes

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 32. Seleccionar todos los elementos que se encuentran dentro de la carpeta imgenesproductos (Solicitar la Carpeta al Instructor).

33. Como usted puede apreciar ahora la carpeta imagenesproductos contiene 77 imgenes. 34. Cada una de estas imgenes hace referencia a cada uno de los productos.

Creando el Catalogo de Productos en Oferta


35. Agregar un control de tipo DataList, asignar el nombre de DataList1. 36. Habilitar la opcin Edicin de Plantilla. 37. Dentro de la plantilla crear una tabla de 6 filas y 1 Columna.

38. Agregar a las filas de la tabla los siguientes controles. Control Label Label Label Image Label Label HyperLink HyperLink ID Lblnombre Label2 Lblcodigo Image1 Label1 Label3 HyperLink2 HyperLink1 Text Codigo Eval("idproducto") Eval("imagen") Precio Eval("preciounidad") Pedir Detalles Propiedades Editar DataBinding Eval("nombreproducto")

NavigateUrl

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

11

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 39. Tiene que quedar tal como se muestra en la figura.

40. Declarar la siguiente variable a nivel de todo el formulario. Private dv As DataView 41. Dentro del Evento Load del formulario agregar el siguiente script. Try 'se indica si la carga de la pagina es nula If Page.IsPostBack = False Then lstCategorias.DataSource = MetodosCategorias.GetCategorias ' se utiliza la propiedad DataTextField, para mostrar una lista de nombres en el 'control lstCategorias.DataTextField = "NombreCategora" 'se utiliza la propiedad DataValueField, para asignar un valor a cada elemento mostrado Captulo VII Creacin de un catalogo virtual lstCategorias.DataValueField = "idCategora" 'Se utiliza el DataBind, para enlazar el control con el origen de datos lstCategorias.DataBind() End If 'se obtiene una replica de la Tabla GetProductos dv = New Data.DataView(MetodosProductos.GetProductos) 'se utiliza el rowFilter, para realizar la consulta a la Tabla dv.RowFilter = "preciounidad<9.5" 'se le asigna como origen de datos al control el DataView Me.DataList1.DataSource = dv.ToTable

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

12

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 'Se utiliza el DataBind, para enlazar el control con el origen de datos Me.DataList1.DataBind() Catch ex As Exception Response.Write(ex.Message) End Try 42. Seleccionar el control DataList. 43. Hacer clic en la etiqueta inteligente. 44. seleccionar la opcin propiedades de Diseo. 45. Seleccionar la categora General. Indicar el nmero de columnas que en este caso es 4. En direccin que sea vertical. En diseo indicar que sea de tipo Tabla.

46. Agregar debajo del control DataList el control GridView. 47. Asignar como nombre del control dgvproductos. 48. Digitar el siguiente Script dentro del evento SelectedIndexChanged del control lstCategorias. Try 'se realiza una consulta al DataView con el RowFilter 'esta consulta indica que el idcategoria es igual al elemento seleccionado 'del control lstcategorias dv.RowFilter = "idCategora = " + Me.lstCategorias.SelectedValue 'se asigna el origen de datos al control dgvproductos.DataSource = dv.ToTable() 'Se utiliza el DataBind, para enlazar el control con el origen de datos dgvproductos.DataBind() 'Se utiliza la propiedad false para ocultar el control DataList1.Visible = False Catch ex As Exception Response.Write(ex.Message) End Try 49. Crear una carpeta llamada imgenes. 50. Agregar imgenes a la carpeta. Captulo VII Creacin de un catalogo virtual

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

13

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008

Dar Formato al Control GridView


51. Seleccionar el control GridView y hacer clic en la etiqueta intelgente. 52. Seleccionar la opcion Editar Columnas.

53. Desactivar la opcion Generar Campos Automaticamente. 54. Agregar 5 campos BoundField. 55. Seleccionar el primer BoundField y asignar el siguiente formato. 56. En la propiead HeaderText asignar el nombre de Cod.

57. En la propiedad DataField asignar el campo idproducto.

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

14

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008

58. Para los siguientes BoundFiled, asignar el siguiuente formato: Control BoundField BoundField BoundField BoundField HeaderText Nombre Descripcion Precio U. Stock Propiedades DataFiled nombreproducto cantidadporunidad preciounidad unidadesenexistencia

DataFormatString

{0:N1}

59. Agregar el Campo CommadField > Seleccionar. 60. Seleccionar el Campo Seleccionar y en la porpiedad ButtonType seleccionar la opcion Image. Captulo VII Creacin de un catalogo virtual Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

15

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 61. Seleccionar el Campo Seleccionar y en la porpiedad SelectImageUrl seleccionar una imagen de la carpeta imgenes con el nombre de pedir.jpg (solicitar la imagen al Instructor).

Agregando Cantidades al Pedido


62. Hacer clic sobre el control Gridview. 63. Hacer clic en la etiqueta inteligente y seelccionar la opcion Editar Columnas. 64. Agregar el Campo llamado Captulo VII Creacin de un catalogo virtual TemplateField. 65. En la propiedad HeaderText asignar el nombre de Cantidad. 66. Llevar el campo Cantidad encima del Campo Seleccionar. 67. Hacer clic en aceptar. 68. Seleccionar el Campo que se cuentra con el nombre de Cantidad. 69. Como usted podra observar toda esa columna con el nombre de Cantidad se encuentra vacia.

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

16

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 70. Hacer clic en la etiqueta inteligente y seleccionar Editar Plantillas.

71. Se tiene que mostrar una plantilla tal como se muestra en la figura.

72. Esta plantilla nos permite insertar cualquier control. 73. Agregar a la plantilla un TextBox. 74. Seleccionar el TextBox y en la propiedad ID asignar el nombre de txtcantidad.

75. Hacer clic en la etiqueta inteligente y seleccionar la opcin Terminar Edicin de plantilla. 76. Ejecutar la Pagina (Pulsar la Tecla F5). 77. Seleccione cualquiera de las categoras. 78. Como usted podr observar ahora dentro del GridView se encuentra un TextBox. Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

17

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008

Enviando Parametros de una Pagina a Otra


79. Anteriormente se haba agregado un control HyperLink, este control muestra el texto Detalles. 80. Agregar en la propiedad NavigateUrl el parmetro siguiente.

"detalleProducto.aspx?Codigo=" & Eval("IdProducto")


Explicacion del Codigo
detalleProducto.aspx.- Es el nombre de la pagina a donde se va a enviar. Codigo.- Es el nombre de la variable de tipo parametro que se le esta asignando. Eval("IdProducto").- Es el valor que va a tomar la variable del parametro enviado a la pagina detalleProducto.aspx.

Mostrando el contenido de una Consulta utilizando Parametros


81. Crear una pgina llamada detalleProducto.aspx. 82. Arrastrar el control DataList. 83. Habilitar la opcin Edicin de Plantilla. 84. Dentro de la plantilla crear una tabla de 7 filas y 1 Columna. 85. Agregar a las filas de la tabla los siguientes controles. Control ID Label Label Label Lblnombre Lbldescripcion Label2 Codigo Text Propiedades Editar DataBinding Eval("nombreproducto") Eval("cantidadporunidad") NavigateUrl Captulo VII Creacin de un catalogo virtual

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

18

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 Label Image Label Label Label Label HyperLink Lblcodigo Image1 Label1 Label3 Label4 Label6 HyperLink1 Pedir Stock Eval("unidadesenExistencia") Precio Eval("preciounidad") Eval("idproducto") Eval("imagen")

86. Tiene que quedar tal como se muestra en la figura.

87. Digitar el siguiente cdigo dentro del Evento Load de la pgina detalleProducto.aspx. T ry Captulo VII Creacin de un catalogo virtual 'se utiliza el Try/catch, para el tratamiento de errores If Request.QueryString("Codigo") <> "" Then Dim cod As Integer = Convert.ToInt32(Request.QueryString("codigo")) Me.DataList1.DataSource = CapaDatos.MetodosProductos.GetProductosSelect(cod) Me.DataList1.DataBind() Else 'en caso de que ocurra algun error la pagina nos direcciona 'a la pagina ListaProductos.aspx Response.Redirect("ListaProductos.aspx") End If

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

19

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 Catch ex As Exception Response.Write(ex.Message) End Try

Explicacion del Codigo


Se utiliza una condicional, diciendo que si la variable de parametro es diferente a ser un valor nullo, entonces sucede la consulta.Esta consulta devuelve un valor y ese valor lo toma el control DataList1. En caso de la que la variable de parametro este vacia, esta la reenvia a la pagina ListaProductos.aspx. Request.- Captura el parametro enviado por otra pagina. QueryString.- Obtiene el nombre del parametro enviado por la otra pagina. Response.- Este Objeto permite enviar Datos de respuesta Http a un cliente y contiene informacin sobre esa respuesta. Redirect.- Redirecciona un cliente a una nueva direccion URL y especifica la nueva URL. 88. Ejecutar la pagina (pulsar la Tecla F5). 89. Como uste podra observar al ejecutar la pagina detalleProducto.aspx, esta la reenvia a la pagina ListaProductos.aspx, ya que la variable de parametro no contiene ningun valor.

90. Como usted puede observar, se muestra en forma automatica un listado de productos. Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

20

Captulo VII Creacin de un catalogo virtual

Programacin en ASP.Net 3.5 y Acceso a Datos con Microsoft SQL Server 2008 91. Sealar el Hipervinculo Detalles.

Dejar el puntero del mouse sobre el Hipervnculo 92. Como usted podra obasevar en la barra de estado se muestra un valor, este valor representa al valor del parametro.

93. Quiere decir del que el parametro tiene el Valor de 13. 94. Hacer clic en el Hipervinculo Detalles. 95. Como uste dpodra observar fue enviado a la pagina detalleProducto.aspx. 96. El producto que nos muestra en esta pagina es el producto con el codigo 13. 97. Como usted recordara la consulta que se realizo en el Evento Load del formulario Web, igual al Campo IdProducto a la Variable de Parametro.

Instructor: Cueva Valverde Diego Alberto (MCTS DCEP DCEG DCE Microsoft) dce.diegocueva@gmail.com

21

Captulo VII Creacin de un catalogo virtual

You might also like