I have a page with two GridViews using an object data source. Basically, it's a drill-down report. You select something in the first grid and it shows related data in the second grid.

The problem I'm having is with update/delete in the second grid. It calls Update/Delete but it's passing 0 for the first key field instead of the current id. I added a handler for RowUpdating to see if it's listed in e.Keys. It is however, it is 0. How do I get it to have the current value?

' First Grid
Code:
<asp:GridView
    ID="viewQueues"
    runat="server"
    AutoGenerateColumns="False"
    DataKeyNames="QueueId"
    DataSourceID="dataQueues">
    <Columns>
        <asp:CommandField
            ShowEditButton="True"
            ShowSelectButton="True"
            ShowDeleteButton="True" />
        <asp:BoundField
            DataField="Division"
            HeaderText="Division"
            SortExpression="Division" />
        <asp:TemplateField
            HeaderText="Division Head"
            SortExpression="DivisionHeadPersonId">
            <EditItemTemplate>
                <asp:DropDownList
                    ID="lstDivisionHeads"
                    runat="server"
                    DataSourceID="dataPeopleList"
                    DataTextField="Name"
                    DataValueField="PersonId"
                    SelectedValue='<%# Bind("DivisionHeadPersonId") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label
                    ID="Label1"
                    runat="server"
                    Text='<%# GetNameFromPersonId(Eval("DivisionHeadPersonId")) %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField
            HeaderText="Payer Person"
            SortExpression="PayerPersonId">
            <EditItemTemplate>
                <asp:DropDownList
                    ID="lstPayers"
                    runat="server"
                    DataSourceID="dataPeopleList"
                    DataTextField="Name"
                    DataValueField="PersonId"
                    SelectedValue='<%# Bind("PayerPersonId") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label
                    ID="Label2"
                    runat="server"
                    Text='<%# GetNameFromPersonId(Eval("PayerPersonId")) %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
' Second Grid
Code:
<asp:GridView
    ID="viewSteps"
    runat="server"
    AutoGenerateColumns="False"
    DataKeyNames="QueueId,StepNumber"
    DataSourceID="dataQueueSteps">
    <Columns>
        <asp:CommandField
            ShowDeleteButton="True"
            ShowEditButton="True" />
        <asp:TemplateField
            HeaderText="PersonId"
            SortExpression="PersonId">
            <EditItemTemplate>
                <asp:DropDownList
                    ID="lstPeople"
                    runat="server"
                    DataSourceID="dataPeopleList"
                    DataTextField="Name"
                    DataValueField="PersonId"
                    SelectedValue='<%# Bind("PersonId") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label
                    ID="Label1"
                    runat="server"
                    Text='<%# GetNameFromPersonId(Eval("PersonId")) %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
' Object Data Sources
Code:
<asp:ObjectDataSource
    ID="dataQueues"
    runat="server"
    SelectMethod="GetQueues"
    TypeName="ApprovalQueue.Data+ApprovalQueueDAL"
    UpdateMethod="UpdateQueue"
    DeleteMethod="DeleteQueue">
    <DeleteParameters>
        <asp:Parameter Name="queueId" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="queueId" Type="Int32" />
        <asp:Parameter Name="division" Type="String" />
        <asp:Parameter Name="divisionHeadPersonId" Type="Int32" />
        <asp:Parameter Name="payerPersonId" Type="Int32" />
    </UpdateParameters>
</asp:ObjectDataSource>

<asp:ObjectDataSource
    ID="dataQueueSteps"
    runat="server"
    DeleteMethod="DeleteStep"
    SelectMethod="GetSteps"
    TypeName="ApprovalQueue.Data+ApprovalQueueStepDAL"
    UpdateMethod="UpdateStep">
    <DeleteParameters>
        <asp:Parameter Name="queueId" Type="Int32" />
        <asp:Parameter Name="stepNumber" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="queueId" Type="Int32" />
        <asp:Parameter Name="stepNumber" Type="Int32" />
        <asp:Parameter Name="personId" Type="Int32" />
    </UpdateParameters>
    <SelectParameters>
        <asp:ControlParameter
            ControlID="viewQueues"
            Name="queueId"
            PropertyName="SelectedValue"
            Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>
Thanks,