не показывает разные графики в одной форме - PullRequest
0 голосов
/ 09 сентября 2011

привет, я пытаюсь представить два графика (круговую диаграмму и гистограмму) в одной форме, используя элементы управления mschart .... данные поступают из базы данных ....

Я использую элемент управления одной диаграммы (kpichart) для представления двух графиков ....

для этого я пишу ниже код

В этом коде я определил две разные области для определения двух графиков .....

       public void KpiMembers_MouseClick(object sender, MouseEventArgs e)
       {

        Series statusseries;
        Series liveserries = null;
        string area;
        Title title;

        try
        {
            var pos = e.Location;
            var results = KpiMembersTotalchart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint);
            foreach (var result in results)
            {
                if (result.ChartElementType == ChartElementType.DataPoint)
                {
                    if (result.Series.Points[result.PointIndex].AxisLabel == "Live")
                    {
                        DataTable Livemembers = null;
                        Livemembers = KpiData.livemembersmembershipstatus();

                        DataTable membersalltotals = null;
                        membersalltotals = kpimembtotals.membershipTotals(dtpStartDate.Value, dtpenddate.Value);

                        KpiMembersTotalchart.ChartAreas.Clear();
                        KpiMembersTotalchart.Titles.Clear();
                        KpiMembersTotalchart.Series.Clear();


                        area = "newchart";
                        KpiMembersTotalchart.ChartAreas.Add(area);
                        liveserries = KpiMembersTotalchart.Series.Add(area);
                        liveserries.ChartArea = area;

                        title = KpiMembersTotalchart.Titles.Add("Memberstotalspoints");
                        title.Font = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
                        title.Alignment = ContentAlignment.TopLeft;
                        title.DockedToChartArea = area;


                        KpiMembersTotalchart.Titles.Add("").DockedToChartArea = area;

                        area = "subchart";
                        KpiMembersTotalchart.ChartAreas.Add(area);
                        statusseries = KpiMembersTotalchart.Series.Add(area);
                        statusseries.ChartArea = area;


                        title = KpiMembersTotalchart.Titles.Add("Live Status members by status");
                        title.Font = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
                        title.Alignment = ContentAlignment.TopLeft;
                        title.DockedToChartArea = area;

                        KpiMembersTotalchart.Titles.Add("").DockedToChartArea = area;



                        foreach (Title chartTitle in KpiMembersTotalchart.Titles)
                        {
                            chartTitle.IsDockedInsideChartArea = false;
                        }

                        foreach (ChartArea chartArea in KpiMembersTotalchart.ChartAreas)
                        {
                            chartArea.Area3DStyle.Enable3D = true;
                            chartArea.AxisX.LabelStyle.IsEndLabelVisible = true;

                        }

                        if (area == "subchart")
                        {
                            foreach (Series charttypes in KpiMembersTotalchart.Series)
                            {
                                charttypes.ChartType = SeriesChartType.Pie;
                                charttypes["PielabelStyle"] = "Outside";
                                charttypes["DoughnutRadius"] = "30";
                                charttypes["PieDrawingStyle"] = "SoftEdge";
                                charttypes.BackGradientStyle = GradientStyle.DiagonalLeft;

                            }

                        }

                        if (area == "newchart")
                        {
                            foreach (Series chartareas in KpiMembersTotalchart.Series)
                            {
                                chartareas.ChartType = SeriesChartType.StackedColumn;
                                chartareas["ColumnDrawingStyle"] = "SoftEdge";
                                chartareas["LabelStyle"] = "Top";
                                chartareas.IsValueShownAsLabel = true;
                                chartareas.BackGradientStyle = GradientStyle.DiagonalLeft;
                            }
                        }


                        foreach (Legend legend in KpiMembersTotalchart.Legends)
                        {
                            legend.Enabled = false;
                        }

                        if (membersalltotals == null)
                        {
                            statusseries.Points.Clear();
                            statusseries.Points.AddXY("no status", 0);

                        }

                        if(Livemembers == null)
                        {

                            liveserries.Points.Clear();
                            liveserries.Points.AddXY("no membershipe", 0);

                        }
                        KpiMembersTotalchart.Series["newchart"].Points.DataBindXY(membersalltotals.Rows, "Status", membersalltotals.Rows, "Value");
                        KpiMembersTotalchart.Series["subchart"].Points.DataBindXY(Livemembers.Rows, "mshipname", Livemembers.Rows, "count");

                        if (area == "subchart")
                        {
                            foreach (Series charttypes in KpiMembersTotalchart.Series)
                            {
                                foreach (DataPoint point in charttypes.Points)
                                {
                                    switch (point.AxisLabel)
                                    {
                                        case "New": point.Color = Color.Cyan; break;
                                        case "Live": point.Color = Color.Green; break;
                                        case "Defaulter": point.Color = Color.Red; break;
                                        case "Cancelled": point.Color = Color.Orange; break;
                                        case "Completed": point.Color = Color.Blue; break;
                                        case "Frozen": point.Color = Color.Violet; break;
                                    }

                                    point.Label = string.Format("{0:0} - {1}", point.YValues[0], point.AxisLabel);
                                }
                            }
                        }
                        if (area == "newchart")
                        {
                            foreach (Series chartareas in KpiMembersTotalchart.Series)
                            {
                                foreach (DataPoint point in chartareas.Points)
                                {

                                    switch (point.AxisLabel)
                                    {
                                        case "Silver membership": point.Color = Color.Green; break;
                                        case "Gold Membership": point.Color = Color.Blue; break;
                                        //case "Refused": point.Color = Color.Red; break;
                                        case "Weekend Peak": point.Color = Color.Cyan; break;
                                        case "prspect": point.Color = Color.Indigo; break;

                                    }
                                    point.Label = string.Format("{0:0}", point.YValues[0]);
                                }

                            }
                        }
                    }

                }
            }
        }
        catch { }

    }

Моя проблема в том, что я пытаюсь показать две разные диаграммы (одна круговая диаграмма, а другая столбчатая диаграмма с накоплением) ....

но он показывал две одинаковые диаграммы (обе - круговые диаграммы), см. Диаграмму ниже enter image description here

Я хочу показать столбчатую диаграмму с накоплением вместо круговой диаграммы во второй .... но она показывала две одинаковые диаграммы (круговая диаграмма)

Я разделил общую форму на две области .....

Что мне нужно сделать, чтобы отобразить два разных графика в одной форме, используя один элемент управления диаграммы

Может ли кто-нибудь помочь с этим ...

Большое спасибо заранее за любые идеи .....

1 Ответ

0 голосов
/ 09 сентября 2011

Это простая проблема с логикой в ​​вашем коде.

Ваш код в настоящее время читает:

                    area = "newchart";
                    ......
                    area = "subchart";
                    ......
                    if (area == "subchart")
                    ......
                    if (area == "newchart")

Это, очевидно, всегда будет оценивать первое «если» в «true» ивторое «если» на «ложь».Вам нужно реорганизовать свой код так, чтобы он не использовал area, как это - вам нужно отступить назад и переписать свою логику, которая создает нужные вам диаграммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...