Entrenamiento en Acceso a Datos con ASP.NET

58
ENTRENAMIENTO EN ACCESO A DATOS EXTREMO CON ASP.NET Haarón Gonzalez Microsoft MCP, MCAD, MCT, MCTS y MVP

description

Acceso a datos en ASP.NET

Transcript of Entrenamiento en Acceso a Datos con ASP.NET

  • 1. ENTRENAMIENTO EN ACCESO ADATOS EXTREMO CON ASP.NETHaarn GonzalezMicrosoft MCP, MCAD, MCT, MCTS yMVP

2. GENERALES Sesin de 4 horas No habr descanso Es un entrenamiento no una capacitacin Puedes preguntar en cuanto surja una duda Requieres de Visual Studio 2008 o superior y SQL Express o superior Esta sesin se esta transmitiendo en lnea y quedara grabada 3. QUE ES LA VINCULACIN DE DATOS ODATABINDINGProceso de carga datos provenientes de una fuente de datos en un control En .NET los controles que soportan databindingcuentan con la propiedad DataSource donde asignamos los datos el mtodo DataBind()para proceder a cargarlos Para vincular datos en un control ya sea con cdigo odeclarativamente establecemos la propiedadDataSource e invocamos el mtodo DataBind() 4. EJERCICIO 1 CARGANDO DATOSPROGRAMATICAMENTE1. Creamos proyecto de tipo Web Site en Visual Studio2. Agregamos una pagina aspx3. Arrastramos un control GridView4. Programamos cdigo para invocar la fuente de datos en el evento Page_Load 5. Dim connectString As String = "DataSource=.sqlexpress;Initial Catalog=Northwind;IntegratedSecurity=True"Using cnn As New SqlConnection(connectString)Using cmd As New SqlCommand("select top 30 * from customers",cnn) cnn.Open() Dim reader As SqlDataReader = cmd.ExecuteReader()GridView1.DataSource = readerGridView1.DataBind()End UsingEnd Using 6. string connectString = "Data Source=.sqlexpress;InitialCatalog=Northwind;Integrated Security=True";using (SqlConnection cnn = new SqlConnection(connectString)){using (SqlCommand cmd = new SqlCommand("select top 30 * fromcustomers", cnn)) {cnn.Open(); SqlDataReader reader = cmd.ExecuteReader(); GridView1.DataSource = reader; GridView1.DataBind();}} 7. COMO FUNCIONA EL DATABINDINGControlDataSourceFuente DataBind()de CacheDatos local dedatos Render() 8. QUE CONTROLES DE ASP.NETSOPORTAN DATABINDING? Solo algunos controles de ASP.NET lo soportan Pueden vincularse a cualquier fuente de datos que implemente la interface IEnumerable as como clases DataTable o DataSetControlesHtmlSelectArrayque CheckBoxListArrayListsoportanBulletedListHashTablevinculacin GridViewQueueDetailsView SortedListFormViewVinculados aStackListViewStringCollectionDataListDataViewRepeaterDataTableDropDownListDataSetListBox IDataReaderRadioButtonList IEnumerable 9. EJERCICIO 2 CARGANDO DATOS DEUN ARREGLO PROGRAMTICAMENTE Agregamos una nueva pagina aspx En el markup arrastramos un control BulletedList En el codebehind agregamos un arreglo de strings y loinicializamos Asignamos la propiedad DataSource y ejecutamos DataBind() Corremos el aplicativo y revisamos el funcionamiento Agregamos un ListBox, CheckBoxList y asignamos supropiedad DataSource Usamos Page.DataBind(); 10. Dim numberArray As String() = New String() {"1", "2", "3", "4"} numberListBox.DataSource = numberArray numberListBox.DataBind() 11. protected void Page_Load(object sender, EventArgs e){ string[] numberArray = new string[] {"1","2","3","4" };numberListBox.DataSource = numberArray;numberListBox.DataBind(); } 12. DATABINDING DE TIPO TEXTO VALOR Para los controles que soportan cargar solouna dimensin de datos (DropDown, ListBox,etc) tambin se pueden vincular mediante Inicializacin de la propiedad DataTextField al campo que queremos desplegar en el control Inicializacin de la propiedad DataValueField al campo que queremos usar como el valor identificador de un elemento 13. Dim dsn As String = "Data Source=.sqlexpress;InitialCatalog=Northwind;Integrated Security=True"Using cnn As New SqlConnection(dsn)Using cmd As New SqlCommand("SELECT TOP 20 * FROM PRODUCTS", cnn)cnn.Open()ddl.DataSource = cmd.ExecuteReader()ddl.DataTextField = ProductNameddl.DataValueField = ProductIdddl.DataBind()End UsingEnd Using 14. string dsn = @"Data Source=.sqlexpress;InitialCatalog=Northwind;Integrated Security=True";using (SqlConnection cnn = new SqlConnection(dsn)){using (SqlCommand cmd = new SqlCommand("SELECT TOP 20 *FROM PRODUCTS",cnn)){ cnn.Open(); ddl.DataSource = cmd.ExecuteReader(); ddl.DataTextField = ProductName; ddl.DataValueField = ProductId; ddl.DataBind();}} 15. EJERCICIO 3 CARGANDO DATOS DETIPO TEXTO VALOR Usaremos la primer pagina aspx que creamos y agregamos unnuevo control de tipo DropDownList En el cdigo asignamos las propiedades DataSource,DataTextFIeld y DataValueField Invocamos el mtodo DataBind() Corremos Para seleccionar algn elemento vinculado de formaprogramtica usamos la coleccin Items e invocamos el mtodoFindByText o FindByValue numberListBox.Items.FindByText("3").Selected = true; 16. ORIGEN DE DATOS DECLARATIVA Las fuentes de datos declarativas son una caracterstica agregada en ASP.NET 2.0 SqlDataSource, ObjectDataSource, XmlDataSource,LinqDataSource junto con Visual Studio 2005 en adelanteofrecen un soporte enriquecido para la vinculacin ymanipulacin enriquecida de los campos vinculados 17. ORIGEN DE DATOS DECLARATIVA Sql-Object- Access-Xml- SiteMap-DataSource DataSource DataSource DataSource DataSource DataSite Map Component ProviderSQL AnyAccess XMLSite MapsDatabases DataDatabases Data 18. VINCULANDO A LAS FUENTES DEDATOS DECLARATIVASA vinculacin de datos puede realizarse con o sin cdigo alguno Soporte desde el diseador Integracin con herramientas como server Explorer Modelo de vinculacin fcil de extenderse 19. 20. EJERCICIO 4 DATABINDING DECLARATIVO CON CDIGO Creamos una nueva pagina aspx Arrastramos un GridView Configuramos un nuevo SqlDataSource mediante el asistente Elegimos la tabla Customers Exploramos las distintas opciones de ordenamiento, generacin yfiltrado Y con codification cargamos el datasourceGridView1.DataSource = SqlDataSource1.Select(new DataSourceSelectArguments());GridView1.DataBind(); 21. EJERCICIO 5 DATABINDINGDECLARATIVO SIN CDIGO Sobre la ultima pagina creada Editamos la declaracin del GridView para especificar lapropiedad DataSourceID igual al nombre de nuestro controlSqlDataSource No olvidemos comentar el cdigo anterior 22. COMO FUNCIONA LA VINCULACIN DECLARATIVA A LAS FUENTES DE DATOSPeticinGridView IDataSource SqlDataSourceCreateChildControls()EnsureDataBind() SelectDataBind() Cache Database local de datos Render 23. SQLDATASOURCE Soporta todas las interacciones con SQL como lectura, escritura, actualizacin, eliminacin, filtrado, cacheo, ordenado Cuando el DataSource cuenta con algunas de estas propiedades establecidas mas soporte y funcionalidad es posible en los controlesPropiedad DescripcionProviderNameSystem.Data.SqlClient,System.Data.OleDb,System.Data.OracleClientDataSourceMod DataSet o DataReadereSelectCommmaQuery o el nombre de unndprocedimiento almacenado paraseleccionar datosInsertCommand Query o el nombre de unprocedimiento almacenado parainsertar datosDeleteCommand Query o el nombre de unprocedimiento almacenado paraeliminar datosUpdateCommanQuery o el nombre de un 24. EJERCICIO 6 MANEJANDO LAINSERCIN DE DATOS Creamos una nueva pagina aspx Configuramos un nuevo SqlDataSource con la funcionalidad de que se auto genere el insert, update, delete, read Verificar los InserParameters y los tipos de parmetros en general Invocar programticamente el procesoprotected void Button1_Click(object sender, EventArgs e) de insercin{SqlDataSource1.InsertParameters["CustomerId"].DefaultValue = "aaaa";SqlDataSource1.InsertParameters["CompanyName"].DefaultValue = "aaaa";SqlDataSource1.InsertParameters["ContactName"].DefaultValue = "aaaa";SqlDataSource1.InsertParameters["ContactTitle"].DefaultValue = "aaaa";SqlDataSource1.Insert();} 25. GRIDVIEW Muestra datos en forma tabular, es el sucesor delcontrol DataGrid Generacin de columnas implcita y explicita con capacidad de manejar columnas especiales como ImageField CheckBoxField HyperlinkField TemplateField Interaccin inteligente con controles DataSource para que de manera predeterminada soporte Paginacin automtica, edicin, eliminacin y ordenamiento De forma automtica a los datos vinculados y retorna unaTabla con columnas y renglones en formato HTML 26. EJERCICIO 7 GENERANDO GRIDVIEWDIRECTAMENTE DESDE SERVEREXPLORER Creamos una nueva pagina aspx Abrimos el server explores y buscamos la base de datos de Northwind ybuscamos la tabla Customers Arrastramos la tabla Customers a la superficie de diseo Visualizamos las opciones del GridView Editamos las columnas para incluir una de tipo hipervnculo paraimplementar el maestro 27. DETAILSVIEW Soporta el despliegue y manipulacin de un solo rengln til para escenarios maestro detalle Soporta paginado en caso de mostrar mas de un rengln, edicin,eliminacin e insercin Genera html en formato de tablas, columnas y renglones 28. EJERCICIO 8 IMPLEMENTANDODETALLE Creamos una nueva pagina aspx Abrimos el server explores y buscamos la base de datos deNorthwind y buscamos la tabla Customers Arrastramos la tabla Customers a la superficie de diseo Visualizamos las opciones del GridView Editamos las columnas para incluir una de tipo hipervnculo 29. TEMPLATE Los controles GridView, DetailsView, ListView, Repeater yDataList permiten la personalizacin de la apariencia y el manejode estador a travs de plantillas Provee el marco sobre el cual se despliegan elementos y nos da un grado deflexibilidad para generar nuestro contenido Nos permite especificar exactamente como se desplegar la informacin Maneja el marco y la vinculacin, genera tablas solo que con la posibilidad depersonalizar la celda La sintaxis Eval y Bind se usan para extraer datos del rengln actual, Evalobtiene informacin de solo lectura y Bind es de lectura y escritura, two waybinding. 30. Plantilla vinculada delFuente DataBind() de controldeDatosDataSourcePor cada rengon en la fuente de datosEscribe los datos de acuerdo a nuestra especificacion 31. COMO EXTRAER VALORES DEL LAVINCULACION Los controles que ubicamos en una plantilla necesitan relacionarse con el rengln actual que esta siendo vinculado Utilizamos la nomenclatura para crear la ventana de acceso a losdatos del rengln vinculndose Usamos Eval para extraer los datos Es factible tambin programticamente obtener y establecer losvalores del rengln vinculndose 32. EJERCICIO 9 TRABAJANDO CONRENGLONES VINCULADOS Creamos una nueva pagina aspx Abrimos el server explores y buscamos la base de datos de Northwind ybuscamos la tabla Customers Arrastramos la tabla Customers a la superficie de diseo Visualizamos las opciones del GridView Agregamos una columna de tipo Plantilla Visualizamos los distintos modalidades como ItemTempalte,AlternateTemplate, EditTemplate, etc Agregamos un control de tipo Etiqueta en el estado ItemTemplate y en laspropiedades emergentes de la etiqueta especificamos la vinculacin con quecolumna> 33. EJERCICIO 9 TRABAJANDO CON RENGLONES VINCULADOS Agregamos un botn justo aun lado de la etiqueta y especificamos sunombre como cmdOpcion Dentro del grid buscamos el evento RowDataBound el cual se disparapor cada rengln que se esta vinculando Programticamente especificamos propiedades al botn recinagregadoprotected void GridView1_RowDataBound(object sender, GridViewRowEventArgse) { if (e.Row.RowType == DataControlRowType.DataRow) { Button btn = e.Row.FindControl("cmdOpcion") as Button; btn.Attributes.Add("onclick", "return confirm(hola);"); } } 34. REPEATER Este control nos da la posibilidad de manipular a nuestro antojo elHTML generado por el control Soporta el concepto de plantillas Trabaja con los conceptos de vinculacin mediante datasourcessolo que nos da la libertad de generar y dibujar el HTML que seestar generando EmployeeID: />
LastName: />
FirstName: /> 35. EJERCICIO 10 TRABAJANDO CONREPEATER /// 36. DATALIST Es la combinacin de la flexibilidad de Repetar con la estructurade un GridVIew Permite mostrar a manera de lista vertical u horizontal cualquierhtml creado como plantilla dentro del control Es util para acomodar elementos de forma estructurada en lainterface de usuario Dibuja cada rengln de la fuente de datos como una celda Requiere que se define por lo menos la plantilla ItemTemplate Usamos la propiedad RepeatColumn para especificar cuantoselementos queremos incluir en el rengln Tambien contamos con RepeatDirectin para especificar ladireccin en que el control s eva generandoi 37. EJERCICIO 11 TRABAJANDO CONDATALIST /// 38. PARAMETROS DE DATASOURCE Los controles DataSource soporta coleccin de parmetros paracada distinta operacin Una coleccin de parmetros separada para actualizacin, insertado, seleccionado, eliminado Las fuentes de parmetros pueden ser controles, las cookies, la misma forma, datos de perfil y/o cadena querystring 39. PARMETROS Existen diversas tipos de parmetros Control Parameter Valor que proviene de cualquier control del lado servidor de una pagina Cookie Parameter Valor que proviene de algn dato almacenado en una cookie Form Parameter Valor proveniente de una variable HTTP POST Profile Parameter Valor proveniente del perfil del usuario de alguna propiedad del perfil QueryString Parameter Valor obtenido de la barra de direcciones url Session Parameter Valor obtenido de alguna variable de sesin 40. EJERCICIO 12 TRABAJANDO CONPARAMETROS FILTER Agregamos una nueva pagina aspx Arrastramos la tabla de Customers del server explorer a la pagina Agregamos un cuadro de texto y un botn de buscar Seleccionamos nuestro SqlDataSource y buscamos la propiedadFilterExpression y establecemos el valor CompanyName LIKE%{0}% Configuramos el parmetros 41. EVENTOS DE DATASOURCE Los DataSources exponen eventos, tiles para personalizar el comportamiento y la interaccin que el DataSource va teniendo Es factible entonces agregar parmetrosprogramticamente Desempear operaciones cuando se realizasatisfactoriamente un insert, update, delete, etc. Impedir la ejecucin de alguna operacinprotected basado en alguna validacinvoid SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e) { e.Command.Parameters["CompanyName"].Value = "hola";// tambien se puede cancelar la operacion usandoe.Cancel = true; } 42. VINCULACION DE DOS LADOS LA sintaxis Bind() se puede usar en controles que soportanInsert/Update/Delete Es como Eval() solo que este va dos veces Durante el Select se comporta como Eval() Durante el Inser/Update los valores son mapeados en parmetros y usados para actualizar Se usan en los controles mas comunes como GridView, DetailsView, FormVIew, ListVIew CustomerID: />
CompanyName: />
ContactName: /> 43. EJERCICIO 13 IMPLEMENTANDOUPDATE EN GRIDVIEW CONCONTROLES ADICIONALES 44. FORMVIEW Similar al DetailsView, despliega un rengln No hay generado de HTML por default, tenemos que especificarsu plantilla para desplegar su contenido til cuando queremos personalizar el despliegue visual 45. EJERCICIO 14 CREANDO UN ALTA DEREGISTROS Agregamos una nueva pagina aspx Arrastramos un DetailsView y configuramos el insert explicandoque hay que hacer template cada Field si quisiramos hacer usode los validadores Usamos mejor un FormView y editamos su EditMode a Insert Agregamos validadores 46. LISTVIEW Lo mejor de todos los controles que soportan vinculacin a datos Control orientado a plantilla Puede remplazar a cualquier control que soporta vinculacin de datosSe define elmarcoSe define elelementoSe define suplantilla de muestra 47. DATAPAGER Desacopla la interface de paginacin del ListView agregando unnuevo control especifico para esto Permite usar las opciones de navegacin en donde queramos Podemos crear diversas opciones de pagina para una misma control 48. XMLDATASOURCE Permite vincularlos a fuentes de datos dinstintas a bases dedatos Special para trabajar con datos XML">


