Разработка Windows-приложений на языке C# 2005

Упорядочивание списков и вычисляемые столбцы DataSet

Показывать лекцию целиком

Цель работы: Изучить основные приемы и способы сортировки данных при заполнении данными DataSet, динамическое изменение структуры DataSet, создание вычисляемых столбцов в DataSet и связывание их с элементами представления

Основные положения

В результате выполнения лабораторных работ 1 - 10 разработано приложение для учета сотрудников предприятия, основная экранная форма которого приведена на рисунке 11.1.

(рис 11.1) Экранная форма учета сотрудников предприятия

При аттестации разработанного приложения конечными пользователями были сделаны следующие замечания:

  • список сотрудников необходимо упорядочить по алфавиту;
  • в списке сотрудников необходимо указывать фамилию, имя и отчество.
  • Упорядочение списка сотрудников по алфавиту

    Данные о сотрудниках считываются из таблицы Employee базы данных с помощью SQL -запроса в объект класса DataSet, с которым связан элемент визуализации данных listBoxEmployee. Данные из таблицы Employee базы данных заполняют таблицу DataSetEmployee в той последовательности, как они записаны в базе данных и соответственно в той же последовательности и отображаются в элементе визуализации данных listBoxEmployee. Для упорядочения списка сотрудников по алфавиту достаточно упорядочить данные получаемые из базы данных с помощью SQL -запроса, т.е. необходимо модифицировать команду Select.

    Для формирования новой команды Select необходимо переконфигурировать Data Adapter - daEmployee.

    Конфигурирование Data Adapter

  • В дизайнере класса (рис 11.3) Дизайнер класса DataSetEmployee(рис 11.2) Окно помощника конфигуратора адаптера
  • В окне (рис 11.4) Окно Query Builder построителя SQL-запросов
  • В окно Query Builder построителя SQL -запросов для колонки EmployeeSurname укажите тип сортировки ( Sort Type ) - по алфавиту - Ascending (рисунок 11.5). После этого в команде Select добавится код
    ORDER BY EmployeeSurname
    Полный вид команды Select следующий:
    SELECT JobRoleID, EmployeeSurname, EmployeePatronymic,
     EmployeeID, EmployeeName, EmployeeStatus, Access, NetName, FirstDate
    FROM Employee
    ORDER BY EmployeeSurname
    (рис 11.5) Задание режима сортировки данных по фамилии сотрудника
  • Завершите формирование SQL -запроса, нажимая кнопки "OK" и "Next" в окне Query Builder.

    После компиляции и запуска приложения список сотрудников будет упорядочен по алфавиту, как показано на рисунке 11.6.

    (рис 11.6) Экранная форма с упорядоченным списком сотрудников
  • Формирование отображения списка сотрудников с полными данными

    Для формирования в списке сотрудников информации об фамилии, имени и отчестве необходимо в таблицу Empoyee объекта dsEmployee класса DataSetEmployee добавить вычисляемый столбец и связать с этом столбцом элемент списка отображения listBoxEmployee.

    Модификацию необходимо проводить в следующей последовательности.

  • Для элемента списка listBoxEmployee очистить привязку к источнику данных. Для этого в методе FormEmployee_Load закомментировать следующие строки кода:
    //this.listBoxEmployee.DataSource = this.dsEmployee;
    //this.listBoxEmployee.DisplayMember = //"Employee.EmployeeSurname";
  • Добавляем в класс FormEmployee метод, который будет в таблицу Empoyee объекта dsEmployee класса Data Set добавлять вычисляемый столбец с фамилией, именем и отчеством сотрудника.
    private void AddColumsFullName()
    {
      dsEmployee.Employee.Columns.Add("FullName", typeof(string),
       "EmployeeSurname+' '+EmployeeName+' '+EmployeePatronymic");
    }
  • Добавляем в класс FormEmployee метод, который будет связывать элемент списка очистить привязку listBoxEmployee с объектом dsEmployee класса Data Set.
    private void AddListBoxEmployeeDataSource()
    {
       listBoxEmployee.DataSource = this.dsEmployee;
      listBoxEmployee.DisplayMember = "Employee.FullName";
    }
  • Вновь созданные методы будем вызывать при загрузке формы FormEmployee. Для этого модифицируем метод Load, добавив в него после метода EmployeeFill вызов методов AddColumsFullName и AddListBoxEmployeeDataSource.
  • После компилирования и запуска программы экранная форма "Учет сотрудников" должна иметь вид, аналогичный, приведенному на рис 11.7(рис 11.7) Экранная форма с полными данными по сотрудникам
  • Задание на лабораторную работу

  • Изучите теоретический материал.
  • Модифицируйте приложение для обеспечения:
  • вывода списка сотрудников, содержащего фамилии, имена и отчества;
  • упорядочения выводимого списка сотрудников по алфавиту.
  • Протестируйте приложение.
  • Вернуться к учебному плану