• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Entrenamiento en Acceso a Datos con ASP.NET
 

Entrenamiento en Acceso a Datos con ASP.NET

on

  • 1,295 views

Acceso a datos en ASP.NET

Acceso a datos en ASP.NET

Statistics

Views

Total Views
1,295
Views on SlideShare
1,295
Embed Views
0

Actions

Likes
0
Downloads
35
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Entrenamiento en Acceso a Datos con ASP.NET Entrenamiento en Acceso a Datos con ASP.NET Presentation Transcript

    • ENTRENAMIENTO EN ACCESO ADATOS EXTREMO CON ASP.NET Haarón Gonzalez Microsoft MCP, MCAD, MCT, MCTS y MVP
    • GENERALES Sesión de 4 horas No habrá descanso Es un entrenamiento no una capacitación Puedes preguntar en cuanto surja una duda Requieres de Visual Studio 2008 o superior y SQL Express o superior Esta sesión se esta transmitiendo en línea y quedara grabada
    • QUE ES LA VINCULACIÓN DE DATOS ODATABINDINGProceso de carga datos provenientes de una fuente de datos en un control  En .NET los controles que soportan databinding cuentan con  la propiedad DataSource donde asignamos los datos  el método DataBind()para proceder a cargarlos  Para vincular datos en un control ya sea con código o declarativamente establecemos la propiedad DataSource e invocamos el método DataBind()
    • EJERCICIO 1 – CARGANDO DATOSPROGRAMATICAMENTE1. Creamos proyecto de tipo Web Site en Visual Studio2. Agregamos una pagina aspx3. Arrastramos un control GridView4. Programamos código para invocar la fuente de datos en el evento Page_Load
    • 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 = reader GridView1.DataBind()End UsingEnd Using
    • 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(); }}
    • COMO FUNCIONA EL DATABINDING Control DataSourceFuente DataBind() de CacheDatos local de datos Render()
    • ¿QUE CONTROLES DE ASP.NET SOPORTAN 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 DataSetControles HtmlSelect Arrayque CheckBoxList ArrayListsoportan BulletedList HashTablevinculación GridView Queue DetailsView SortedList FormView Vinculados a Stack ListView StringCollection DataList DataView Repeater DataTable DropDownList DataSet ListBox IDataReader RadioButtonList IEnumerable
    • EJERCICIO 2 – CARGANDO DATOS DEUN ARREGLO PROGRAMÁTICAMENTE Agregamos una nueva pagina aspx En el markup arrastramos un control BulletedList En el codebehind agregamos un arreglo de strings y lo inicializamos Asignamos la propiedad DataSource y ejecutamos DataBind() Corremos el aplicativo y revisamos el funcionamiento Agregamos un ListBox, CheckBoxList y asignamos su propiedad DataSource Usamos Page.DataBind();
    • Dim numberArray As String() = New String() {"1", "2", "3", "4"} numberListBox.DataSource = numberArray numberListBox.DataBind()
    • protected void Page_Load(object sender, EventArgs e) { string[] numberArray = new string[] {"1","2","3","4" }; numberListBox.DataSource = numberArray; numberListBox.DataBind(); }
    • DATABINDING DE TIPO TEXTO VALOR Para los controles que soportan cargar solo una dimensión de datos (DropDown, ListBox, etc) también se pueden vincular mediante  Inicialización de la propiedad DataTextField al campo que queremos desplegar en el control  Inicialización de la propiedad DataValueField al campo que queremos usar como el valor identificador de un elemento
    • 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 = ProductName ddl.DataValueField = ProductId ddl.DataBind()End UsingEnd Using
    • 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(); } }
    • EJERCICIO 3 – CARGANDO DATOS DETIPO TEXTO VALOR Usaremos la primer pagina aspx que creamos y agregamos un nuevo control de tipo DropDownList En el código asignamos las propiedades DataSource, DataTextFIeld y DataValueField Invocamos el método DataBind() Corremos Para seleccionar algún elemento vinculado de forma programática usamos la colección Items e invocamos el método FindByText o FindByValue numberListBox.Items.FindByText("3").Selected = true;
    • ORIGEN DE DATOS DECLARATIVA Las fuentes de datos declarativas son una característica agregada en ASP.NET 2.0  SqlDataSource, ObjectDataSource, XmlDataSource, LinqDataSource junto con Visual Studio 2005 en adelante ofrecen un soporte enriquecido para la vinculación y manipulación enriquecida de los campos vinculados
    • ORIGEN DE DATOS DECLARATIVA Sql- Object- Access- Xml- SiteMap-DataSource DataSource DataSource DataSource DataSource Data Site Map Component Provider SQL Any Access XML Site MapsDatabases Data Databases Data
    • VINCULANDO A LAS FUENTES DEDATOS DECLARATIVASA vinculación de datos puede realizarse con o sin código alguno  Soporte desde el diseñador  Integración con herramientas como server Explorer  Modelo de vinculación fácil de extenderse
    • <asp:GridView ID="_productsView"DataSourceID="_productsDataSource" runat="server"> </asp:GridView> <asp:SqlDataSource DataSourceMode="DataReader" ID="_productsDataSource" ConnectionString="DataSource=.sqlexpress;InitialCatalog=Northwind;Integrated Security=True" SelectCommand="SELECT TOP 20 * FROM PRODUCTS" runat="server"> </asp:SqlDataSource>
    • EJERCICIO 4 – DATABINDING DECLARATIVO CON CÓDIGO  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, generación y filtrado  Y con codification cargamos el datasourceGridView1.DataSource = SqlDataSource1.Select(new DataSourceSelectArguments());GridView1.DataBind();
    • EJERCICIO 5 – DATABINDINGDECLARATIVO SIN CÓDIGO Sobre la ultima pagina creada Editamos la declaración del GridView para especificar la propiedad DataSourceID igual al nombre de nuestro control SqlDataSource No olvidemos comentar el código anterior
    • COMO FUNCIONA LA VINCULACIÓN DECLARATIVA A LAS FUENTES DE DATOS Petición GridView IDataSource SqlDataSourceCreateChildControls()EnsureDataBind() SelectDataBind() Cache Database local de datos Render
    • SQLDATASOURCE Soporta todas las interacciones con SQL como lectura, escritura, actualización, eliminación, filtrado, cacheo, ordenado Cuando el DataSource cuenta con algunas de estas propiedades establecidas mas soporte y funcionalidad es posible en los controlesPropiedad DescripcionProviderName System.Data.SqlClient, System.Data.OleDb, System.Data.OracleClientDataSourceMod DataSet o DataReadereSelectCommma Query o el nombre de unnd procedimiento almacenado para seleccionar datosInsertCommand Query o el nombre de un procedimiento almacenado para insertar datosDeleteCommand Query o el nombre de un procedimiento almacenado para eliminar datosUpdateComman Query o el nombre de un
    • EJERCICIO 6 – MANEJANDO LA INSERCIÓN 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 parámetros en general  Invocar programáticamente el procesoprotected void Button1_Click(object sender, EventArgs e) de inserción { SqlDataSource1.InsertParameters["CustomerId"].DefaultValue = "aaaa"; SqlDataSource1.InsertParameters["CompanyName"].DefaultValue = "aaaa"; SqlDataSource1.InsertParameters["ContactName"].DefaultValue = "aaaa"; SqlDataSource1.InsertParameters["ContactTitle"].DefaultValue = "aaaa"; SqlDataSource1.Insert(); }
    • GRIDVIEW Muestra datos en forma tabular, es el sucesor del control DataGrid  Generación de columnas implícita y explicita con capacidad de manejar columnas especiales como  ImageField  CheckBoxField  HyperlinkField  TemplateField  Interacción inteligente con controles DataSource para que de manera predeterminada soporte  Paginación automática, edición, eliminación y ordenamiento De forma automática a los datos vinculados y retorna una Tabla con columnas y renglones en formato HTML 
    • EJERCICIO 7 – GENERANDO GRIDVIEWDIRECTAMENTE DESDE SERVEREXPLORER Creamos una nueva pagina aspx Abrimos el server explores y buscamos la base de datos de Northwind y buscamos la tabla Customers Arrastramos la tabla Customers a la superficie de diseño Visualizamos las opciones del GridView Editamos las columnas para incluir una de tipo hipervínculo para implementar el maestro
    • DETAILSVIEW Soporta el despliegue y manipulación de un solo renglón  Útil para escenarios maestro detalle  Soporta paginado en caso de mostrar mas de un renglón, edición, eliminación e inserción  Genera html en formato de tablas, columnas y renglones
    • EJERCICIO 8 – IMPLEMENTANDODETALLE Creamos una nueva pagina aspx Abrimos el server explores y buscamos la base de datos de Northwind y buscamos la tabla Customers Arrastramos la tabla Customers a la superficie de diseño Visualizamos las opciones del GridView Editamos las columnas para incluir una de tipo hipervínculo
    • TEMPLATE Los controles GridView, DetailsView, ListView, Repeater y DataList permiten la personalización de la apariencia y el manejo de estador a través de plantillas  Provee el marco sobre el cual se despliegan elementos y nos da un grado de flexibilidad para generar nuestro contenido  Nos permite especificar exactamente como se desplegar la información  Maneja el marco y la vinculación, genera tablas solo que con la posibilidad de personalizar la celda  La sintaxis Eval y Bind se usan para extraer datos del renglón actual, Eval obtiene información de solo lectura y Bind es de lectura y escritura, two way binding.
    • Plantilla vinculada delFuente DataBind() de control deDatos DataSource Por cada rengon en la fuente de datos Escribe los datos de acuerdo a nuestra especificacion
    • COMO EXTRAER VALORES DEL LAVINCULACION Los controles que ubicamos en una plantilla necesitan relacionarse con el renglón actual que esta siendo vinculado  Utilizamos la nomenclatura para crear la ventana de acceso a los datos del renglón vinculándose <%# expresion %>  Usamos Eval para extraer los datos  Es factible también programáticamente obtener y establecer los valores del renglón vinculándose
    • EJERCICIO 9 – TRABAJANDO CON RENGLONES VINCULADOS  Creamos una nueva pagina aspx  Abrimos el server explores y buscamos la base de datos de Northwind y buscamos la tabla Customers  Arrastramos la tabla Customers a la superficie de diseño  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 las propiedades emergentes de la etiqueta especificamos la vinculación con que columna<asp:TemplateField> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text=<%# Eval("ContactTitle") %>></asp:Label> </ItemTemplate> </asp:TemplateField>
    • EJERCICIO 9 – TRABAJANDO CON RENGLONES VINCULADOS  Agregamos un botón justo aun lado de la etiqueta y especificamos su nombre como cmdOpcion  Dentro del grid buscamos el evento RowDataBound el cual se dispara por cada renglón que se esta vinculando  Programáticamente especificamos propiedades al botón recién agregadoprotected 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);"); } }
    • REPEATER Este control nos da la posibilidad de manipular a nuestro antojo el HTML generado por el control Soporta el concepto de plantillas Trabaja con los conceptos de vinculación mediante datasources solo que nos da la libertad de generar y dibujar el HTML que se estará generando <asp:DataList ID="DataList1" runat="server" DataKeyField="EmployeeID" DataSourceID="SqlDataSource1"> <ItemTemplate> EmployeeID: <asp:Label ID="EmployeeIDLabel" runat="server"Text=<%# Eval("EmployeeID") %> /> <br /> LastName: <asp:Label ID="LastNameLabel" runat="server" Text=<%# Eval("LastName") %> /> <br /> FirstName: <asp:Label ID="FirstNameLabel" runat="server" Text=<%# Eval("FirstName") %> /> </ItemTemplate> </asp:DataList>
    • EJERCICIO 10 – TRABAJANDO CONREPEATER ///
    • DATALIST Es la combinación de la flexibilidad de Repetar con la estructura de un GridVIew Permite mostrar a manera de lista vertical u horizontal cualquier html creado como plantilla dentro del control Es util para acomodar elementos de forma estructurada en la interface de usuario Dibuja cada renglón de la fuente de datos como una celda Requiere que se define por lo menos la plantilla ItemTemplate Usamos la propiedad RepeatColumn para especificar cuantos elementos queremos incluir en el renglón Tambien contamos con RepeatDirectin para especificar la dirección en que el control s eva generandoi
    • EJERCICIO 11 – TRABAJANDO CONDATALIST ///
    • PARAMETROS DE DATASOURCE Los controles DataSource soporta colección de parámetros para cada distinta operación  Una colección de parámetros separada para actualización, insertado, seleccionado, eliminado  Las fuentes de parámetros pueden ser controles, las cookies, la misma forma, datos de perfil y/o cadena querystring
    • PARÁMETROS Existen diversas tipos de parámetros  Control Parameter  Valor que proviene de cualquier control del lado servidor de una pagina  Cookie Parameter  Valor que proviene de algún 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 sesión
    • 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 botón de buscar Seleccionamos nuestro SqlDataSource y buscamos la propiedad FilterExpression y establecemos el valor CompanyName LIKE ‘%{0}%’ Configuramos el parámetros
    • EVENTOS DE DATASOURCE  Los DataSources exponen eventos, útiles para personalizar el comportamiento y la interacción que el DataSource va teniendo  Es factible entonces agregar parámetros programáticamente  Desempeñar operaciones cuando se realiza satisfactoriamente un insert, update, delete, etc.  Impedir la ejecución de alguna operaciónprotected basado en alguna validación void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e) { e.Command.Parameters["CompanyName"].Value = "hola"; // tambien se puede cancelar la operacion usando e.Cancel = true; }
    • VINCULACION DE DOS LADOS LA sintaxis Bind() se puede usar en controles que soportan Insert/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 parámetros y usados para actualizar  Se usan en los controles mas comunes como GridView, DetailsView, FormVIew, ListVIew <ItemTemplate> CustomerID: <asp:Label ID="CustomerIDLabel" runat="server" Text=<%# Eval("CustomerID") %> /> <br /> CompanyName: <asp:Label ID="CompanyNameLabel" runat="server" Text=<%# Bind("CompanyName") %> /> <br /> ContactName: <asp:Label ID="ContactNameLabel" runat="server" Text=<%# Bind("ContactName") %> />
    • EJERCICIO 13 – IMPLEMENTANDOUPDATE EN GRIDVIEW CONCONTROLES ADICIONALES
    • FORMVIEW Similar al DetailsView, despliega un renglón No hay generado de HTML por default, tenemos que especificar su plantilla para desplegar su contenido  Útil cuando queremos personalizar el despliegue visual
    • EJERCICIO 14 – CREANDO UN ALTA DEREGISTROS Agregamos una nueva pagina aspx Arrastramos un DetailsView y configuramos el insert explicando que hay que hacer template cada Field si quisiéramos hacer uso de los validadores Usamos mejor un FormView y editamos su EditMode a Insert Agregamos validadores
    • LISTVIEW  Lo mejor de todos los controles que soportan vinculación a datos  Control orientado a plantilla  Puede remplazar a cualquier control que soporta vinculación de datos Se define el marcoSe define elelementoSe define suplantilla de muestra
    • DATAPAGER  Desacopla la interface de paginación del ListView agregando un nuevo control especifico para esto  Permite usar las opciones de navegación en donde queramos  Podemos crear diversas opciones de pagina para una misma control<asp:DataPager ID="DataPager1" runat="server"> <Fields> <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> <asp:NumericPagerField /> <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> </Fields> </asp:DataPager>
    • XMLDATASOURCE  Permite vincularlos a fuentes de datos dinstintas a bases de datos  Special para trabajar con datos XML<asp:ListView ID="ListView1" DataSourceID="XmlDataSource1" runat="server"> <LayoutTemplate> <asp:PlaceHolder runat="server" ID="itemPlaceholder" /> </LayoutTemplate> <ItemTemplate> <a href="<%# XPath("link") %>"> <%# XPath("title") %></a><br /> <p ><%# XPath("description") %></p> <br /> </ItemTemplate> </asp:ListView> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="http://feeds.feedburner.com/msmvps/gXSK"XPath="/rss/channel/item"> </asp:XmlDataSource>
    • EJERCICIO 14 – CONSUMIENDORSS
    • XMLDATASOURCE Podemoa usar este control para contar con catalogos de datos que sabemo que no cambiaran constantemente No es necesario que se encuentren en la base de datos como tablas aquellos catalogos o elmentos de informacion  Lista de estado civil  Sexo  Tipos de pago  Etc…
    • 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 <?xml version="1.0" encoding="utf-8" ?> <StatusMarital> Arrastramos un XmlDataSource y <item Name="" Value="0" /> establecemos propiedad DataFile <item Name="Married" Value="1" /> <item Name="Single" Value="2" /> Agregamos algún DropDownList <item Name="Divorced" Value="3" /> <item Name="Widowed" Value="4" /> Vinculamos <item Name="Other" Value="5" /> </StatusMarital>
    • XMLDATASOURCE<Bookstore> <genre name="Business"> <book ISBN="BU1032" Title="The Busy Executives Database Guide" Price="19.99"> <chapter num="1" name="Introduction"> Abstract... </chapter> <chapter num="2" name="Body"> Abstract... </chapter> <chapter num="3" name="Conclusion"> Abstract... </chapter> </book></genre></book><asp:XmlDataSource ID="XmlDataSource2" runat="server" DataFile="~/App_Data/xml/Bookstore.xml"></asp:XmlDataSource> <asp:TreeView ID="TreeView1" runat="server"DataSourceID="XmlDataSource2"> <DataBindings> <asp:TreeNodeBinding DataMember="chapter" ValueField="name" /> <asp:TreeNodeBinding DataMember="book" ValueField="title" /> <asp:TreeNodeBinding DataMember="genre" ValueField="name" /> </DataBindings> </asp:TreeView>
    • EJERCICIO 16 – USANDOARBOLES
    • OBJECTDATASOURCE  Soporta la vinculación a un objeto de capa media Control Objetos ObjectDataSource Data-bound Objetos<asp:ObjectDataSource ID=“obj” runat=“server”SelectMethod=“ObtenerDatos”TypeName=“MiClase” /> Fuente depublic static class MiClase { Datosstatic public List<Persona> OntenerDatos() {List<Persona> personas = new List<Persona>();// agregamos personasreturn personas;}}
    • 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
    • ENTRENAMIENTO EN ACCESO ADATOS EXTREMO CON ASP.NET Haarón Gonzalez Microsoft MCP, MCAD, MCT, MCTS y MVP