Значения DataGrid не обновляются после функции редактирования / обновления - PullRequest
1 голос
/ 24 марта 2011

Я использую следующий код для обновления данных в моей сетке данных.

Но когда я нажимаю обновить, значение обновляется в базе данных, но оно все еще показывает старое значение в сетке данных.

Если я обновлю страницу после этого, тогда сетка данных покажет обновленное значение.

Что может быть не так?

Команда обновления кода:

protected void MySQLDataGrid2_UpdateCommand(object source, DataGridCommandEventArgs e)
{
      string newData;

      TextBox aTextBox;
      aTextBox = (TextBox)(e.Item.Cells[0].Controls[0]);
      newData = aTextBox.Text;

      decimal comm = Convert.ToDecimal(newData);

      string UpdateHiveCommission = "Update tbl_HiveCommission set Commission = '" + Convert.ToDecimal(newData) + "'";
      MySqlConnection objMyCon3 = new MySqlConnection(strProvider);
      objMyCon3.Open();
      MySqlCommand cmd3 = new MySqlCommand(UpdateHiveCommission, objMyCon3);
      cmd3.ExecuteNonQuery();
      objMyCon3.Close();

      MySQLDataGrid2.EditItemIndex = -1;
      MySQLDataGrid2.DataBind();
}

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

быстрое исправление:

Вы можете попробовать переместить эту строку в Page_Load ()

MySQLDataGrid2.DataBind();

Или, после выполнения команды обновления, «Обновить» страницу:

Response.Redirect(Request.RawUrl);
2 голосов
/ 24 марта 2011

Я думаю, вам нужно снова вызвать механизм загрузки - поскольку источник данных вашей сетки не обновляется, поэтому он будет содержать старые данные из вашего последнего выбора.Если у вас возникают проблемы с производительностью при повторной загрузке данных, вы можете вручную изменить данные отредактированной строки.

1 голос
/ 24 марта 2011

После успешного редактирования.

Попробуйте вызвать свой метод привязки данных.

что-то вроде:

private void BindMEthod()
{

//Your code in binding data to your datagridview.

}

        protected void MySQLDataGrid2_UpdateCommand(object source, DataGridCommandEventArgs e) {     
      string newData;  
          TextBox aTextBox;   
        aTextBox = (TextBox)(e.Item.Cells[0].Controls[0]);     
      newData = aTextBox.Text;       
     decimal comm = Convert.ToDecimal(newData);  
          string UpdateHiveCommission = "Update tbl_HiveCommission set Commission = '" + Convert.ToDecimal(newData) + "'";    
       MySqlConnection objMyCon3 = new MySqlConnection(strProvider);   
        objMyCon3.Open();     
      MySqlCommand cmd3 = new MySqlCommand(UpdateHiveCommission, objMyCon3);   
        cmd3.ExecuteNonQuery();     
      objMyCon3.Close();    
       // MySQLDataGrid2.EditItemIndex = -1;       --
   // MySQLDataGrid2.DataBind(); 

       //Replace with this

    BindMEthod();

    } 

Надеюсь, эта помощь.1010 *

...