Question

My ASPX part

<div runat="server" id="divMain">
    <asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1">
        <Series>
            <asp:Series Name="Series1" ChartType="Pie">
            <Points>

                //I want this part to come from code-behind

                //<asp:DataPoint AxisLabel="1 Star"  YValues="100" />
                //<asp:DataPoint AxisLabel="2 Star" YValues="123" />
                //<asp:DataPoint AxisLabel="3 Star" YValues="155" />
                //<asp:DataPoint AxisLabel="4 Star" YValues="245" />

            </Points>
            </asp:Series>
        </Series>
        <ChartAreas>
            <asp:ChartArea Name="ChartArea1">

            </asp:ChartArea>
        </ChartAreas>
        <Legends>
            <asp:Legend Title="Test abc" />
        </Legends>
    </asp:Chart>
  </div>

My code-behind follows down:

protected void Page_Load(object sender, EventArgs e)
{
    double[] yValues = { 10, 27.5, 7, 12, 45.5 };
    string[] xNames = { "Mike", "John", "William", "George", "Alex" };

    Series series1 = new  Series("pie");
    series1.ChartType = SeriesChartType.Pie;
    series1.BorderWidth = 3;
    series1.ShadowOffset = 2;
    Chart1.Series[0].Points.DataBindXY(xNames, yValues);
    divMain.Controls.Add(Chart1);
}

But I am getting the following exception: "The DataSourceID of Chart1 must be the ID of a control of type IDataSource. A control with ID SqlDataSource1 could not be found."

Was it helpful?

Solution

Remove DataSourceID="SqlDataSource1" element from the Chart in your aspx page, it probably does not exist, and you don't need it as you try to fill the data to the chart programatically.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top