Compartir a través de


Tutorial: Recuperar, actualizar, insertar y eliminar datos con los controles LinqDataSource y DetailsView

Actualización: noviembre 2007

En este tutorial creará una tabla de base de datos sencilla y una página web que usa el control LinqDataSource. La página web permite a los usuarios recuperar, actualizar, insertar y eliminar datos de la tabla de base de datos. Usará un control DetailsView para mostrar los datos. El control LinqDataSource permite realizar todas estas operaciones sin escribir instrucciones Select, Update, Insert ni Delete.

Usará Diseñador relacional de objetos para crear una clase que represente la tabla de base de datos que contiene los valores. El control LinqDataSource interactuará con esta clase generada para recuperar, actualizar, insertar y eliminar los datos.

Requisitos previos

Para implementar los procedimientos en su propio entorno de desarrollo, necesitará:

  • Visual Studio 2008 o Visual Web Developer Express

  • SQL Server Express Edition instalado en el equipo. Si tiene SQL Server instalado, puede usarlo, pero debe realizar pequeños ajustes en algunos procedimientos.

  • Un sitio Web de ASP.NET.

Crear una tabla de base de datos

Para realizar los pasos de este tutorial, debe disponer de una tabla de base de datos. Si aún no dispone de una tabla, puede crearla con el procedimiento siguiente. Si usa una tabla existente, los pasos en algunos de los procedimientos no coincidirán exactamente con su base de datos. Sin embargo, los conceptos ilustrados en el tutorial serán los mismos.

Para crear una tabla de base de datos

  1. Si el sitio web no tiene todavía una carpeta App_Data, en el Explorador de soluciones, haga clic con el botón secundario en el proyecto, haga clic en Agregar carpeta ASP.NET y, a continuación, en App_Data.

  2. Haga clic con el botón secundario en la carpeta App_Data y, a continuación, haga clic en Agregar nuevo elemento.

  3. En Plantillas instaladas, seleccione Base de datos de SQL, cambie el nombre de archivo a Reviews.mdf y, a continuación, haga clic en Agregar.

  4. En el Explorador de servidores, abra el nodo Reviews.mdf y, a continuación, haga clic con el botón secundario en la carpeta Tablas.

  5. Haga clic en Agregar nueva tabla.

  6. Cree las columnas siguientes en la tabla:

    Nombre de columna

    Tipo de datos

    Propiedades

    MovieID

    int

    IsIdentity = Sí

    Not null

    Clave principal

    Title

    nvarchar(50)

    Theater

    nvarchar(50)

    Review

    nvarchar(1000)

    Score

    int

    Not null

  7. Guarde la tabla y asígnele el nombre MovieReviews.

  8. Agregue varios registros a la tabla MovieReviews con datos de ejemplo.

    En el Explorador de servidores, haga clic con el botón secundario en la tabla MovieReviews y haga clic en Mostrar datos de tabla. No tiene que especificar un valor para MovieID porque la base de datos genera este valor.

Crear clases para representar entidades de base de datos

Para trabajar con el control LinqDataSource, trabaja con clases que representan entidades de base de datos. Puede usar una herramienta de Visual Studio 2008 o Visual Web Developer Express para crear estas clases.

Para crear una clase para la tabla MovieReviews

  1. Si el sitio web no tiene todavía una carpeta App_Code, en el Explorador de soluciones, haga clic con el botón secundario en el proyecto, haga clic en Agregar carpeta ASP.NET y, a continuación, en App_Code.

  2. Haga clic con el botón secundario del mouse en la carpeta App_Code y, a continuación, haga clic en Agregar nuevo elemento.

  3. En Plantillas instaladas, seleccione la plantilla Clases de LINQ to SQL, cambie el nombre del archivo a Reviews.dbml y, a continuación, haga clic en Agregar.

    Se muestra el Diseñador relacional de objetos.

  4. En el Explorador de servidores, arrastre la tabla MovieReviews a la ventana Diseñador relacional de objetos.

    La tabla MovieReviews y sus columnas se representan como una entidad denominada MovieReview en la ventana del diseñador.

  5. Guarde el archivo Reviews.dbml.

  6. En el Explorador de soluciones, abra el archivo Reviews.designer.cs o Reviews.designer.vb.

    Observe que ahora incluye clases para ReviewsDataContext y MovieReview. La clase ReviewsDataContext representa la base de datos y la clase MovieReview representa la tabla de base de datos. El constructor sin parámetros de la clase ReviewsDataContext lee la cadena de conexión del archivo Web.config.

  7. Abra el archivo Web.config.

    Observe que la cadena de conexión se ha agregado en el elemento connectionStrings.

  8. Cierre el archivo de clase y el archivo Web.config.

