Joseph
Joseph

Reputation: 661

Delete Query says it has no parameter

I have a Gridview control that I'm trying to allow the users to use the delete button to delete the record from the database. When I click the delete button, it tells me that there is no value for the parameter. Here is the relevant markup:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/webvideos.mdb" 
    SelectCommand="SELECT Org_Sec_Atty.ID, ORGANIZATIONS.ORG_NAME, ORG_SECTIONS.SectionName, ATTORNEYS.NAME, ATTORNEYS.LASTNAME, ATTORNEYS.EMAIL, ATTORNEYS.TEL
         FROM (ORGANIZATIONS INNER JOIN (Org_Sec_Atty INNER JOIN ATTORNEYS ON Org_Sec_Atty.Atty_ID = ATTORNEYS.ATTY_ID) ON ORGANIZATIONS.ID = Org_Sec_Atty.OrgID) INNER JOIN ORG_SECTIONS ON Org_Sec_Atty.SecID = ORG_SECTIONS.ID;"
    DeleteCommand="DELETE FROM Org_Sec_Atty WHERE ID = ?">
    <DeleteParameters>
        <asp:Parameter Name="ID" Type="Int32" />
    </DeleteParameters>
</asp:AccessDataSource>

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="20" 
    AllowSorting="True" DataSourceID="AccessDataSource1" >
    <Columns>
        <asp:CommandField ShowDeleteButton="True" />
        <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
        <asp:BoundField DataField="ORG_NAME" HeaderText="Organization" SortExpression="ORG_NAME" />
        <asp:BoundField DataField="SectionName" HeaderText="Section" SortExpression="SectionName" />
        <asp:BoundField DataField="NAME" HeaderText="First Name" SortExpression="NAME" />
        <asp:BoundField DataField="LASTNAME" HeaderText="Last Name" SortExpression="LASTNAME" />
        <asp:BoundField DataField="EMAIL" HeaderText="E-mail" SortExpression="EMAIL" />
        <asp:BoundField DataField="TEL" HeaderText="Phone" SortExpression="TEL" />
    </Columns>
</asp:GridView>

I initially forgot to include the Org_Sec_Atty.ID in my SELECT statement and added it in there later when I clicked the delete button and nothing happened. I tried clearing my browser cache with no luck. Any other ideas?

Upvotes: 0

Views: 34

Answers (1)

Paddy
Paddy

Reputation: 33857

I think that you also need to set the DataKeyNames property in the gridview:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="20" 
    AllowSorting="True" DataSourceID="AccessDataSource1" DataKeyNames="ID" >

This should sort you out.

Upvotes: 1

Related Questions