2016-03-13 3 views
0

Я использую Visual Studio 2015 и Entity Framework 6. У меня есть Gridview. Я пытаюсь удалить и отредактировать. Я пробовал различные методы, и ничего не работает.ASP.net EF Gridview Row Удалить

Вот что у меня есть:

protected void gvExOr_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     using (PizzaParlor2Entities po = new PizzaParlor2Entities()) 
     { 
      var PizzaID = Convert.ToInt32(gvExOr.Rows[e.RowIndex].Cells[0].Text.ToString()); 
      // var SizeID = Convert.ToInt32(gvExOr.Rows[e.RowIndex].Cells[1].Text.ToString()); 


      Pizza newPiz = new Pizza() 
      { 
       PizzaID = PizzaID 
      }; 


      po.SaveChanges(); 

     } 
    } 

Мой GridView:

<asp:GridView ID="gvExOr" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" 
       DataKeyNames="PizzaID,OrderID" OnRowDeleting="gvExOr_RowDeleting" OnRowUpdating="gvExOr_RowUpdating" 
       AllowPaging="true" AllowSorting="true" AutoGenerateColumns="false"> 

    <Columns> 
     <asp:CommandField ShowDeleteButton="True" ShowEditButton="true" /> 

     <asp:BoundField DataField="PizzaID" HeaderText="PizzaID" ReadOnly="True" SortExpression="PizzaID" /> 
     <asp:BoundField DataField="OrderID" HeaderText="OrderID" ReadOnly="True" SortExpression="OrderID" /> 
     <asp:BoundField DataField="FirstName" HeaderText="First Name" ReadOnly="True" SortExpression="FirstName" /> 
     <asp:BoundField DataField="LastName" HeaderText="Last Name" ReadOnly="True" SortExpression="LastName" /> 
     <asp:BoundField DataField="Size" HeaderText="Size" SortExpression="Size" /> 
     <asp:BoundField DataField="Crust" HeaderText="Crust" SortExpression="Crust" /> 
     <asp:BoundField DataField="Sauce" HeaderText="Sauce" SortExpression="Sauce" /> 
     <asp:CheckBoxField DataField="Delivery" HeaderText="Delivery" SortExpression="Delivery" /> 
     <asp:BoundField DataField="OrderPrice" HeaderText="OrderPrice" DataFormatString="{0:c}" SortExpression="OrderPrice" /> 
    </Columns> 

       <AlternatingRowStyle BackColor="White" /> 
       <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
       <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
       <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
       <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
       <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
       <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
       <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
       <SortedDescendingHeaderStyle BackColor="#820000" /> 
      </asp:GridView> 

Как сделать удаление и редактирование строк работать на ASP.net Entity Framework 6?

+0

Когда вы говорите «Я пробовал различные методы и ничего не работает» ... что именно вы пробовали и что именно делает «ничего не работает» (ошибки, какое-то необъяснимое поведение, отсутствие желаемого поведения)? –

ответ

0

С помощью вашего кода вы создаете новые объекты Pizza.

Добавить событие RowEditing в вашу сетку и в случае поиска объекта по идентификатору (желательно, сохранить идентификатор объекта в столбце сетки), обновить его данные и сохранить его снова.

Для редактирования:

using (PizzaParlor2Entities po = new PizzaParlor2Entities()) 
{ 
    var PizzaID = Convert.ToInt32(gvExOr.Rows[e.RowIndex].Cells[0].Text.ToString()); 
    var oldPizza = po.Pizza.Find(PizzaID); // retrieve the object by the id 
    // update the needed data 
    oldPizza.Price = gvExOr.Rows[e.RowIndex].Cells[1].Text.ToString(); 

    //save changes to DB 
    po.SaveChanges(); 

} 

Для удаления:

using (PizzaParlor2Entities po = new PizzaParlor2Entities()) 
{ 
    var PizzaID = Convert.ToInt32(gvExOr.Rows[e.RowIndex].Cells[0].Text.ToString()); 
    po.Pizza.Delete(p => p.PizzaID == PizzaID); // delete the object by the id 
    //save changes to DB 
    po.SaveChanges(); 

} 
+0

Ничего не работает ... и там нет .Delete, я попытался изменить его на .Remove, но тогда все тоже неправильно. – wiredlime2015

+0

Вы используете Code First (вы создаете классы, которые генерируют базу данных) или Database First (у вас есть база данных en reverse engineer для классов)? Кроме того, вы проверяли, стреляют ли события и что код редактирования выполняется? –

+0

Я верю в базу данных. У меня есть функция удаления, работающая сейчас (по-другому), но обновления все равно нет. Обновление на этом этапе просто возвращает исходное значение вместо новых типов в одном. – wiredlime2015