Поделиться через


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

Обновлен: Ноябрь 2007

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

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

Обязательные компоненты

Для реализации процедур в собственной среде разработки потребуются:

  • Visual Studio 2008 либо Visual Web Developer, экспресс-выпуск

  • Приложение SQL Server, экспресс-выпуск, установленное на компьютере. Если приложение 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 с примерами данных несколько записей.

    В окне Обозреватель серверов щелкните правой кнопкой мыши таблицу MovieReviews и выберите команду Показать таблицу данных. Значение MovieID указывать не нужно, так как оно генерируется базой данных.

Создание классов для представления сущностей баз данных

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

Создание класса для таблицы 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

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

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

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

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

    Для свойства ID можно оставить значение LinqDataSource1.

    Добавьте элемент управления LinqDataSource в окно конструктора

  3. Присвойте свойству ContextTypeName значение ReviewsDataContext.

  4. Присвойте свойству TableName значение MovieReviews.

  5. Присвойте свойству AutoPage значение true и переключитесь в представление исходного кода.

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

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

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

Добавление элемента управления для отображения данных

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

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

  1. На вкладке Данныепанели элементов дважды щелкните элемент управления DetailsView, чтобы добавить его на страницу.

    Для свойства ID можно оставить значение DetailsView1.

  2. Присвойте свойству DataSourceID значение LinqDataSource1.

  3. Присвойте свойству DataKeyNames значение MovieID.

  4. Задайте для AllowPaging значение true.

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

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      ID="DetailsView1" 
      runat="server">
    </asp:DetailsView>
    
  5. Сохраните изменения и нажмите сочетание клавиш CTRL+F5 для просмотра страницы в обозревателе.

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

Предоставление пользователям разрешения на обновление, вставку и удаление данных

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

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

  1. В элементе управления LinqDataSource присвойте свойствам EnableUpdate, EnableInsert и EnableDelete значение true.

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

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      runat="server">
    </asp:LinqDataSource>
    
  2. В элементе управления DetailsView присвойте свойствам AutoGenerateEditButton, AutoGenerateInsertButton и AutoGenerateDeleteButton значение true.

  3. Чтобы задать, какие поля отображаются в элементе управления DetailsView и их порядок, присвойте свойству AutoGenerateRows значение false.

  4. Добавьте поля для столбцов "Название", "Театр", "Оценка" и "Просмотр" и привяжите их к соответствующим полям данных.

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

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AutoGenerateEditButton="true"
      AutoGenerateInsertButton="true"
      AutoGenerateDeleteButton="true"
      AllowPaging="true" 
      ID="DetailsView1" 
      runat="server">
      <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>
    

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

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

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

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

Следующие действия

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

См. также

Основные понятия

Общие сведения о серверном веб-элементе управления LinqDataSource