2012-07-06 3 views
1

J'essaie d'utiliser ObjectDataSource pour spécifier un DeleteMethod pour mon GridView, mais peu importe ce que j'essaie, il semble que le DeleteMethod ne soit pas appelé.ObjectDataSource et DeleteMethod dans GridView

Mon code est:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="dsGridView" AutoGenerateDeleteButton="True"> 
     <Columns> 
      <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" 
       SortExpression="CustomerID" /> 
      <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
       SortExpression="FirstNenter code hereame" /> 
      <asp:BoundField DataField="LastName" HeaderText="LastName" 
       SortExpression="LastName" /> 
      <asp:BoundField DataField="Country" HeaderText="Country" 
       SortExpression="Country" /> 
     </Columns> 
    </asp:GridView> 

     <asp:ObjectDataSource ID="dsGridView" runat="server" 
     SelectMethod="GetCustomerByCountry" DeleteMethod="DeleteRow" TypeName="WebApplication1.App_Code.DAL"> 
     <SelectParameters> 
      <asp:ControlParameter 
       ControlID="DropDownList1" 
       DefaultValue="NULL" 
       Name="Country" 
       PropertyName="SelectedValue" 
       Type="String" /> 
     </SelectParameters> 
     <DeleteParameters> 
      <asp:Parameter 
       Name="CustomerID" 
       Type="Int32" /> 
     </DeleteParameters> 
    </asp:ObjectDataSource> 

public static void DeleteRow(int CustomerID) 
    { 
     Database1Entities de = new Database1Entities(); 

     var LQ = (from s in de.Customers 
        where s.CustomerID == CustomerID 
        select s).FirstOrDefault(); 

     if (LQ != null) 
     { 
      de.Customers.DeleteObject(LQ); 
      de.SaveChanges(); 
     } 
    } 

J'ai un modèle d'entité de base de données appelée "Database1Entities" qui contient 4 lignes simples. Qu'est-ce qui me manque?

Répondre

1

Vous devez ajouter le DataKeyNames à la Gridview sait quel est l'ID de votre databound.

<asp:GridView ID="GridView1" runat="server" 
     AutoGenerateColumns="False" 
     DataSourceID="dsGridView" 
     AutoGenerateDeleteButton="True" 
     DataKeyNames="CustomerID"> 
Questions connexes