2013-09-26 148 views
0

我有以下數據&需要知道這是否可以用折線圖顯示。ASP.NET多系列折線圖

數據:

VerNo | Start Date | End Date 
1.1 | 01-Jan-2013 | 31-Jan-2013 
1.2 | 01-Feb-2013 | 31-Dec-2099 
2.1 | 10-Jan-2013 | 25-Jan-2013 
2.2 | 26-Jan-2013 | 16-Feb-2013 
3.1 | 16-Mar-2013 | 30-Apr-2013 

我需要與X軸& VerNo在Y軸日期的線圖表&水平線應顯示開始的每個版本&結束日期。

謝謝!

回答

0

憑藉我對Chart控件的一點了解,我嘗試了一些東西。 首先,我將數據與Y軸上的Id = 0綁定以獲取日期(可能可以做得更好) 然後,我繞過數據並每行創建一個serie。 每一個系列我做了隨機顏色,但有時顏色太白,所以它不顯示。

public class VersionData 
    { 
     public int Id { get; set; } 
     public double VersionNo { get; set; } 
     public DateTime StartDate { get; set; } 
     public DateTime EndDate { get; set; } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     string dateFormat = "yyyy MMM dd"; 
     List<VersionData> version = new List<VersionData>(); 
     version.Add(new VersionData() { Id=0, VersionNo = 1.1, StartDate = new DateTime(2013, 1, 1), EndDate = new DateTime(2013, 1, 31) }); 
     version.Add(new VersionData() { Id=0, VersionNo = 1.2, StartDate = new DateTime(2013, 2, 1), EndDate = new DateTime(2013, 12, 31) }); 
     version.Add(new VersionData() {Id=0, VersionNo = 2.1, StartDate = new DateTime(2013, 1, 10), EndDate = new DateTime(2013, 1, 25) }); 
     version.Add(new VersionData() {Id=0, VersionNo = 2.2, StartDate = new DateTime(2013, 1, 26), EndDate = new DateTime(2013, 2, 16) }); 
     version.Add(new VersionData() { Id=0, VersionNo = 3.1, StartDate = new DateTime(2013, 3, 16), EndDate = new DateTime(2013, 4, 30) }); 

     Chart1.Series[0].YValueMembers = "Id"; 
     Chart1.DataSource = version; 

     Random randomGen = new Random(); 
     KnownColor[] names = (KnownColor[])Enum.GetValues(typeof(KnownColor)); 

     for (int i = 0; i < version.Count; i++) 
     { 
      Series s = new Series("s" + i.ToString()); 
      s.ChartType = SeriesChartType.Line; 
      s.Color = Color.FromKnownColor(names[randomGen.Next(names.Length)]); 
      s.BorderWidth = 4; 
      Chart1.Series.Add(s); 
      DataPoint p = new DataPoint(); 

      p.SetValueXY(version[i].StartDate, version[i].VersionNo); 
      s.Points.Add(p); 
      DataPoint p2 = new DataPoint(); 
      p2.SetValueXY(version[i].EndDate, version[i].VersionNo); 
      s.Points.Add(p2); 
     } 

     Chart1.Series[0].XValueMember = "StartDate"; 
     Chart1.ChartAreas[0].AxisX.Interval = 1; 
     Chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Months; 
     Chart1.ChartAreas[0].AxisX.LabelStyle.Format = dateFormat; 
     Chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -90; 
     Chart1.ChartAreas[0].AxisY.Interval = 0.5; 
     Chart1.ChartAreas[0].AxisY.LabelStyle.Format = "0.0"; 
    }