I'm trying to put together what I thought was a simple gridview/
detailsview. But I'm running into this when I try to view the page.
(The rest of the page, loads fine if I take the grid, details, and
datasources.)

"Data keys must be specified on GridView 'gvAddresses' before the
selected data keys can be retrieved.  Use the DataKeyNames property to
specify data keys."

I would try, and have tried, adding the DataKeyNames, but I can't seem
to figure out what it wants there. Once I add the property it lets the
page load, as long as I don't pass the customerid query string. I
tried ADDRESS_ID and CUSTOMER_ID but got this error:
"DataBinding: 'System.Data.DataRowView' does not contain a property
with the name 'ADDRESS_ID'."

ADDRESS_ID is the primary key, and CUSTOMER_ID is a foreign key.

When I test the SQL, it returns the expected rows.

Here's my code of the grid view, it's sql data source, the details
view, and it's sql data source. It was all autogenerated the same way
as the rest of the gridview/detailsviews on the page.

<asp:GridView ID="gvAddresses" runat="server"
AutoGenerateColumns="False" DataSourceID="sdsAddresses">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="TYPE" HeaderText="TYPE"
SortExpression="TYPE" />
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="sdsAddresses" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        ProviderName="<%$
ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="SELECT [TYPE] FROM [ADDRESSES] WHERE ([CUSTOMER_ID]
= ?)">
        <SelectParameters>
            <asp:QueryStringParameter Name="CUSTOMER_ID"
QueryStringField="customerid" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

    <asp:DetailsView ID="DetailsView3" runat="server"
AutoGenerateRows="False" DataSourceID="sdsAddressDetails"
        Height="50px" Width="125px">
        <Fields>
            <asp:BoundField DataField="STREET" HeaderText="STREET"
SortExpression="STREET" />
            <asp:BoundField DataField="CITY" HeaderText="CITY"
SortExpression="CITY" />
            <asp:BoundField DataField="STATE" HeaderText="STATE"
SortExpression="STATE" />
            <asp:BoundField DataField="ZIP" HeaderText="ZIP"
SortExpression="ZIP" />
        </Fields>
    </asp:DetailsView>

    <asp:SqlDataSource ID="sdsAddressDetails" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        ProviderName="<%$
ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="SELECT [STREET], [CITY], [STATE], [ZIP] FROM
[ADDRESSES] WHERE ([ADDRESS_ID] = ?)">
        <SelectParameters>
            <asp:ControlParameter ControlID="gvAddresses"
Name="ADDRESS_ID" PropertyName="SelectedValue"
                Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>

I think that's everything there is to know... Thank in advance.

Reply via email to