2015-06-02 2 views
1

Я не могу показаться, что это видно. Я использую datagridview в VS2013. У меня есть простой скрипт для вытягивания таблиц и обновления сетки. Кажется, он работает отлично, за исключением того, что datagridview, похоже, добавляет столбцы вместо замены их новыми.DataGridView, сохраняющий старые столбцы

Я много часов оглядывался и пробовал много средств. Может быть, вы можете помочь?

Вот код, я использую до сих пор:

public CentralStation(MySqlConnection _myConnection) 
{ 
    InitializeComponent(); 
    myConnection = _myConnection; 
    myAdapter = new MySqlDataAdapter(); 
    myCommand = new MySqlCommand(" ", myConnection); 
    myDataTable = new DataTable(); 
    myBinder = new BindingSource(); 

    PopulateTableSelection(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     myCommand.CommandText = "SELECT * FROM tcpro." + this.tableMenuList.Text + ";"; 
     myAdapter.SelectCommand = myCommand; 
     myDataTable.Clear(); 
     myAdapter.Fill(myDataTable); 
     myBinder.DataSource = null; 
     myBinder.DataSource = myDataTable; 
     dataGridView1.DataSource = myBinder; 
     myAdapter.Update(myDataTable); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

Рассмотрите возможность использования параметров в вашем запросе 'SQL' в коде для предотвращения инъекций SQL. – smr5

+0

Ненавижу беспокоиться, так как это не в тему, но можете ли вы привести пример? – Nuds

+0

@DonaldCrockettPerry, вот ссылка о том, как использовать параметры. Кроме того, в вашем запросе рекомендуется использовать оператор 'using'. Прочитайте больше. http://www.dotnetperls.com/sqlparameter – smr5

ответ

1
myCommand.CommandText = "SELECT * FROM tcpro." + this.tableMenuList.Text + ";"; 

myCommand выбирает данные из разных таблиц БД, не так ли? эти таблицы имеют разные столбцы

myAdapter заполняет ту же таблицу

myAdapter.Fill(myDataTable); 

адаптер данных не четкие строки и вам нужно myDataTable.Clear(); для этого

поэтому адаптер данных не ясно столбцов и вам нужно ясно их тоже:

myDataTable.Clear(); 
myDataTable.Columns.Clear(); 

не DataGridView вина

+0

Вот и все! Ровно спасибо миллион! – Nuds

+0

@ DonaldCrockettPerry, хорошо. если ответ помог, отметьте его как принятый, пожалуйста – ASh

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