Пошаговое руководство. Извлечение, обновление, вставка и удаление данных с помощью элементов управления LinqDataSource и DetailsView

Visual Studio 2010

В этом пошаговом руководстве создается простая база данных и веб-страница, на которой используется элемент управления LinqDataSource. Веб-страница позволяет пользователям извлечь, обновить, вставить и удалить данные из таблицы базы данных. Для отображения данных используется элемент управления DetailsView. Элемент управления LinqDataSource позволяет выполнять все эти операции без создания операторов Select, Update, Insert или Delete.

Реляционный конструктор объектов используется для создания класса, представляющего таблицу базы данных, которая содержит значения. Элемент управления LinqDataSource взаимодействует с этим созданным классом для извлечения, обновления, вставки и удаления данных.

Для реализации этих процедур в вашей собственной среде разработки потребуется следующее.

  • Visual Studio 2010 или Visual Web Developer Express.

  • SQL Server Express, установленный на компьютере. Если SQL Server установлен, можно использовать его, однако необходимо внести незначительные изменения в некоторые процедуры.

  • Веб-узел ASP.NET.

Для выполнения инструкций данного пошагового руководства требуется таблица базы данных. Если таблица отсутствует, ее можно создать с помощью следующей процедуры. Если используется существующая таблица, действия, описанные в некоторых процедурах, не будут точно соответствовать базе данных. Однако концепции, описанные в данном пошаговом руководстве, останутся такими же.

Создание таблицы базы данных

  1. Если веб-узел еще не содержит папку App_Data, то в окне Обозреватель решений щелкните правой кнопкой мыши проект, нажмите кнопку Добавить папку ASP.NET и затем нажмите App_Data.

  2. Щелкните правой кнопкой мыши папку App_Data и выберите команду Добавить новый элемент.

  3. В разделе Установленные шаблоны выберите База данных SQL, измените имя файла на Reviews.mdf, а затем нажмите кнопку Добавить.

    Добавьте элемент базы данных SQL с именем Reviews.mdf
  4. Откройте узел Reviews.mdf в обозревателе сервера и щелкните правой кнопкой мыши папку Таблицы.

  5. Нажмите кнопку Добавить новую таблицу.

  6. Создайте в таблице следующие столбцы:

    Имя столбца

    Тип данных

    Свойства

    MovieID

    int

    IsIdentity = Yes

    Не Null

    Первичный ключ

    Название

    nvarchar(50)

    Театр

    nvarchar(50)

    Анализ

    nvarchar(1000)

    Оценка

    int

    Не Null

    Создайте таблицы базы данных
  7. Сохраните таблицу и назовите ее MovieReviews.

  8. В окне Обозреватель серверов щелкните правой кнопкой мыши таблицу MovieReviews и выберите команду Показать таблицу данных.

    Открытие таблицы для добавления данных.
  9. Добавьте значения для полей вручную. Значение MovieID указывать не нужно, так как оно генерируется базой данных.

    Добавление данных в таблицу.

Для работы с элементом управления LinqDataSource используются классы, представляющие сущности базы данных. Для создания этих классов можно использовать средства в Visual Studio 2010 или Visual Web Developer Express.

Создание класса для таблицы MovieReviews

  1. Если веб-узел еще не содержит папку App_Code, то в Обозревателе решений щелкните правой кнопкой мыши проект, выберите команду Добавить папку ASP.NET и затем выберите App_Code.

  2. Щелкните правой кнопкой мыши папку App_Code и выберите команду Добавить новый элемент.

  3. В группе Установленные шаблоны выберите шаблон Классы преобразования языка LINQ в язык SQL, переименуйте файл Reviews.dbml и нажмите кнопку Добавить.

    Добавьте элемент LINQ to SQL с именем Reviews.dbml

    Открывается Реляционный конструктор объектов.

  4. В окне обозревателя серверов перетащите таблицу MovieReviews в окно Реляционный конструктор объектов.

    Таблица MovieReviews и ее столбцы представлены как запись с именем MovieReview в окне конструктора.

    Просмотрите новую таблицу в реляционном конструкторе объектов
  5. Сохраните файл Reviews.dbml.

  6. В обозревателе решений откройте файл Reviews.designer.cs или Reviews.designer.vb.

    Обратите внимание, что теперь в нем содержатся классы для ReviewsDataContext и MovieReview. Класс ReviewsDataContext представляет базу данных, а класс MovieReview представляет таблицу этой базы данных. Конструктор без параметров для класса ReviewsDataContext считывает строку подключения из файла Web.config.

  7. Откройте файл Web.config.

    Обратите внимание на то, что строка подключения была добавлена в элемент connectionStrings.

  8. Закройте файл класса и файл Web.config.

Когда у вас есть таблица базы данных и классы, представляющие записи базы данных, для управления данными можно воспользоваться элементом управления LinqDataSource на веб-странице ASP.NET.

