DataGrid值在编辑/更新功能后未更新

时间:2011-03-24 08:50:30

标签: .net asp.net gridview .net-3.5

我使用以下代码更新数据网格中的数据。

但是当我点击更新时,数值在数据库中更新,但它仍然在datagrid中显示旧值。

如果我在此之后刷新页面,则datagrid会显示更新的值。

可能出现什么问题?

代码更新命令:

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 个答案:

答案 0 :(得分:2)

我认为您需要再次调用您的加载机制 - 因为您的网格的数据源未更新,因此它将保留您上次选择的旧数据。 如果再次加载数据时出现性能问题,则可以手动更改已编辑行的数据。

答案 1 :(得分:2)

快速修复:

您可以尝试将此行移至Page_Load()

MySQLDataGrid2.DataBind();

或者,在执行更新命令后,通过以下方式“刷新”页面:

Response.Redirect(Request.RawUrl);

答案 2 :(得分:1)

成功编辑后。

尝试调用您的Databind方法。

类似的东西:

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

    } 

希望得到这个帮助。

此致