2013-11-20 3 views
0

나는 날짜순으로 점을 표시하는 코드 뒤에있는 내 차트를 얻는 방법을 알아 내려고 노력하고 있습니다. 내 포인트는 데이터베이스에서 날짜로 x 축 레이블을 설정할 때마다 완벽하게 잘 보여 주지만, 프로그램은 적합합니다. 누군가가 이것을 어떻게 코드에 표시 할 수 있습니까?마이크로 차트에서 X 축 레이블로 날짜를 표시하는 방법

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlServerCe; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Windows.Forms.DataVisualization.Charting; 


namespace BgTracker.NET.Reports 
{ 

    public partial class BPChart : Form 
    { 
    private System.Windows.Forms.DataVisualization.Charting.Chart chart1; 
     public BPChart() 
     { 
      InitializeComponent(); 
     } 
     private void BPChart_Load(object sender, EventArgs e) 
     { 
      chart1 = new Chart(); 

      ChartArea chartArea1 = new ChartArea(); 
      chart1.ChartAreas.Add(chartArea1); 
      chart1.ChartAreas["ChartArea1"].AxisX.Title = "Dates"; 
      chart1.ChartAreas["ChartArea1"].AxisY.Title = "BP Rates"; 
      Series series1 = new Series(); 
      Series series2 = new Series(); 
      Series series3 = new Series(); 

      // Add data points to the first series 
      string ConnStr1 = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
      SqlCeConnection conn = new SqlCeConnection(ConnStr1); 
      string GetBPReadings = "SELECT Systolic, Diastolic, DateVal from Bp where DateVal BETWEEN '5/1/2000' AND '5/8/2000'"; 
      SqlCeCommand cmd = new SqlCeCommand(GetBPReadings, conn); 
      conn.Open(); 
      SqlCeDataReader rdrBP = cmd.ExecuteReader(); 
      while (rdrBP.Read()) 
      { 
       series1.Points.Add(Convert.ToInt32(rdrBP.GetValue(0).ToString())); 
       series2.Points.Add(Convert.ToInt32(rdrBP.GetValue(1).ToString())); 
       series3.AxisLabel = rdrBP.GetValue(2).ToString(); 
      } 
      conn.Close(); 

      chart1.Series.Add(series1); 
      chart1.Series.Add(series2); 

      chart1.Series["Series1"].ChartType = SeriesChartType.Line; 
      chart1.Series["Series2"].ChartType = SeriesChartType.Line; 

      chart1.Series["Series1"].Color = System.Drawing.Color.Red; 
      chart1.Series["Series2"].Color = System.Drawing.Color.Blue; 

      // Set chart control location 
      chart1.Location = new System.Drawing.Point(0, 0); 

      // Set Chart control size 
      chart1.Size = new System.Drawing.Size(800, 600); 

      // Add chart control to the form 
      this.Controls.AddRange(new System.Windows.Forms.Control[] {this.chart1 }); 
     } 
    } 
} 
+0

'적합감'보다 구체적으로 표현할 수 있습니까? 예외가 있습니까? 행이있는 경우 어떤 행의 코드가 발생합니까? – Gareth

+0

X 축 라벨을 설정하려고 시도한 것을 완전히 무시한다는 의미입니다. 시리즈 3으로 X 축을 설정하는 것은 트릭을하지만 주사위는하지 않을 것이라고 생각했습니다. 모든 축 레이블은 1 2 3 4와 같이 나타납니다. – bbcompent1

답변

0

마지막으로 내가 누락 된 부분을 찾아 냈습니다. 데이터베이스의 날짜를 표시하려면 해당 날짜를 시리즈의 Points로 설정해야합니다. 다른 사람들을 돕기 위해 내가 해왔 던 코드가 있습니다.

private void BPChart_Load(object sender, EventArgs e) 
    { 
     chart1 = new Chart(); 

     ChartArea chartArea1 = new ChartArea(); 
     chart1.ChartAreas.Add(chartArea1); 
     chart1.ChartAreas["ChartArea1"].AxisX.Title = "Dates"; 
     chart1.ChartAreas["ChartArea1"].AxisY.Title = "BP Rates"; 
     Series series1 = new Series(); 
     Series series2 = new Series(); 

     chart1.Series.Add(series1); 
     chart1.Series.Add(series2); 

     // Add data points to the first series 
     int i = 0; 
     string ConnStr1 = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
     SqlCeConnection conn = new SqlCeConnection(ConnStr1); 
     string GetBPReadings = "SELECT Systolic, Diastolic, [Date] from Bp where [Date] BETWEEN '5/1/2000' AND '5/8/2000'"; 
     SqlCeCommand cmd = new SqlCeCommand(GetBPReadings, conn); 
     conn.Open(); 
     SqlCeDataReader rdrBP = cmd.ExecuteReader(); 
     while (rdrBP.Read()) 
     { 
      series1.Points.Add(Convert.ToInt32(rdrBP.GetValue(0).ToString())); 
      series2.Points.Add(Convert.ToInt32(rdrBP.GetValue(1).ToString())); 
      chart1.Series["Series1"].Points[i].AxisLabel = rdrBP.GetValue(2).ToString(); 
      i++; 
     } 
     conn.Close(); 

     chart1.Series["Series1"].ChartType = SeriesChartType.Line; 
     chart1.Series["Series2"].ChartType = SeriesChartType.Line; 

     chart1.Series["Series1"].Color = System.Drawing.Color.Red; 
     chart1.Series["Series2"].Color = System.Drawing.Color.Blue; 

     // Set chart control location 
     chart1.Location = new System.Drawing.Point(0, 0); 

     // Set Chart control size 
     chart1.Size = new System.Drawing.Size(800, 600); 

     // Add chart control to the form 
     this.Controls.AddRange(new System.Windows.Forms.Control[] { this.chart1 }); 
    } 
} 
관련 문제