2011-01-24 5 views
1

У меня есть DataGridView, я обязывающие к источнику и отображение с помощью этого метода:DataGridView не показывая последние данные

private void tabPage2_Enter(object sender, EventArgs e) 
    { 
     HostTableList.Clear(); 

     try 
     { 
      conn.Open(); 

      MySqlCommand command = conn.CreateCommand(); 
      command.CommandText = "SELECT HostName FROM test.hosts"; 

      MySqlDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       HostTableList.Add(new Hosts(reader["HostName"].ToString())); 
      } 

      this.dgvHosts.DataSource = HostTableList; 
      this.dgvHosts.ReadOnly = true; 
      this.dgvHosts.Show(); 

     } 
     catch (Exception ex) 
     { 
      tbxLog.AppendText("Unable to load table from database. Exception: " + ex.Message); 
      tbxLog.AppendText(Environment.NewLine); 
     } 
     finally 
     { 
      conn.Close(); 
     } 

    } 

У меня есть еще один метод, который получает провоцируется, когда пользователь заполняет новое имя хоста и нажимает кнопку «Добавить». последняя строка в этом методе, вызывает указанные выше способ, как это:

tabPage2_Enter(null, null); 

Однако, когда tabPage2_Enter вызывается после добавления нового хозяина, то DGV не показывает этот новый хозяин. Я прошел через код и как раз перед привязкой DGV к HostTableList, список содержит ВСЕ хосты, в том числе новый, но DGV не показывает этот узел, пока я не выйду из формы, и снова запустите его.

ответ

2

Может быть DataGrid считает, что DataSource не изменился, поскольку ссылка не изменилась. Попробуйте воссоздать HostTableList или установить dgvHosts.DataSource на null, а затем на HostTableList или использовать метод ResetBindings()

+0

Установка DataSource на null исправлена. Благодаря тонну. – xbonez

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