Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

Troubleshooting
Research
Professional Opinions
Ask a Question
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

troubleshooting Question

don't show zero values, chart, c#

Avatar of Mike Eghtebas
Mike EghtebasFlag for United States of America asked on
.NET ProgrammingC#ASP.NET
2 Comments1 Solution4960 ViewsLast Modified:
I found the following code  to use in my project (to not display zero values):
            //hide label value if zero
            foreach (System.Web.UI.DataVisualization.Charting.Series series in chart.Series)
            {
                foreach (System.Web.UI.DataVisualization.Charting.DataPoint point in series.Points)
                {
                    if (point.YValues.Length > 0 && (double)point.YValues.GetValue(0) == 0)
                    {
                        point.IsValueShownAsLabel = false;
                    }
                }
            }
I have not been able to make it work for me.

Question: Could you please show me how this is done?

I am looking for the required modification to code above and where it should be placed in my code below:
protected void createMonthlyChartImagesSmall(string YYYY, int RegionID, string Region, int Metric_ID, int MedCtrID, string MedCenter, string chartImageName)
    {
        //  protected void createChart1()
        var filePathName = "~\\image\\" + chartImageName + "Small.png";
        if (!File.Exists(Server.MapPath(filePathName)))
        {
            // some dummy values...
            Session["Metric_ID"] = Metric_ID;
            Session["YYYY"] = YYYY;
            Session["MedCtr_ID"] = MedCtrID;

            SqlDataSource mySqlDataSource = new SqlDataSource();
            mySqlDataSource.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ROD_July18ConnectionString"].ConnectionString;
            mySqlDataSource.SelectCommand = "spMonthlyChart";
            mySqlDataSource.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
            mySqlDataSource.SelectParameters.Add(new SessionParameter("Metric_ID", DbType.Int32, "Metric_ID"));
            mySqlDataSource.SelectParameters.Add(new SessionParameter("YYYY", DbType.String, "YYYY"));
            mySqlDataSource.SelectParameters.Add(new SessionParameter("MedCtr_ID", DbType.Int32, "MedCtr_ID"));

            Chart chart = new Chart();

            Series series = new Series("Default");
            series.ChartType = SeriesChartType.Column;
            chart.Series.Add(series);

            Series series2 = new Series("Default2");
            series2.ChartType = SeriesChartType.Line;
            series2.Color = System.Drawing.Color.Purple;// change color to put
            series2.BorderWidth = 1; // this is actually the line width...
            series2.BorderDashStyle = ChartDashStyle.Dot;

            chart.Series.Add(series2);

            ChartArea chartArea = new ChartArea();
            Axis yAxis = new Axis(chartArea, AxisName.Y);
            Axis xAxis = new Axis(chartArea, AxisName.X);

            series.XValueMember = "ColName"; // X
            series.YValueMembers = "ColValue"; // Y1
            series2.XValueMember = "ColName"; // X
            series2.YValueMembers = "Target"; // Y2
            chart.DataSource = mySqlDataSource;
            chart.DataBind();

            series2.IsValueShownAsLabel = false;
            series2.Points[0].IsValueShownAsLabel = true;

            chartArea.BackColor = Color.Transparent;// chart.ChartAreas.col
            chart.BackColor = Color.Transparent;
            chart.Series["Default"].Color = System.Drawing.Color.FromArgb(250, 140, 172, 0);
            chart.Series["Default"].Points[0].Color = System.Drawing.Color.FromArgb(250, 224, 0, 0);
            chart.Series["Default"].Points[chart.Series["Default"].Points.Count - 1].Color = System.Drawing.Color.FromArgb(250, 225, 128, 0);
          //  series.IsValueShownAsLabel = true; // 3 show value

            

            series.LabelForeColor = System.Drawing.Color.Black;
            series.LabelAngle = 90;
            //chart.ChartAreas[0].AxisX.LabelStyle.Angle = 90;
            chartArea.AxisX.MajorGrid.Enabled = false; // 1 don't show grid
            chartArea.AxisY.MajorGrid.Enabled = false;// 1 don't show grid
            chartArea.AxisY.LabelStyle.Enabled = false; // 2 remove y labels
            // 
            chartArea.AxisX.LabelStyle.Font = new Font("Arial", 8);
            chartArea.AxisX.LabelStyle.Angle = 90;
           // chartArea.AxisX.PositionToValue = midButtonsLabel;

            chartArea.AxisX.LabelStyle.ForeColor = System.Drawing.Color.White;
            chartArea.AxisX.LabelAutoFitStyle = 0;//??????? 
            //chart.BorderSkin.SkinStyle = BorderSkinStyle.FrameThin1;// add thin fram to border???????????
            chartArea.AxisY.MajorTickMark.Enabled = false; //5.remove tick marks and add border
            chartArea.BorderDashStyle = ChartDashStyle.Solid; //6. add border
            chartArea.BorderWidth = 1;
            chartArea.BorderColor = System.Drawing.Color.Black; //6. add border

            ////chartArea.AxisX.IsLabelAutoFit = true;
            //// chartArea.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.LabelsAngleStep30;
            chartArea.AxisX.LabelStyle.Enabled = true;
            chartArea.AxisX.LabelStyle.Angle = -90; // 4 rotate x labels
            chartArea.AxisX.Interval = 1;// xhow all labels

            if (Metric_ID == 115 || Metric_ID == 113)
            {
                chart.Series["Default"].Color = System.Drawing.Color.FromArgb(255, 224, 0, 0);//light red;
                chart.Series["Default"].BackGradientStyle = GradientStyle.DiagonalLeft;
                chart.Series["Default"].BackSecondaryColor = System.Drawing.Color.FromArgb(255, 147, 0, 0);//dark red
            }
            else
            {
                chart.Series["Default"].Color = System.Drawing.Color.FromArgb(255, 152, 200, 0);//light green;
                chart.Series["Default"].BackGradientStyle = GradientStyle.DiagonalLeft;
                chart.Series["Default"].BackSecondaryColor = System.Drawing.Color.FromArgb(255, 129, 132, 0);//dark green
            }

            chart.Series["Default"].Points[0].Color = System.Drawing.Color.FromArgb(255, 255, 150, 0);//light orange ;//FromArgb(255, 224, 0, 0);//light Red;
            chart.Series["Default"].Points[0].BackGradientStyle = GradientStyle.DiagonalLeft;
            chart.Series["Default"].Points[0].BackSecondaryColor = System.Drawing.Color.FromArgb(255, 255, 105, 0);//Dark orange;//FromArgb(255, 147, 0, 0);//DarkRed;
            chart.Series["Default"].Points[chart.Series["Default"].Points.Count - 1].Color = System.Drawing.Color.FromArgb(255, 190, 124,207);//light purple;
            chart.Series["Default"].Points[chart.Series["Default"].Points.Count - 1].BackGradientStyle = GradientStyle.DiagonalLeft;
            chart.Series["Default"].Points[chart.Series["Default"].Points.Count - 1].BackSecondaryColor = System.Drawing.Color.FromArgb(255, 153,66,123);//dark purple
            chartArea.BackColor = System.Drawing.Color.White;// SlateGray;

            series.Font = new Font("Arial", 8f);

            chart.Series["Default"]["BarLabelStyle"] = "Center";  // This will change Label Position
            chart.Series["Default"].LabelAngle = 90;    // This will rotate Data Label 
            
            chart.Width = new Unit(214, UnitType.Pixel);
            chart.Height = new Unit(158, UnitType.Pixel);
            chart.ChartAreas.Add(chartArea);

            chart.PostPaint += new EventHandler<ChartPaintEventArgs>(chart_PostPaint);

            string filename = "~\\image\\" + chartImageName + "Small.png";
            chart.SaveImage(Server.MapPath(filename), ChartImageFormat.Png);

        }
    }
ASKER CERTIFIED SOLUTION
Avatar of Robert Schutt
Robert SchuttFlag of Netherlands imageSoftware Engineer

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Commented:
This problem has been solved!
Unlock 1 Answer and 2 Comments.
See Answers