Issue with Line Chart

6 posts, 0 answers
  1. Sergio
    Sergio avatar
    7 posts
    Member since:
    Nov 2011

    Posted 22 Feb 2012 Link to this post

    Hello,

    I have a problem when I try to show some data on a Line Chart.

    I have attached one image with both Data and Line Chart.

    As you can see, the green line is not correct because its three values are located on the first three points (Mar'11, May'11 and Jul'11), and must be located on second, third, an sixth respectively (May'11 Jul'11 and Ene'12) as it is shown on Data Table.

    The SQL source for this Chart is this:

    ES00000120S9     
    09/03/2011 0:00:00     
    Mar'11     
    36,9388000000        
    20/02/2012
    ES00000120S9 09/05/2011 0:00:00 May'11 38,3738000000 20/02/2012
    ES00000120S9 11/07/2011 0:00:00 Jul'11 41,0802000000 20/02/2012
    ES00000120S9 09/09/2011 0:00:00 Sep'11 47,0580000000 20/02/2012
    ES00000120S9 09/11/2011 0:00:00 Nov'11 51,5185000000 21/02/2012
    ES00000120S9 09/01/2012 0:00:00 Ene'12 52,7473000000 21/02/2012
    ES00000121J6 09/03/2011 0:00:00 Mar'11 94,4507000000 20/02/2012
    ES00000121J6 09/05/2011 0:00:00 May'11 94,7643000000 20/02/2012
    ES00000121J6 11/07/2011 0:00:00 Jul'11 95,7689000000 20/02/2012
    ES00000121J6 09/09/2011 0:00:00 Sep'11 97,2266000000 20/02/2012
    ES00000121J6 09/11/2011 0:00:00 Nov'11 97,1023000000 21/02/2012
    ES00000121J6 09/01/2012 0:00:00 Ene'12 97,4383000000 21/02/2012
    ES00000121T5 09/05/2011 0:00:00 May'11 100,0459000000 20/02/2012
    ES00000121T5 11/07/2011 0:00:00 Jul'11 100,4433000000 20/02/2012
    ES00000121T5 09/01/2012 0:00:00 Ene'12 383,3258000000 21/02/2012

    The last three values are located on Mar'11, May'11 and Jul'11 on chart.

    I don't know how to fix it.

    Is there any solution?

    Thank you very much.

  2. Hadib Ahmabi
    Hadib Ahmabi avatar
    181 posts
    Member since:
    Nov 2011

    Posted 22 Feb 2012 Link to this post

    Do you bind the X values? Because if you don't, the chart automatically assigns consequential numbers (1, 2, 3, ...) and this is why every series will begin from 0 and will not respect the empty values. 

    From my experience with charts, in almost any case it's easier to programmatically create it (create the series and add the items). If you do it programmatically you will have total control over it. 

    Look at this:
    http://www.telerik.com/help/reporting/buildingprogrammaticcreate2.html 

  3. Sergio
    Sergio avatar
    7 posts
    Member since:
    Nov 2011

    Posted 22 Feb 2012 Link to this post

    Thanks for your prompt response.

    How I can bind X Axis from Report designer?

    Now I have bound DataGroupColumn and X Axis' DataLabelsColumn but I don't find any other bind property.

    Thank you.

  4. Hadib Ahmabi
    Hadib Ahmabi avatar
    181 posts
    Member since:
    Nov 2011

    Posted 22 Feb 2012 Link to this post

    Since you have date for X values, I am not really sure if you can do that directly. 
    The documentations says: "To add dates to an axis or chart item, values must be converted to OleAutomation types.  Use the 
    DateTime ToOADate() function for this purpose." source: http://www.telerik.com/help/reporting/understandingtypesgantt.html 

    From my experience, I believe that the only way to accomplish your goal would be to programmatically create the chart. 

  5. Sergio
    Sergio avatar
    7 posts
    Member since:
    Nov 2011

    Posted 22 Feb 2012 Link to this post

    Now I had change the select to obtain this table

    ES00000120S9       
    1        
    Mar'11     
    36,9388000000
    ES00000120S9 2 May'11 38,3738000000
    ES00000120S9 3 Jul'11 41,0802000000
    ES00000120S9 4 Sep'11 47,0580000000
    ES00000120S9 5 Nov'11 51,5185000000
    ES00000120S9 6 Ene'12 52,7473000000
    ES00000121J6 1 Mar'11 94,4507000000
    ES00000121J6 2 May'11 94,7643000000
    ES00000121J6 3 Jul'11 95,7689000000
    ES00000121J6 4 Sep'11 97,2266000000
    ES00000121J6 5 Nov'11 97,1023000000
    ES00000121J6 6 Ene'12 97,4383000000
    ES00000121T5 2 May'11 100,0459000000
    ES00000121T5 3 Jul'11 100,4433000000
    ES00000121T5 6 Ene'12 383,3258000000

    Dates has been changed by the X Axis' position DataLabelsColumn is the third one and DataGroupColumn is the first one.
    Although second column is filled with numbers and no dates. The chart is giving the same incorrect output.

    I have no time to make the chart programatically (my only solution is adding a image from a chart developed on other framework that works perfectly).

    Is there any other possible solution excluding programatically one?

    Thank you very much.

  6. Elian
    Admin
    Elian avatar
    435 posts
    Member since:
    Sep 2012

    Posted 27 Feb 2012 Link to this post

    Hi Sergio,

    This is a limitation of the current chart control. As Hadib said, the layout you need, can be achieved only programmatically. Here's a sample code of how to programmatically create series and items using DataTable and SqlDataAdapter:

    //retrieves the data from the database
    public DataTable GetData()
    {  
        string connectionString = "Data Source...";
        string selectString = "SELECT...";
        SqlDataAdapter sqlAdapter = new SqlDataAdapter(selectString, connectionString);
        DataSet ds = new DataSet();
        sqlAdapter.Fill(ds);
        foreach(var row in ds.Tables[0].Rows)
        {
            ...
        }
        return ds.Tables[0];   
    }
     
     private void chart1_NeedDataSource(object sender, EventArgs e)
    {
        var dataTable = GetData(); 
     
        //chart is the object from the report definition
        //create the series for the chart
        chart1.Series.Add(new Charting.ChartSeries("Series1"));
        chart1.Series.Add(new Charting.ChartSeries("Series2"));
         
        foreach(DataRow row in dataTable)
        {
             var newItem = new Charting.ChartSeriesItem(x, y);
             //add the items to the corresponding series
             if(...)
             {
                chart1.Series[0].Items.Add(newItem);
             }
             else       
             {
                chart1.Series[1].Items.Add(newItem);
             }
        }
    }

    Here are a couple of links that further discuss the matter:
    Creating Chart Programmatically 
    Creating Chart Programmatically (advanced)

    Greetings,
    Elian
    the Telerik team
    NEW in Q1'12: Telerik Report Designer (Beta) for ad-hoc report creation. Download as part of Telerik Reporting Q1 2012. For questions and feedback, use the new Telerik Report Designer Forum.

Back to Top