2016-03-13 60 views
0

我使用的是Visual Studio 2015,实体框架6和C#。我有一个gridview会删除,但我需要它编辑单击编辑时的行。我做了一个存储过程,但我无法得到它的工作。ASP.net EF6 Gridview更新行

我有两个存储过程(一个用于测试):

spUpdatePizza3(Size, PizzaID) 
spUpdatePizza2(Size, Crust, Sauce, OrderCost,PizzaID) 

这是我有:

protected void gvExOr_RowEditing(object sender, GridViewEditEventArgs e) 
    { 

     using (PizzaParlor2Entities po = new PizzaParlor2Entities()) 
     { 

      String PizzaID = gvExOr.Rows[e.NewEditIndex].Cells[2].Text.ToString(); 
      String Size = gvExOr.Rows[e.NewEditIndex].Cells[6].Text.ToString(); 

      // String Crust = gvExOr.Rows[e.NewEditIndex].Cells[7].Text.ToString(); 
      // String Sauce = gvExOr.Rows[e.NewEditIndex].Cells[8].Text.ToString(); 
      // String Delivery = gvExOr.Rows[e.NewEditIndex].Cells[9].Text.ToString(); 
      // String OrderCost = gvExOr.Rows[e.NewEditIndex].Cells[10].Text.ToString(); 

      // string size = gvExOr.SelectedRow.Cells[6].Text; 
     // lblTest.Text = size; 

      gvExOr.EditIndex = e.NewEditIndex; 

      // po.spUpdatePizza3(Size, Convert.ToInt32(PizzaID)); 
      // po.spUpdatePizza2(Size, Crust, Sauce, Convert.ToDecimal(OrderCost), Convert.ToInt32(PizzaID)); 

     } 

     gvExOr.DataBind(); 

    } 

问:我如何获得该行使用存储过程来更新(或任何方法,在这一点上)与实体框架6?

回答

1

使用OnRowUpdating事件真正保存数据:

protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = gvExOr.Rows[e.RowIndex]; 
    var pizzaId = gvExOr.DataKeys[e.RowIndex].Values[0]; // Set this in markup of grid 
    string size = (row.FindControl("txtSize") as TextBox).Text; // Assumes you have EditItemTemplate 
    using (PizzaParlor2Entities entities = new PizzaParlor2Entities()) 
    { 
     Pizza pizza = entities.Pizzas.First(p => p.PizzaID == pizzaID); 
     pizza.Size = size; 
     entities.SaveChanges(); 
    } 
    gvExOr.EditIndex = -1; 
    this.BindGrid(); 
} 

http://www.aspsnippets.com/Articles/Select-Insert-Edit-Update-and-Delete-in-GridView-using-Entity-Framework-in-ASPNet.aspx