49. EJERCICIO 14 CONSUMIENDORSS 50. XMLDATASOURCE Podemoa usar este control para contar con catalogos de datosque sabemo que no cambiaran constantemente No es necesario que se encuentren en la base de datos comotablas aquellos catalogos o elmentos de informacion Lista de estado civil Sexo Tipos de pago Etc 51. EJERCICIO 15 USANDO CATALOGOS Creamos una nueva pagina Agregamos la carpeta App_Data Agregamos una carpeta llamada xml Agregamos un nuevo archivo xml llamado StstusMarital.xml Agregamos el siguiente XML Agregamos un nuevo aspx Arrastramos un XmlDataSource y establecemos propiedad DataFile Agregamos algn DropDownList Vinculamos 52. XMLDATASOURCEAbstract... Abstract... Abstract... 53. EJERCICIO 16 USANDOARBOLES 54. OBJECTDATASOURCE Soporta la vinculacin a un objeto de capa mediaControl ObjetosObjectDataSource Data-boundObjetosFuente depublic static class MiClase { Datosstatic public List OntenerDatos() {List personas = new List();// agregamos personasreturn personas;}} 55. EJERCICIO 17 CREANDO CAPA DEDATOS Agregamos una carpeta de tipo App_Code Agregamos un DataSet Agregamos DataTableAdapter para tabla customer Compilamos Agregamos nueva paginas aspx Agregamos ObJectDataSource Configuramos ObjectDataSource 56. ENTRENAMIENTO EN ACCESO ADATOS EXTREMO CON ASP.NETHaarn GonzalezMicrosoft MCP, MCAD, MCT, MCTS yMVP