2014-11-23 2 views
0

За последние пару дней я боролся с тем, как обновить свои диаграммы в C#. Диаграмма обновляется данными из базы данных посредством привязки данных. К сожалению, когда я сохраняю новые данные в базе данных, диаграмма не выполняется автоматически, мне всегда нужно выйти из приложения и снова войти в систему, чтобы обновить график.Последующие действия по обновлению диаграмм в C#

Чтобы решить эту проблему, я решил отказаться от привязки данных и программно создать свою диаграмму, которая загружается при запуске приложения. Затем я создал кнопку «Обновить», которую я использую для обновления диаграммы. Это ввело новый вопрос. Всякий раз, когда я нажимаю кнопку «Обновить», система сохраняет старую диаграмму и добавляет обновленную диаграмму к ней «бок о бок». Если я нажму второй раз, он отобразит 3 копии диаграммы «бок о бок». Это продолжается до бесконечности.

Ниже приведены мои коды, и у меня есть скриншоты для вашего прочтения.

//this is my constructor 
     public ChartDemo() 
     { 
      InitializeComponent(); 

     connectionString = "Data Source=ADMINISTRATOR;Initial Catalog=AMIS;Persist Security Info=True;User ID=sa;Password=1234"; 
     cnn = new SqlConnection(connectionString); 
     try 
     { 
      cnn.Open(); 

      cnn.Close(); 
     } 
     catch (Exception) 
     { 
         } 

     //this loads the chart whenever the application is launched 
     loadChart(); 
    } 

    private void button1_Click_1(object sender, EventArgs e) 
    { 
     //this is used to refersh my chart 
     loadChart(); 

    } 

    public void loadChart() { 


     // this populates my chart with data from the database 
     SqlConnection cnn = new SqlConnection(connectionString); 

     SqlCommand sqlcmd = new SqlCommand("SELECT * FROM tbl_salary;", cnn); 
     SqlDataReader dr; 


     try 
     { 

      cnn.Open(); 
      dr = sqlcmd.ExecuteReader(); 


      while (dr.Read()) 
      { 
       this.chart1.Series["salaryChart"].Points.AddXY(dr.GetString(1), dr.GetInt32(2)); 

      } 
      cnn.Close(); 
     } 
     catch (Exception) 
     { 

     } 
    } 

Прикрепленные скриншоты chartsScreenshots

ответ

0

код обновления добавьте эту строку this.chart1.Series [ "salaryChart"] Points.Clear(). вот ваш обновленный код

public void loadChart() { 


    // this populates my chart with data from the database 
    SqlConnection cnn = new SqlConnection(connectionString); 

    SqlCommand sqlcmd = new SqlCommand("SELECT * FROM tbl_salary;", cnn); 
    SqlDataReader dr; 


    try 
    { 

     cnn.Open(); 
     dr = sqlcmd.ExecuteReader(); 

this.chart1.Series["salaryChart"].Points.Clear(); 
     while (dr.Read()) 
     { 
      this.chart1.Series["salaryChart"].Points.AddXY(dr.GetString(1), dr.GetInt32(2)); 

     } 
     cnn.Close(); 
    } 
    catch (Exception) 
    { 

    } 
} 
+0

если вы хотите автоматического обновления, то вы можете использовать резьб –

+0

Отлично! Оно работает! Спасибо. – myelow

0

Добавить в диаграмме нагрузки

this.Refresh();

Смежные вопросы