Новые Лпр-ки. Веб ЛПР новые (1). Лабораторная работа Разработка базовой основы Web приложения 5 Упражнение Создание Web приложения 5
Скачать 1.04 Mb.
|
Упражнение 3. Применение события "Selected" EntityDataSource для отображения связанных данныхВ этом упражнении вы отобразите всех зачисленных студентов для определенного курса. Чтобы сделать это, вы будете использовать событие Selected элемента управления EntityDataSource связанного с курсом в DetailsView. В файл Instructors.aspxдобавьте код разметки после элемента DetailsView: Student GradesNo student grades found.
runat="server" Text='<%# Eval("Person.LastName") %>' />, Этот код разметки создает элемент ListView, который отображает список студентов и их оценки для выбранного курса. Источник данных не задан, потому что вы выполните привязку в коде. Элемент EmptyDataTemplate обеспечивает сообщение для отображения, когда ничего не выбрано. Элемент LayoutTemplate создает HTML таблицу для отображения списка, а ItemTemplate определяет столбцы для отображения. ID студента и оценка студента определяются в сущности StudentGrade, имя студента выбирается из сущности Person, которую Entity Framework делает доступным в свойстве навигации Person сущности StudentGrade. В файле Instructors.aspx.cs реализуйте метод CourseDetailsEntityDataSource_Selected следующим образом: protected void CourseDetailsEntityDataSource_Selected(object sender, EntityDataSourceSelectedEventArgs e) { var course = e.Results.Cast if (course != null) { var studentGrades = course.StudentGrades.ToList(); GradesListView.DataSource = studentGrades; GradesListView.DataBind(); } } Аргумент этого события обеспечивает выбранные данные в виде коллекции, которая будет иметь нулевые элементы, если ничего не выбрано, или один пункт, если выбран объект Course. Если выбран объект Course, код использует первый метод, чтобы преобразовать коллекцию к одному объекту. Затем она получает StudentGrade объекты из свойства навигации, преобразует их в коллекции, и связывает элемент GradesListView в коллекцию. Для очистки отображения в классе Instructors создайте следующий метод: private void ClearStudentGradesDataSource() { var emptyStudentGradesList = new List GradesListView.DataSource = emptyStudentGradesList; GradesListView.DataBind(); } Вызовите этот метод в обработчике события Page_Load страницы Instructors.aspx для отображения пустого шаблона при первой ее загрузке. protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ClearStudentGradesDataSource(); } } Также вызовите этот метод в обработчике события InstructorsGridView_SelectedIndexChanged – это событие происходит при выборе инструктора: protected void InstructorsGridView_SelectedIndexChanged(object sender, EventArgs e) { ClearStudentGradesDataSource(); } Откройте страницу в обозревателе. Выберите инструктора, который назначен на курс, а затем выберите курс. |