未重新加载数据到datagridview的C#数据

未重新加载数据到datagridview的C#数据,c#,mysql,.net,winforms,datagridview,C#,Mysql,.net,Winforms,Datagridview,当我点击refresh按钮时,我试图将数据重新加载到datagridview,但点击后数据不会刷新。我正在使用MySQL数据库,当我启动程序时,我进入数据库管理器SQLYog并手动对该行进行更改。之后,我切换到我的应用程序,并按下刷新按钮,se的应用程序工作,但没有发生任何事情。我不知道我做错了什么,网格中的什么数据没有刷新 这是我的代码: class MainWindow : Form { private MySqlDataAdapter adapter; private My

当我点击
refresh
按钮时,我试图将数据重新加载到
datagridview
,但点击后数据不会刷新。我正在使用MySQL数据库,当我启动程序时,我进入数据库管理器
SQLYog
并手动对该行进行更改。之后,我切换到我的应用程序,并按下刷新按钮,se的应用程序工作,但没有发生任何事情。我不知道我做错了什么,网格中的什么数据没有刷新

这是我的代码:

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);
    }
}
试试这个:

    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();
    }
}

你应该写这个。这可能会解决你的问题

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;
        String sql = "SELECT * FROM grupe_artikala";
    }

   // Reload click
    private void reload_Click(object sender, EventArgs e)
    {
        GetData(sql);
    }
}

这肯定会产生错误<代码>字符串sql无法在
重新加载\u单击事件上访问。加载表单时的输出是什么?你说的很糟糕。对不起,我不能接受回答“否”不起作用。再次,结果是一些。当我在数据库中编辑并按下重新加载按钮时,什么都没有发生@Ivan或者您可能需要在调用GetData方法之后使用以下语句:
datagridview1.update()
datagridview1.refresh()
@Ivan i使用datagridviewNope的update和refresh方法编辑了代码,但代码再次不起作用。我不明白是什么happening@Ivan好的,我再次编辑了代码,请再试一次。我猜这是MySql的问题,我用MsSql检查了你的代码,工作正常。您说过您添加了带有
SQLYog
的记录,
SQLYog
MySqlConnection
冲突吗?没有任何一种方法是完美的。但我不知道这是什么问题