Складні графіки та діаграми в

Створення діаграми будемо проводити по кроках:

1. У проекті додамо посилання на компонент діаграми.
2. На Веб-сторінку додамо картинку.
3. Створимо запит на вибірку до бази даних, результати якого відобразимо на діаграмі.
4. Експортуємо зображення діаграми в файл і націлимо картинку на цей файл.

А тепер розглянемо більш докладно на прикладі.

1. У проекті додамо посилання на компонент діаграми.

Додамо посилання на компонент в References (див. Малюнки)

Мал. 2. Область Solution Explorer.

Мал. 3. Як додати посилання.

Мал. 4. Що додавати.

Мал. 5. Як це виглядає тепер.

2. На Веб-сторінку додамо картинку Image1.

3, 4. Створимо запит на вибірку до бази даних, результати якого відобразимо на діаграмі. І експортуємо зображення діаграми в файл і націлимо картинку на цей файл.


Чи не правда простенький код? А ось який результат нас чекає:


Мал. 6. Кінцевий результат

Залишається порівняти цей графік з результатом запиту SQL:


Мал. 7. Результати запиту на вибірку збіглися з діаграмою.

1. Кожен раз зберігається новий файл зображення, тому Вам доведеться передбачити спосіб видалення старих файлів. Я б запропонував створити пакетний файл delgif.bat, що містить команду MS-DOS «del * .gif» і прописати його в розкладі хостового сервера з запуском о 3 годині ночі (в цей час всі вже сплять, але ніхто ще не прокинувся).
2. Ви можете запитати, навіщо раптом знадобилося кожен раз генерувати нове ім'я файлу, адже по ідеї краще було б вказати якесь одне ім'я файлу, що дорівнює, наприклад, номером поточної сесії. Відповідь полягає в тому, що елемент управління Image в ASP.NET будь-якої версії - статичний елемент. Це означає, що якщо в Url прописати ім'я файлу картинки і користувач завантажить цю картинку в своєму браузері, то оновлювати файл на нову картинку чи ні, а користувач як бачив першу картинку, так і буде її бачити. Вся справа в тому, що оглядач Інтернету зберігає на комп'ютері користувача всі картинки, які були завантажені з Інтернету для повторного використання. Це дуже корисна річ, так як економиться трафік і час завантаження Веб-сторінок. Як уже згадувалося, в ASP.NET 2-й версії очікується поява динамічного елемента управління DynamicImage, який кожен раз завантажує нове зображення. Ми розглянемо роботу з ним нижче.

Бібліотека Interop.OWC11 може мати простір імен відмінне від Microsoft.Office.Interop.Owc11, для точного визначення пошукайте слово «owc11» в браузері об'єктів. На рис. 8 показаний випадок, коли простір імен називається «OWC11». Не забувайте, що в C # маленькі і великі літери мають різне тлумачення.

Мал. 8. Випадок, коли для звернення до бібліотеки необхідно простір імен OWC11.

Розглянемо 2-й спосіб - через обробник HttpHandler.

Створення діаграми будемо проводити по кроках:

1. У проекті додамо посилання на компонент діаграми.
2. Створимо оброблювач HttpHandler.
3. Зареєструємо обробник.
4. націлені картинку на обробник.

А тепер розглянемо більш докладно на прикладі.

1. У проекті додамо посилання на компонент діаграми.

Цей етап був розглянутий вище. Просто додаємо посилання на компонент COM (Microsoft Office Components 11) і все.

2, 3, 4. Створимо оброблювач HttpHandler, зареєструємо його якщо це клас і націлимо картинку на наш обробник.

В принципі, можна було б не робити обробник, а вивантажити картинку через звичайну сторінку. Ви запитаєте як, та дуже просто, ось погляньте на цей код:

На сторінкою з картинкою Image просто напишемо:

А на сторінці Chart.aspx зобразимо все те, що було в 1-м способі крім елемента управління Image (за непотрібністю), єдине трохи підправимо кінцівку процедури Page_Load:


Але, друзі, кажучи по правді, робити так - себе не поважати - давайте краще без зайвих розмов обробник зробимо (застосування спеціалізованого HTTP-обробника замість звичайної ASPX-сторінки значно ефективніше, оскільки обробник не пов'язаний з таким довгим конвеєром обробки, як звичайна веб- сторінка; він менше завантажує виконуючу середу).

Розглянемо лістинг обробника. Зверніть увагу, що для розширення Вашого кругозору в коді застосовується інший простір імен: не "Microsoft.Office.Interop.Owc11», а «OWC11».

1-й спосіб. Через клас з реєстрацією в Web.config


2-й спосіб. Через сторінку ASHX без реєстрації і без компіляції (рекомендується).

Друзі, якщо Ви працюєте в Студії VS.NET, то навряд чи станете використовувати 1-й спосіб: він незручний, так як вимагає ручної компіляції. Та й при роботі без допомоги Студії навіщо самому компілювати? Надайте це ASP.NET-у. Він автоматично відкомпілює файл ASHX при першому зверненні.

1. Щоб націлити картинку Image на HTTP-обробник надайте його властивості ImageUrl http-шлях до файлу ASHX. У нашому випадку обробник знаходиться в тій же папці, що і сторінка з картинкою Image1:

Image1. ImageUrl = "Chart.ashx";


2. 2-й спосіб взагалі-то вимагає передачі як мінімум трьох параметрів: ConnectionString, CommandText і назви. Це необхідно, щоб управляти діаграмою, какже раз виводячи нову. Я пропоную створити два масиви, які за номером діаграми видавали б ці два параметри. Тоді Вам залишиться в рамках Вашого проекту доповнювати час від часу масиви, а картинкам привласнювати ImageUrl = «Chart.ashx? Con = НомерЕлементаМассіваСтрокСоедіненіяcom = НомерЕлементаМассіваКомандcap = НомерЕлементаМассіваНаіменованій». Ось приблизно які рядки додадуться в файл обробника:

DynamicImage1. ImageBytes = (Byte []) ChartSpace1. GetPicture ( "gif". 300. 300);

Мал. 9. Що відбувається при зверненні до сторінки ASHX (ми поміняли тип діаграми на chChartTypeColumnClustered3D).

висновок

Схожі статті