2012-07-06 50 views
1

我試圖使用ObjectDataSource爲我的GridView指定一個DeleteMethod,但無論我嘗試什麼,看起來像DeleteMethod都不會被調用。GridView中的ObjectDataSource和DeleteMethod

我的代碼是:

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

我有一個名爲 「Database1Entities」 持有4個簡單的行的數據庫實體模型。 我錯過了什麼?

回答

1

你必須添加DataKeyNames到Gridview知道你的數據綁定的id是什麼。

<asp:GridView ID="GridView1" runat="server" 
     AutoGenerateColumns="False" 
     DataSourceID="dsGridView" 
     AutoGenerateDeleteButton="True" 
     DataKeyNames="CustomerID"> 
相關問題