2015-02-19 2 views
0

Я пытался установить DevExpress Chart Series из Data in SQL Table. Все прошло отлично, за исключением того, что диаграмма берет только последний атрибут из последней серии.
Мой код:Получение значений диаграммы диаграмм DevExpress из массива VB.NET

con.Open() 'it opens SQL Connection 
For i = 0 To (CheckedListBoxControl1.CheckedItems.Count - 1) 'list from ListBox   
    Lst.Add(CheckedListBoxControl1.CheckedItems(i).ToString) 'Putting Data in Array List 
    Dim Strl As String = String.Format("Select * from VPRogressCumulative where fname like '{0}' and lname like '{1}' order by id, no, CAST('1.' + date AS datetime)", ComboBox1.Text, Lst(i)) 

    Dim sqlCom As New SqlCommand(Strl) 
    sqlCom.Connection = con 
    Dim myDA As SqlDataAdapter = New SqlDataAdapter(sqlCom) 
    Dim myDataSet As DataSet = New DataSet() 
    myDA.Fill(myDataSet, "VPRogressCumulative") 
    ChartControl1.DataSource = myDataSet 
    ChartControl1.DataAdapter = myDA 

    Dim ser As New Series(Lst(i), ViewType.Line) 
    ChartControl1.Series.Add(ser) 

    ser.ArgumentDataMember = "VPRogressCumulative.Date" 
    ser.ValueDataMembers.AddRange(New String() {"VPRogressCumulative.Cumulative"}) 
Next 
con.Close() 

Я считаю, что моя проблема заключается в:

Dim ser As New Series(Lst(i), ViewType.Line) 
ChartControl1.Series.Add(ser) 
ser.ArgumentDataMember = "VPRogressCumulative.Date" 
ser.ValueDataMembers.AddRange(New String() {"VPRogressCumulative.Cumulative"}) 

Последние две строки дают одни и те же серии новых атрибутов, которые я не был в состоянии решить эту проблему.

ответ

0

Ваша проблема здесь:

ChartControl1.DataSource = myDataSet 
ChartControl1.DataAdapter = myDA 

В каждой итерации цикла вы создаете новый DataSet и это перекрывает предыдущий DataSource в вашем ChartControl1. Вы должны использовать Series.DataSource вместо ChartControl.DataSource. Также вы можете использовать DataTable вместо DataSet.
Вот пример:

'Your code: 
'Dim myDataSet As DataSet = New DataSet() 
'myDA.Fill(myDataSet, "VPRogressCumulative") 
'ChartControl1.DataSource = myDataSet 
'ChartControl1.DataAdapter = myDA 

'Replace with this: 
Dim myDataTable As DataTable = New DataTable("VPRogressCumulative") 
myDA.Fill(myDataTable) 

Dim ser As New Series(Lst(i), ViewType.Line) 
ChartControl1.Series.Add(ser) 

'Your code. 
'ser.ArgumentDataMember = "VPRogressCumulative.Date" 
'ser.ValueDataMembers.AddRange(New String() {"VPRogressCumulative.Cumulative"}) 

'Replace with this: 
ser.DataSource = myDataTable 
ser.ArgumentDataMember = "Date" 
ser.ValueDataMembers.AddRange(New String() {"Cumulative"})