FusionCharts and ASP.NET > Combination Chart Example |
Here, we'll see how to generate a combination chart dynamically from a database. We'll plotting a 3D Column Line Dual Y axis combination chart showing the Top 5 customers for a particular year. On the primary axis, we'll have the Amount figure representing the amount (in dollars) which has been transacted with that customer. On the secondary axis, we'll have Quantity axis representing the quantity traded for that year for that particular customer. The end chart would look as under: |
As you can see above, we've extracted the amount and quantity figure for the top 5 customers for a particular year. All this data is contained in a view called Invoices. The entire XML code required for the above chart is as under (say for the year 1997): |
<graph PYAxisName='Amount' SYAxisName='Quantity'
showvalues='0' rotateNames='0' showAnchors='1' decimalPrecision='2' limitsDecimalPrecision='0'
divLineDecimalPrecision='0' hoverCapSepChar=' ' showShadow='0' lineThickness='3'> <categories> <category name='QUICK-...' hoverText='QUICK-Stop'/> <category name='Save-a...' hoverText='Save-a-lot Markets'/> <category name='Ernst ...' hoverText='Ernst Handel'/> <category name='Mère P...' hoverText='Mère Paillarde'/> <category name='Hungry...' hoverText='Hungry Owl All-Night Grocers'/> </categories> <dataset seriesname='' showValue='1' color='AFD8F8' numberPrefix='$' > <set value='61109.92' /> <set value='57713.58' /> <set value='48096.27' /> <set value='23332.31' /> <set value='20454.4' /> </dataset> <dataset seriesname='' showValue='1' color='A66EDD' parentYAxis='S' numberSuffix=' pcs.' anchorSides='12' anchorRadius='3' anchorBorderColor='A66EDD'> <set value='2172' /> <set value='2574' /> <set value='1950' /> <set value='750' /> <set value='799' /> </dataset> </graph> |
In the above XML, we first define the basic attributes (both functional and visual) of the <graph> element. Thereafter, we render the <categories> elements. Each <category> element represents a category of data (in our example it's the top five customers whose data we're comparing). We've shown only the first 5 characters of the customer name, followed by ellipses, instead of the full customer name to avoid cluttering on the chart. We're showing the full customer name as tool tip. Post that, we render two <dataset> blocks - one for primary axis representing Amount figure and the second for the secondary axis representing the Quantity axis. Let's now quickly code this chart in ASP.NET using dataURL method. It's always recommended to use the dataURL method when working with combination charts too, as the XML data document tends to get larger in size and as such, older versions of browsers are not very able to handle long data chunks in the same page. As we had earlier seen, the dataURL method requires two pages:
The above two are present in the downloads under the folder FusionCharts2_3 > Sample Code > DBExamples > ASP.NET > Combination. The page Data.aspx is responsible for relaying virtual XML documents to the FusionCharts embedded in Chart.aspx. You should note that Data.aspx does NOT write XML data documents to the server disk physically. It relays the XML data document virtually (i.e., no XML files are created and saved on the server). The code for this page can be reproduced as under: |
<%@ Import Namespace="System.Data"
%> Dim cmd = New SqlCommand(strSQL,
sqlConn) Dim intCounter As Integer |
In the above code, we're doing the following:
When you try viewing this page individually in the browser (in the format http://localhost/...Path.../DBExamples/ASP/Combination/Data.aspx?year=1997) you'll get the XML output which we had earlier seen. You should always make sure, that while using dataURL method, your dataURL script should output just XML data and no HTML tags. Let's now shift our attention to Chart.aspx and see the code it contains to embed the chart. Chart.aspx contains the following code: |
<%@ Import Namespace="System.Data"
%> <%@ Import Namespace="System.Data.SQLClient" %> <script runat="server"> 'Initialize a variable that will store FusionCharts dataURL string Dim strFCdataURL as String Sub Page_Load(obj as Object, e as EventArgs) 'Set data page as Data.aspx - we'll add the year to it later strFCdataURL = "Data.aspx?Year=" 'If coming for the first time, fill the select (drop down list) If Not IsPostBack Then 'Establish a connection Dim DS As DataSet Dim MyConnection As SqlConnection Dim MyCommand As SqlDataAdapter 'Get the list of years from the database. MyConnection = New SqlConnection(ConfigurationSettings.AppSettings("appDSN")) MyCommand = New SqlDataAdapter("SELECT DISTINCT YEAR(OrderDate) As Year FROM Orders ORDER BY 1", MyConnection) 'Fill
the dataset |
Here, in the above code, we're doing the following:
When you now view Chart.aspx, you'll get the following chart: |