2017-09-26 1 views
0

둘 이상의 행 데이터가있는 테이블 tblWeeklyAudit가 있습니다. 나는 그것을 읽고 라이브 차트에 보여주고 싶다. 코드는 다음을 사용하여 아래에 표시됩니다.데이터베이스에서 라이브 차트 데이터 가져 오기

using LiveCharts; 
using LiveCharts.Wpf; 
using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Windows; 
using static MAS.clsPUB; 

namespace MAS.Windows 
{ 
    /// <summary> 
    /// Interaction logic for Dash.xaml 
    /// </summary> 
    public partial class Dash : Window 
    { 
     public SeriesCollection SeriesCollection { get; set; } 
     public string[] Labels { get; set; } 
     //public Func<double, string> YFormatter { get; set; } 


     public Dash() 
     { 
      InitializeComponent(); 
      LoadData(); 
     } 

     private void LoadData() 
     { 
      double test =0; 
      if (CON.State == ConnectionState.Open) 
      { 
       CON.Close(); 
      } 

      CON.ConnectionString = ConfigurationManager.ConnectionStrings["conDB"].ConnectionString; 
      CON.Open(); 
      CMD = new SqlCommand("select * from tblWeeklyAudit", CON); 
      RDR = CMD.ExecuteReader(); 
      if (RDR.Read()) 
      { 
       test = Convert.ToDouble(RDR["Defects"]); 
      } 


      SeriesCollection = new SeriesCollection 
      { 
       new LineSeries 
       { 
        Values = new ChartValues<double> { test } 
       }, 

      }; 

      Labels = new[] { "Jan", "Feb", "Mar", "Apr", "May" }; 


      DataContext = this; 
     } 
    } 
} 

차트 값이 선으로 주어 나는 테이블 tblWeeklyAudit 그 결함 테이블에서라고했다. 그것은 다음과 같은 한 줄 이상 할 읽으려면 몇 가지 실수 값 행

Values = new ChartValues<double> { test } 
+0

좋은 이잖아 - 질문/문제는 무엇인가? – BugFinder

+0

데이터베이스에서 데이터 집합을 가져 와서 차트에 표시하는 방법을 알아야합니다. 코드가 실행될 때 테이블의 모든 데이터가 아닌 하나의 데이터 만 검색합니다. –

+0

데이터 항목을 두 개 이상 읽지 않아도됩니다. 검색을 시작해야합니다. – BugFinder

답변

1

당신이 다음 ChartValues<double> 클래스의 생성자로 전달한 List<double>에 이중 값을 추가

private void LoadData() 
{ 
    List<double> allValues = new List<double>(); 
    if (CON.State == ConnectionState.Open) 
    { 
     CON.Close(); 
    } 

    CON.ConnectionString = ConfigurationManager.ConnectionStrings["conDB"].ConnectionString; 
    CON.Open(); 
    CMD = new SqlCommand("select * from tblWeeklyAudit", CON); 
    RDR = CMD.ExecuteReader(); 
    while (RDR.Read()) 
    { 
     allValues.Add(Convert.ToDouble(RDR["Defects"])); 
    } 

    SeriesCollection = new SeriesCollection 
      { 
       new LineSeries 
       { 
        Values = new ChartValues<double>(allValues) 
       } 
      }; 

    Labels = new[] { "Jan", "Feb", "Mar", "Apr", "May" }; 


    DataContext = this; 
} 
+0

덕분에이 일을 짝! :) –

0

있습니다

var List<double> allValues = new List<double>(); 

if (RDR.HasRows) 
     { 
      while (RDR.Read()) 
      { 
       allValues.Add(Convert.ToDouble(RDR["Defects"])); 
      } 
     } 

는 그런 다음 SeriesCollection에 allValues를 사용합니다.

+0

여기 **에 ** allValues를 추가하는 방법을 알고 있습니다. ' SeriesCollection = 새로운 SeriesCollection { 새로운 LineSeries의 { 값 = 새로운 ChartValues는 {** 여기 **} } }' –

관련 문제