2016-09-01 6 views
0

refreshボタンをクリックしたときにデータをdatagridviewにリロードしようとしましたが、クリック後にデータがリフレッシュされません。 MySQLデータベースを使用していて、プログラムを起動するときにデータベース管理者SQLYogに入って、その行を手動で変更します。その後、私は私のアプリに切り替え、セーブするためにリフレッシュボタンを押しても、アプリは動作しますが、何も起こっていません。私は私が間違って何をすべきかを知らないと、グリッド内のデータが更新されませんwhay ...ここDataGridviewへのC#データが再ロードされない

は私のコードです:

class MainWindow : Form 
{ 
    private MySqlDataAdapter adapter; 
    private MySqlCommandBuilder cmd; 
    private BindingSource bs = new BindingSource(); 
    private DataGridView dataGridView1; 
    private DataTable dt = new DataTable(); 

    // Constructor 
    public MainWindow() 
    { 
     this.InitializeComponent(); 
    } 
    // Get data 
    public void GetData(string sql) 
    {   
     using (var conn = new MySqlConnection(Properties.Settings.Default.connString)) 
     { 
      try 
      { 
       conn.Open(); 
       adapter = new MySqlDataAdapter(sql, conn); 
       cmd = new MySqlCommandBuilder(adapter); 
       adapter.Fill(dt); 
       bs.DataSource = dt;       
      } 
      catch (MySqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     }   
    } 

    // Load 
    private void MainWindow_Load(object sender, EventArgs e) 
    { 
     dataGridView1.DataSource = bs; 
     GetData("SELECT * FROM grupe_artikala"); 
    } 

    // Reload click 
    private void reload_Click(object sender, EventArgs e) 
    { 
     GetData(adapter.SelectCommand.CommandText); 
    } 
} 
+0

私はそれがMySqlの問題だと思う、私はMsSqlであなたのコードをチェックし、正常に動作します。あなたは 'SQLYog'でレコードを追加すると言っていますが、' SqlYog'と 'MySqlConnection'は競合していますか? – Berkay

+0

いいえevrerything work perfect。しかし、私はこの問題が何であるか知りません – Ivan

答えて

0

この試してみてください:あなたはこのことを書くべき

class MainWindow : Form 
    { 
    private MySqlDataAdapter adapter; 
    private MySqlCommandBuilder cmd; 
    private BindingSource bs = new BindingSource(); 
    private DataGridView dataGridView1; 
    private DataTable dt = new DataTable(); 
    String sql = "SELECT * FROM grupe_artikala"; 

    // Constructor 
    public MainWindow() 
    { 
     this.InitializeComponent(); 
    } 
    // Get data 
    public void GetData(string sql) 
    {   
     using (var conn = new MySqlConnection(Properties.Settings.Default.connString)) 
     { 
      try 
      { 
       conn.Open(); 
       adapter = new MySqlDataAdapter(sql, conn); 
       cmd = new MySqlCommandBuilder(adapter); 
       adapter.Fill(dt); 
       bs.DataSource = dt;       
      } 
      catch (MySqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     }   
    } 

    // Load 
    private void MainWindow_Load(object sender, EventArgs e) 
    { 
     dataGridView1.DataSource = bs; 
     GetData(sql); 
    } 

    // Reload click 
    private void reload_Click(object sender, EventArgs e) 
    { 
     dataGridView1.DataSource = null; 
     dataGridView1.DataSource = bs; 
     GetData(sql); 
     datagridview1.update(); 
     datagridview1.refresh(); 
    } 
} 
+0

いいえ動作しません。もう一度結果が出ます。私がデータベースで編集し、リロードボタンを押すと、nothhingが起こっています! – Ivan

+0

@Ivanコードを編集しました。もう一度 – TimeToCode

+0

@Ivanを入力してください。** GetData **メソッドの呼び出し後にこの文を使用する必要があります。'datagridview1.refresh();' – TimeToCode

-3

を。これはあなたの問題を解決するかもしれません

+0

それは間違いなく間違いを与えます。 'String sql'は' reload_Click event'で到達できません。フォームがロードされたときの出力は何ですか? – Berkay

+0

あなたが言うことは、本当に悪いことです。申し訳ありませんが、私はその答えを受け入れることはできません – Ivan

関連する問題