Использование XML и LINQ в элементах управления TreeView и ListView

ОГЛАВЛЕНИЕ

В то время как все больше информации хранится в XML-формате, веб-приложениям необходимо иметь возможность в интерфейсе веб-страницы осуществлять просмотр и редактирование информации, хранимой в XML-файле. Если информация хранится в файле и имеет табличный вид, то мы можем использовать элементы управления DataGrid, GridView и Repeater. Но что делать, если XML-данные представлены  более иерархической структурой? Представьте телефонную книгу компании, которая рекурсивно структурируется в филиалы и отделы. Как такую информацию, которая может иметь множество узлов и любое количество уровней, отобразить и отредактировать посредством веб-страницы?

В данной статье мы создадим веб-страницу, которая будет отображать содержимое телефонной книги всей компании, где информация находится в XML-файле. Страница рекурсивно будет отображать XML-информацию из телефонной книги при помощи TreeView для того, чтобы перечислять филиалы и отделы, а также ListView - для перечисления сотрудников, принадлежащих выбранному филиалу или отделу. В частности, ListView отобразит сотрудников, принадлежащих выбранному филиалу, а также тех, кто принадлежит всем отделам данного филиала. (В следующей статье мы рассмотрим способ расширения возможностей ListView, позволив пользователю добавлять, редактировать и удалять записи в телефонной книге.) Читайте далее, чтобы узнать больше об этом!

Рабочий пример приложения доступен в конце статьи
На протяжении данной статьи мы будет рассматривать различные блоки кода и скриншоты приложения. Для этого было использовано приложение, которое вы можете загрузить в конце статьи. Я рекомендую вам скачать приложение, загрузить его в Visual Studio и запустить локально, чтобы увидеть все в действии. После этого можете вернуться к данной статье и следовать действиям, выполняемым в ней.

Обратите внимание на то, что многие элементы управления и принципы, обсужденные в статье стали доступны в ASP.NET версии 3.5 - поэтому, приложение не будет работать в Visual Studio 2005 и в предыдущих версиях. Если у вас нет Visual Studio 2008, то вы всегда можете загрузить и установить бесплатную версию Visual Web Developer 2008, которая может быть установлена наряду с другими версиями Visual Studio.

Исследование источника XML-данных

Данная статья демонстрирует способ отображения XML-данных в веб-странице при помощи элементов управления TreeView и ListView. До того как мы приступим к созданию страницы, давайте уделим пару минут исследованиию структуры XML-данных, которые мы собираемся отображать. Следующая XML-структура представляет собой телефонную книгу сотрудников компании. Компания состоит из филиалов и отделов. Филиал может состоять из отделов, а они, в свою очередь, из других отделов. Сотрудники могут принадлежать любому филиалу или отделу.

XML-данные могут выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<PhoneBook>
   <Branch id="1" name="Northern Branch">
      <Department id="1" name="Marketing">
         <Employee id="1" name="Miroslav" telephone="555-5555" />
         <Employee id="2" name="Scott" telephone="555-1111" />
         <Department id="2" name="Advertising">
            <Employee id="3" name="Chris" telephone="555-2222" />
            <Employee id="4" name="Bruce" telephone="555-3333" />
            <Employee id="5" name="Sam" telephone="555-4444" />
         </Department>
      </Department>
      <Employee id="6" name="Jisun" telephone="555-9999" />
   </Branch>
   <Department id="3" name="Executive Team">
      <Employee id="7" name="Davis" telephone="555-8888" />
      <Employee id="8" name="Kate" telephone="555-9900" />
   </Department>
</PhoneBook>

Указанный выше XML код демонстрирует то, что существует северный филиал (Northern Branch) с отделом маркетинга (Marketing). Сотрудники Miroslav и Scott работают в отделе Marketing. Отдел рекламы (Advertising) и принадлежащий ему отдел маркетинга (Marketing) являются местами где работают Chris, Bruce и Sam. Jisun работает в северном филиале (Northern Branch), но он не принадлежит какому-то определенному отделу данного филиала. В отделе исполнительных директоров (Executive Team) работают Davis и Kate - они также не принадлежат ни одному из филиалов.