Question

I have trouble to bind different sql columns to the y value of a pie chart. I want to make a pie chart where each column represents a slice in the pie chart, so I want for example the total of column A, Column B and Column C as slices in one pie chart.

This is the code I have:

        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["OPSConnection"].ConnectionString);
        string query = "SELECT SUM(Pick.Colli) AS TotalPick, SUM(Pack.Colli) AS TotalPack, Pack.Person_pack AS persoon FROM Pick CROSS JOIN Pack WHERE person_pack = 'annem2' GROUP BY person_pack";
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();

        Chart1.DataSource = cmd.ExecuteReader();
        Series Series1 = new Series();
        Series1.XValueMember = "Person";
        Series1.YValueMembers = "TotalPick" + "TotalPack";

        Chart1.Series.Add(Series1);

        Chart1.Series[0].ChartType = SeriesChartType.Pie;

        Chart1.DataBind();
        conn.Close();

I have also tried multiple series and points.databindXY but that also didn't work for me.

EDIT 1.0:

I made some changes but it still don't work, does anybody know what I'm doing wrong?

        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["OPSConnection"].ConnectionString);
        string query = "SELECT SUM(Pick.Colli) AS TotalPick, SUM(Pack.Colli) AS TotalPack, Pack.Person_pack AS persoon FROM Pick CROSS JOIN Pack WHERE person_pack = 'annem2' GROUP BY person_pack";
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();

        SqlDataReader read = cmd.ExecuteReader();

        Chart1.DataSource = read;
        Series Series1 = new Series();
        Series1.YValuesPerPoint = 2;
        Series1.Points.DataBindXY(read, "Person", read, "TotalPack,TotalPick");

        Chart1.Series.Add(Series1);

        Chart1.Series[0].ChartType = SeriesChartType.Pie;
        Chart1.Series[0].ToolTip = "#VALY";

        Chart1.DataBind();

        conn.Close();
Was it helpful?

Solution

The problem is fixed:

    conn = new SqlConnection(ConfigurationManager.ConnectionStrings["OPSConnection"].ConnectionString);
    string query = "SELECT SUM(Pick.Colli) AS TotalPick, SUM(Pack.Colli) AS TotalPack, Pack.Person_pack AS persoon FROM Pick CROSS JOIN Pack WHERE person_pack = 'annem2' GROUP BY person_pack";
    SqlCommand cmd = new SqlCommand(query, conn);
    conn.Open();

    SqlDataReader sqlReader = cmd.ExecuteReader();


        Series Series1 = new Series();
        Chart1.Series.Add(Series1);

        Series1.YValuesPerPoint = 2;

        DataTable dt = new DataTable();

        dt.Columns.Add(new DataColumn("Personen"));
        dt.Columns.Add(new DataColumn("Total"));


        while (sqlReader.Read())
        {
            dt.Rows.Add(sqlReader.GetValue(2),sqlReader.GetValue(0));
            dt.Rows.Add(sqlReader.GetValue(2), sqlReader.GetValue(1));
        }


        Chart1.Series[0].XValueMember = "Personen";
        Chart1.Series[0].YValueMembers = "Total";

        Chart1.DataSource = dt;

        Chart1.Series[0].ChartType = SeriesChartType.Pie;
        Chart1.Series[0].ToolTip = "#VALY";

        Chart1.DataBind();

    conn.Close();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top