Главная страница
Навигация по странице:

  • Office

  • Новые Лпр-ки. Веб ЛПР новые (1). Лабораторная работа Разработка базовой основы Web приложения 5 Упражнение Создание Web приложения 5


    Скачать 1.04 Mb.
    НазваниеЛабораторная работа Разработка базовой основы Web приложения 5 Упражнение Создание Web приложения 5
    АнкорНовые Лпр-ки
    Дата19.03.2022
    Размер1.04 Mb.
    Формат файлаdocx
    Имя файлаВеб ЛПР новые (1).docx
    ТипЛабораторная работа
    #403967
    страница16 из 27
    1   ...   12   13   14   15   16   17   18   19   ...   27

    Упражнение 1. Отображение и обновление связанных данных в элементе GridView


    1. Создайте новую страницу Instructors.aspx, основанная на странице Site.Master и добавьте следующую разметку в элемент Content с именем Content2:

    Instructors





    runat="server"

    ConnectionString="name=SchoolEntities" DefaultContainerName="SchoolEntities"

    EnableFlattening="False"

    EntitySetName="People" Where="it.HireDate is not null"

    Include="OfficeAssignment" EnableUpdate="True">





    Эта разметка создает элемент EntityDataSource, который выбирает инструкторов и позволяет выполнять обновления.

    1. Между разметкой EntityDataSource и закрывающим тегом

    добавьте код разметки для создания элементов GridView и

    Label (этот элемент будет отображать сообщения об ошибках):

    runat="server" AllowPaging="True" AllowSorting="True"

    AutoGenerateColumns="False" DataKeyNames="PersonID" DataSourceID="InstructorsEntityDataSource"
    OnSelectedIndexChanged="InstructorsGridView_SelectedIndexChanged" SelectedRowStyle-BackColor="LightGray"

    onrowupdating="InstructorsGridView_RowUpdating">



    ShowEditButton="True" />

    SortExpression="LastName">



    runat="server" Text='<%# Eval("LastName") %>'>,

    ID="InstructorFirstNameLabel" runat="server" Text='<%# Eval("FirstMidName") %>'>





    ID="InstructorLastNameTextBox" runat="server" Text='<%# Bind("FirstMidName") %>' Width="7em">

    ID="InstructorFirstNameTextBox" runat="server" Text='<%# Bind("LastName") %>' Width="7em">





    SortExpression="HireDate">



    runat="server" Text='<%# Eval("HireDate", "{0:d}")

    %>'>






    ID="InstructorHireDateTextBox" runat="server" Text='<%# Bind("HireDate", "{0:d}") %>' Width="7em">





    SortExpression="OfficeAssignment.Location">



    runat="server" Text='<%# Eval("OfficeAssignment.Location")

    %>'>






    ID="InstructorOfficeTextBox" runat="server"

    Text='<%# Eval("OfficeAssignment.Location") %>' Width="7em"
    oninit="InstructorOfficeTextBox_Init">







    BackColor="LightGray">




    Text="" Visible="false" ViewStateMode="Disabled">
    Элемент GridView позволяет выбрать строку, подчеркивает выбранную строку с легким серым фоном, и определяет обработчики событий (которые вы создадите позже) SelectedIndexChanged и Updating. Он также указывает PersonId для свойства DataKeyNames, так что значение ключа выбранной строки могут быть переданы другому элементу управления, что вы будете добавлять позже.

    В последнем столбце содержится значение офиса инструктора, который хранится в навигационном свойстве сущности Person, потому что он приходит от соответствующего экземпляра. Обратите внимание, что элемент EditItemTemplate определяет Eval вместо Bind, потому что GridView управления не может непосредственно связываться с навигационными свойствами для того, чтобы обновить их. Вы обновить назначение офис в коде. Чтобы сделать это, вам нужно ссылка элемент TextBox, и вы получите и сохраните, что в случае события Init элемента управления TextBox.

    После элемента GridView добавлен элемент Label, который используется для сообщений об ошибках. Свойство Visible изначально установлено в false и состояние просмотра отключено, так что сообщение появится только тогда, когда произойдет ошибка.

    1. Откройте файл Instructors.aspx.cs и добавьте выражение using: using ContosoUniversity.DAL;

    2. Добавьте ссылку на текстовое поле непосредственно после объявления класса:

    private TextBox instructorOfficeTextBox;

    1. Добавьте заглушку обработчика события SelectedIndexChanged

    (код будет добавлен позже).

    protected void InstructorsGridView_SelectedIndexChanged(object sender, EventArgs e)

    {

    }

    1. Добавьте обработчик события Init элемента управления InstructorOfficeTextBox, в котором сохраните ссылку на элемент TextBox. Вы будете использовать эту ссылку, чтобы получить значение, введенное пользователем при обновлении.

    protected void InstructorOfficeTextBox_Init(object sender, EventArgs e)

    {

    instructorOfficeTextBox = sender as TextBox;

    }

    Вы будете использовать событие Updating элемента GridView, чтобы обновить свойство Location, связанное с сущностью OfficeAssignment.

    1. Добавьте следующий обработчик для события Updating: protected void

    InstructorsGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)

    {

    using (var context = new SchoolEntities())

    {

    var instructorBeingUpdated = Convert.ToInt32(e.Keys[0]);

    var officeAssignment = (from o in context.OfficeAssignments


    instructorBeingUpdated

    try

    {

    where o.InstructorID == select o).FirstOrDefault();

    if (String.IsNullOrWhiteSpace(instructorOfficeTextBox.Text)

    == false)

    {

    if (officeAssignment == null)

    {
    context.OfficeAssignments.AddObject(OfficeAssignment.Creat eOfficeAssignment(instructorBeingUpdated, instructorOfficeTextBox.Text, null));

    }

    else

    {

    officeAssignment.Location = instructorOfficeTextBox.Text;

    }

    }

    else

    {

    if (officeAssignment != null)

    {
    context.DeleteObject(officeAssignment);

    }

    }

    context.SaveChanges();

    }

    catch (Exception)

    {

    e.Cancel = true; ErrorMessageLabel.Visible = true;


    failed.";

    }

    }

    ErrorMessageLabel.Text = "Update
    //Add code to log the error.

    }

    Этот код запускается, когда пользователь нажимает Update в строке элемента GridView. Код использует LINQ to Entities, чтобы получить сущность OfficeAssignment, которая связана с текущей сущностью Person, используя PersonId выбранной строки из аргумента события.

    1. Запустите страницу Instructors.aspxв обозревателе.

    2. Кликните Edit (Правка), отобразятся текстовые поля. 10.Измените все значения, в том числе и поле Office Assignment.

    Кликните Update (Обновить) и вы увидите изменения, отраженные в списке.
    1   ...   12   13   14   15   16   17   18   19   ...   27


    написать администратору сайта