Я разрабатываю форму окна в vb.net 2010. Это простой с двумя элементами управления. Один из них - datagridview для отображения данных в табличной форме, а другой - элемент управления диаграммой, который извлекает данные из gridview для рисования диаграмм. У меня также есть combobox, который помогает выбрать переменную, для которой я хотел бы иметь таблицу или диаграммы. Кроме того, есть две кнопки, одна из которых называется «таблицей», на которую накладывается gridview с данными из внешнего файла excel. Другая кнопка с надписью «plot» отображает данные, которые были импортированы в gridview.Как обновить данные в datagridview во время выполнения в VB.NET 2010
Предположим, у меня есть три переменные в comboBox, «Реальный ВВП», потребление, инвестиции. Во время выполнения во время первого выбора любой переменной она работает отлично. Но во время того же запуска, если я выберу другую переменную, gridview может импортировать переменную, но график не может нарисовать диаграмму. Участок не может найти переменную, потому что он все еще ищет первую переменную, а в gridview. У меня есть таблица для второй переменной. Кажется, есть разрыв между gridview и plot, если мы выберем другую переменную после отображения первого.
Если я закрою прогон и перестрою и выберите другую переменную, он отлично работает. Но снова во время этого запуска, если я выберу другую переменную, она терпит неудачу. Вот мой код:
Public Class Form1
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
Dim myStr1, myStr2, myStr3 As String
Dim msgStr, msgEnd, defValStr, defValEnd, _
title, myValStr, myValEnd As String
Public Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
myStr1 = selectVariable.SelectedItem
MsgBox("You have chosen " & myStr1)
' Defining a InputBox to enter Sample Period
' Start Period
msgStr = "Enter your Starting time period: Between 1980 and 2012"
defValStr = "1982"
title = "Define Sample Time Period"
myValStr = InputBox(msgStr, title, defValStr)
' End Period
msgEnd = "Enter your Ending time period: Between 1980 and 2012"
defValEnd = "2012"
title = "Define Sample Time Period"
myValEnd = InputBox(msgEnd, title, defValEnd)
Select Case myStr1
Case "Real GDP"
myStr2 = "xgdp"
Case "Consumption"
myStr2 = "CP"
Case "Investment"
myStr2 = "IP"
End Select
myStr3 = String.Concat("select", " ", "FY", ",", myStr2, " ", "from", " ", "[Dataset$]", " ", "where", " ", "FY>=", myValStr, " ", "and", " ", "FY<=", myValEnd)
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='J:\Rushad\MOF\EViews Stuff\Data_Macro_Model.xls';Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter(myStr3, MyConnection)
MyCommand.TableMappings.Add("Table", "Net-informations.com")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)
DataGridView1.DataSource = DtSet.Tables(0)
MyConnection.Close()
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Chart1.DataSource = DtSet
Chart1.Series.Add(myStr2)
Chart1.Series(myStr2).XValueMember = "FY"
Chart1.Series(myStr2).YValueMembers = myStr2
End Sub
End Class
Кажется, если я изменил Button2 Sub от частного к публичному, он работает просто отлично! – bigmonty
В вашей Button2_Click сбросьте свой график, выполнив следующие действия: Если Chart1.Series.Count> 0, тогда Chart1.Series.Clear – Steve