Создание и настройка элемента управления LinqDataSource

  1. В Visual Studio создайте новую веб-страницу ASP.NET и переключитесь в представление конструирования.

  2. С вкладки Данныепанели элементов перетащите элемент управления LinqDataSource в элемент form на веб-странице.

    Для свойства идентификатора можно оставить значение LinqDataSource1.

    Добавьте элемент управления LinqDataSource в окно конструктора
  3. В области смарт-тега нажмите кнопку Настройка источника данных.

    Выбор задачи настройки источника данных.
  4. В диалоговом окне Настройка источника данных выберите ReviewsDataContext.

    Выбор источника данных.
  5. Присвойте свойству TableName значение MovieReviews.

    Выбор таблицы.

    В следующем примере показана разметка для элемента управления LinqDataSource.

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      ID="LinqDataSource1" 
      runat="server">
    </asp:LinqDataSource>
    

    Обратите внимание, что не требовалось задавать какие-либо команды базы данных для выбора данных.

Теперь можно добавить элемент управления DetailsView и привязать его к элементу управления LinqDataSource. Элемент управления DetailsView позволяет пользователям просматривать данные, управляемые элементом управления LinqDataSource.

Подключение данных из LinqDataSource к DetailsView

  1. Перейдите в представление Конструктор.

  2. С вкладки Данныепанели элементов перетащите элемент управления DetailsView на страницу.

    Для свойства идентификатора можно оставить значение DetailsView1.

  3. В области смарт-тега задайте источник данных LinqDataSource1..

    Установка источника данных.
  4. Выберите параметр Постраничный просмотр.

    В следующем примере показана разметка для элемента управления DetailsView. Обратите внимание, что свойство DataKeyNames было автоматически расположено в поле основного ключа в таблице, и было добавлено связанное поле для каждого поля в таблице.

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      AutoGenerateRows="False"
      ID="DetailsView1" 
      runat="server"
      Height="50px"
      Width="125px">
      <Fields>
        <asp:BoundField 
             DataField="MovieID" 
             HeaderText="MovieID" 
             InsertVisible="False" 
             ReadOnly="True" 
             SortExpression="MovieID" />
        <asp:BoundField 
             DataField="Title" 
             HeaderText="Title" 
             SortExpression="Title" />
        <asp:BoundField 
             DataField="Theater" 
             HeaderText="Theater" 
             SortExpression="Theater" />
        <asp:BoundField 
             DataField="Review" 
             HeaderText="Review" 
             SortExpression="Review" />
        <asp:BoundField 
             DataField="Score" 
             HeaderText="Score" 
             SortExpression="Score" />
      </Fields>
    </asp:DetailsView>
    
  5. Сохраните изменения и нажмите сочетание клавиш CTRL + F5 для отображения страницы в обозревателе.

    Элемент управления DetailsView отображает значения для текущей записи из таблицы MovieReviews.

Элемент управления LinqDataSource может создавать команды для обновления, вставки и удаления данных.

Разрешение операций обновления, вставки и удаления

  1. В элементе управления LinqDataSource выберите параметры Разрешить удаление, Разрешить вставку и Разрешить обновление.

    Включение обновления, вставки и удаления.

    В следующем примере показана декларативная разметка для элемента управления LinqDataSource.

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      runat="server">
    </asp:LinqDataSource>
    
  2. В элементе управления DetailsView выберите параметры Разрешить вставку, Разрешить редактирование и Разрешить удаление.

    Включение вставки, обновления и удаления.

    В следующем примере показана декларативная разметка для элемента управления DetailsView.

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AllowPaging="true" 
      ID="DetailsView1" 
      runat="server"
      Height="50px" 
      Width="125px">
      <Fields>
        <asp:BoundField 
             DataField="MovieID" 
             HeaderText="MovieID" 
             InsertVisible="False" 
             ReadOnly="True" 
             SortExpression="MovieID" />
        <asp:BoundField 
             DataField="Title" 
             HeaderText="Title" 
             SortExpression="Title" />
        <asp:BoundField 
             DataField="Theater" 
             HeaderText="Theater" 
             SortExpression="Theater" />
        <asp:BoundField 
             DataField="Review" 
             HeaderText="Review" 
             SortExpression="Review" />
        <asp:BoundField 
             DataField="Score" 
             HeaderText="Score" 
             SortExpression="Score" />
        <asp:CommandField 
             ShowDeleteButton="True" 
             ShowEditButton="True" 
             ShowInsertButton="True" />
      </Fields>
    </asp:DetailsView>
    

    Столбец MovieID выбирается из источника данных вместе с другими столбцами. Однако он не отображается в элементе управления DetailsView, и пользователь не может изменить значение в нем. Чтобы настроить элемент управления LinqDataSource на автоматическое создание команд для обновления, вставки и удаления данных, необходимо выбрать свойство MovieID.

    Обратите внимание на то, что указывать команды для этих операций с данными не нужно.

  3. Сохраните изменения и нажмите клавиши CTRL+F5 для отображения страницы в обозревателе.

    Элемент управления DetailsView отображает поля для текущей записи из таблицы MovieReviews. Записи можно обновлять, вставлять и удалять, нажимая соответствующие кнопки на элементе управления DetailsView.

В данном пошаговом руководстве демонстрируется базовая функциональность операций обновления, вставки и удаления записей с помощью элемента управления LinqDataSource. Для получения сведений о дополнительных возможностях элемента управления LinqDataSource можно выполнить следующие действия:

Показ: