如何绑定asp.net图表?

时间:2015-05-05 06:14:10

标签: c# asp.net charts

我想用一些值绑定asp.net条形图控件。鉴于以下代码包含一些带有值的变量。我想在图表中显示这些值,如下所示:

代码:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    int cnt = Convert.ToInt32(txtCount.Text);
    DateTime start = Convert.ToDateTime(txtStart.Text);
    DateTime end = Convert.ToDateTime(txtEnd.Text);
    var date1 = start.ToShortDateString();
    var date2 = end.ToShortDateString();

    TimeSpan datedifference = end.Subtract(start);
    int dateCount = datedifference.Days;
    float maxUpload = dateCount * 288;  
    float remainingUpload = maxUpload - cnt;
    float averageUpload = remainingUpload / (dateCount * 288) * 100;
    float missdUpload = 100 - averageUpload;
    string siteid = ddlSiteID.SelectedValue;

    lblTotalDays.Text = Convert.ToString(dateCount);
    lblTotaldays2.Text = Convert.ToString(dateCount);
    lblTotaldays3.Text = Convert.ToString(dateCount);
    lblTotaldays4.Text = Convert.ToString(dateCount);
    lblMaximum.Text = Convert.ToString(maxUpload);
    lblUploaded.Text = Convert.ToString(remainingUpload);
    lblMissed.Text = Convert.ToString(cnt);
    lblPercentage.Text = Convert.ToString(averageUpload);
    lblSiteid.Text = Convert.ToString(ddlSiteID.SelectedValue);
    lblMissdPer.Text = Convert.ToString(missdUpload);
    lblStart.Text = Convert.ToString(date1);
    lblEnd.Text = Convert.ToString(date2);

    chartBind();
}

private void chartBind()
{
    Series ser = Chart2.Series["Series1"];
    ser.Points.AddXY(lblTotalDays.Text, lblPercentage.Text);
}

.aspx的:

enter image description here

当前输出:

enter image description here

预期图表:

enter image description here

现在我的图表上传了百分比。我还需要显示错过的百分比。帮我找一个合适的解决方案。

1 个答案:

答案 0 :(得分:2)

您的问题是您只生成一个系列点:

private void chartBind()
{
    Series ser = Chart2.Series["Series1"];
    ser.Points.AddXY(lblTotalDays.Text, lblPercentage.Text);
}

您需要为要绘制的每个点添加一个新点,但是有很多方法。

我个人的方法是通过绘制点来生成系列:

首先我创建了点类:

    public class ChartPoint
    {
        public Double PointValue { get; set; }
        public String AxisXText { get; set; }
    }

然后可以将其实例化为列表:

    public static List<ChartPoint> MethodName()
    {
        List<ChartPoint> points = new List<ChartPoint>();

          //Get Your Measured Variables, in a list so you can loop through

          points.Add(new ChartPoint
          {
               PointValue = measured variable,
               AxisXText = "Text you want to display"
          });

       return points;
   }            

然后可以将此点列表绑定到图表作为数据源;即。

chrtWeeklyAverage.DataSource = ChartHelper.RenderWeeklyAverageChart(myclass, start, end);

在你的情况下,可能最好两次执行points.add步骤,只需对以下内容进行硬编码:上传的点值为%,轴上的文字被上传/错过&#39;。

这只是解决问题的唯一方法,可能会有更好的解决方案。