Lecture – Creating a Popup Plot with Highcharts

Prerequisites

Should be familiar with AJAX, and programming in .NET using C# (including properties, methods)

Summary

Demonstrates using the Highcharts.NET library and a Modal Popup extender to create a popup user control.

Topics Covered in this Video;

-Plotting
-Installing Highchart .NET
-Test plot routine
-References
-namespaces
-Popup controls
-Codebehind
-Titles within Charts
-Object Arrays within Charts
-Binding Data

Video 

Reference Materials

TestPlotRoutine.aspx.cs

using System;
using System.Collections.Generic;
using Highchart.Core;
using Highchart.Core.Data.Chart;

namespace SMADA2013.Pages
{
    public partial class TestPlotRoutine : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            hcLine.YAxis.Add(new YAxisItem { title = new Title("Faturamento") });
            hcLine.XAxis.Add(new XAxisItem { categories = new String[]{ "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002" } });

            //New data collection
            var series = new List<Serie>();
            series.Add(new Serie { data = new object[] { 400, 435, 446, 479, 554, 634, 687, 750, 831 } });

            //bind 
            hcLine.DataSource = series;
            hcLine.DataBind();
            hcLine.Visible = true;

        }
    }
} 

ucPlotWindow.aspx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ucPlotWindow.ascx.cs" Inherits="SMADA2013.UserControls.ucPlotWindow" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>

    <asp:Button ID="btnPlot" runat="server" Text="Plot" CausesValidation="false" />

    <ajax:modalpopupextender id="ModalPopupExtender1" runat="server" 
        TargetControlID="btnPlot" PopupControlID="Panel1" 
        CancelControlID ="btnDonePlot" backgroundcssclass="ModalPopupBG">
    </ajax:modalpopupextender>

    <asp:panel id="Panel1" style="display: none" runat="server">
    <div class="PopupPanel">
                <div class="PopupHeader" id="PopupHeader">Plot Window</div>
                <div class="PopupBody">
                     <highchart:LineChart id="hcLine" runat="server" Width="1000" Height="550" /><br/>
                    <div style="text-align: center;" ><asp:Button ID="btnDonePlot" runat="server" Text="Done" /></div>
                </div>
        </div>
    </asp:panel> 

ucPlotWindow.aspx.cs

using System;
using System.Collections.Generic;
using Highchart.Core;
using Highchart.Core.Data.Chart;

namespace SMADA2013.UserControls
{
    public partial class ucPlotWindow : System.Web.UI.UserControl
    {
        List<Serie> series = new List<Serie>();

        public string Title
        {
            set
            {
                hcLine.Title = new Title(value);
            }
        }

        public string SubTitle
        {
            set
            {
                hcLine.SubTitle = new SubTitle(value);
            }
        }

        public string YAxisTitle
        {
            set
            {
                hcLine.YAxis.RemoveAll(item => item.id == "Title");
                hcLine.YAxis.Add(new YAxisItem { title = new Title(value), id = "Title"});
            }
        }

        public object[] XAxisValues
        {
            set 
            { 
                hcLine.XAxis.RemoveAll(item => item.id == "Values");
                hcLine.XAxis.Add(new XAxisItem
                {
                    categories = value,
                    id = "Values"
                });
            }
        }

        public void AddYAxisValues(string legend, object[] value)
        {
                series.Add(new Serie { name = legend, data = value  });
        }

        protected void Page_Load(object sender, EventArgs e)
        {
               DataBind();
        }

        public void DataBind()
        {
            hcLine.DataSource = series;
            hcLine.DataBind();
            hcLine.Visible = true;            
        }
    }
} 

Additional Information

http://highcharts.codeplex.com/ – Highcharts .NET at Codeplex (library used in this video)

http://dotnethighcharts.codeplex.com/ – DOTNET.Highcharts at Codeplex ( a different library shown in video at Lecture – Using Highcharts in DOTNET

http://www.highcharts.com/ – Highcharts.COM library

http://msdn.microsoft.com/en-us/library/bfcke1bz.aspx – Documentation for Predicates

http://stackoverflow.com/questions/556425/predicate-delegates-in-c-sharp – great simple explanation of a predicate.

http://ajaxcontroltoolkit.codeplex.com/ – AJAX Control Toolkit

http://www.codeproject.com/Articles/34996/ASP-NET-AJAX-Control-Toolkit-ModalPopupExtender-Co – Great documentation of some interesting things you can do with a Modal Popup Extender.

COP 4834 Lectures Page