2016-03-13 62 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