Crear y configurar un control LinqDataSource

Ahora que cuenta con una tabla de base de datos y clases que representan las entidades de base de datos, puede usar un control LinqDataSource en una página web ASP.NET para administrar los datos.

Para crear y configurar un control LinqDataSource

  1. En Visual Studio, cree una nueva página web ASP.NET y cambie a la vista Diseño.

  2. En la ficha Datos del Cuadro de herramientas, arrastre un control LinqDataSource y colóquelo dentro del elemento form en la página web.

    Puede dejar la propiedad ID como LinqDataSource1.

  3. Establezca la propiedad ContextTypeName en ReviewsDataContext.

  4. Establezca la propiedad TableName en MovieReviews.

  5. Establezca AutoPage en true y cambie a la vista Código fuente.

    En el ejemplo siguiente se muestra el marcado declarativo del control LinqDataSource.

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    

    Observe que no tuvo que especificar ningún comando de base de datos para seleccionar los datos.

Agregar un control para mostrar datos

Ahora puede agregar un control DetailsView y enlazarlo al control LinqDataSource. El control DetailsView permite a los usuarios ver datos administrados por el control LinqDataSource.

Para conectar los datos de LinqDataSource a DetailsView

  1. En la ficha Datos del Cuadro de herramientas, haga doble clic en el control DetailsView para agregarlo a la página.

    Puede dejar la propiedad ID como DetailsView1.

  2. Establezca la propiedad DataSourceID en LinqDataSource1.

  3. Establezca la propiedad DataKeyNames en MovieID.

  4. Establezca AllowPaging en true.

    En el ejemplo siguiente se muestra el marcado declarativo del control DetailsView.

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      ID="DetailsView1" 
      >
    </asp:DetailsView>
    
  5. Guarde los cambios y presione CTRL+F5 para ver la página en un explorador.

    El control DetailsView muestra los valores del registro actual de la tabla MovieReviews. El control DetailsView crea automáticamente los controles web para mostrar cada columna de la tabla de base de datos.

Permitir a los usuarios actualizar, insertar y eliminar datos

El control LinqDataSource puede crear los comandos para actualizar, insertar y eliminar datos.

Para habilitar operaciones de actualización, inserción y eliminación

  1. En el control LinqDataSource, establezca las propiedades EnableUpdate, EnableInsert y EnableDelete en true.

    En el ejemplo siguiente se muestra el marcado declarativo del control LinqDataSource.

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    
  2. En el control DetailsView, establezca las propiedades AutoGenerateEditButton, AutoGenerateInsertButton y AutoGenerateDeleteButton en true.

  3. Para limitar los campos que se muestran en el control DetailsView y establecer el orden de los campos, establezca la propiedad AutoGenerateRows en false.

  4. Agregue campos para las columnas Title, Theater, Rating y Review, y enlácelos a los campos de datos correspondientes.

    En el ejemplo siguiente se muestra el marcado declarativo del control DetailsView.

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AutoGenerateEditButton="true"
      AutoGenerateInsertButton="true"
      AutoGenerateDeleteButton="true"
      AllowPaging="true" 
      ID="DetailsView1" 
      >
      <Fields>
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Theater" DataField="Theater" />
        <asp:BoundField HeaderText="Number of Stars" DataField="Score" />
        <asp:BoundField HeaderText="Review" DataField="Review" />
      </Fields>
    </asp:DetailsView>
    

    La columna MovieID se selecciona en el origen de datos con las otras columnas. Sin embargo, no se muestra en el control DetailsView y el usuario no podrá modificar su valor. Se debe seleccionar la propiedad MovieID para permitir al control LinqDataSource crear automáticamente los comandos para actualizar, insertar y eliminar datos.

    Observe que no tuvo que especificar comandos para estas operaciones de datos.

  5. Guarde los cambios y presione CTRL+F5 para ver la página en un explorador.

    El control DetailsView muestra los campos del registro actual de la tabla MovieReviews. Puede actualizar, insertar y eliminar registros si hace clic en los botones correspondientes del control DetailsView.

Pasos siguientes

Este tutorial ha mostrado la funcionalidad básica de la actualización, inserción y eliminación de registros con el control LinqDataSource. Para obtener información sobre las funciones adicionales del control LinqDataSource, puede hacer lo siguiente:

Vea también

Conceptos

Información general sobre el control de servidor web LinqDataSource