2011-09-17 10 views
1

DataKeyNamesの値でこの問題が発生しました。各行の主キーはGameIDですが、DataKeyNamesGameIDに設定しても機能しません。GridViewでDataKeyNamesに問題が発生しました

フォームビューに追加情報を配置したいので、私はグリッドビューで選択を有効にしています。したがって、ユーザーがSelectをクリックすると、フォームビューに行に関する追加情報が表示されます。

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" DataKeyNames="Team, Opponent" 
    ForeColor="#333333" GridLines="None" Height="360px" Width="641px" 
    onselectedindexchanged="GridView1_SelectedIndexChanged" > 
<AlternatingRowStyle BackColor="White" /> 

<Columns> 
    <asp:BoundField DataField="Team" HeaderText="Team" SortExpression="Team" /> 
    <asp:BoundField DataField="Opponent" HeaderText="Opponent" 
     SortExpression="Opponent" /> 
    <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" /> 
</Columns> 

<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
<SortedAscendingCellStyle BackColor="#FDF5AC" /> 
<SortedAscendingHeaderStyle BackColor="#4D0000" /> 
<SortedDescendingCellStyle BackColor="#FCF6C0" /> 
<SortedDescendingHeaderStyle BackColor="#820000" /> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT [Team], [Opponent], [Date] FROM [game] WHERE ([Team] = @Team)"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="GridView1" DefaultValue="Arsenal" Name="Team" 
      PropertyName="SelectedValue" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
+1

SQLデータソースにはクエリにGameIDがありません...この値はどこから来ますか? –

答えて

0

あなたはDataKeyNames="GameID"から
DataKeyNames="Team, Opponent"の変更を意味していますか?その場合は、SqlDatasourceの選択クエリにGameIDを追加する必要もあります。あなたの貼り付けられたコードは、Teamと ``相手を取るだけです。

変更は
SelectCommand="SELECT [Team], [Opponent], [Date] FROM [game] WHERE ([Team] = @Team)">
SelectCommand="SELECT [GameID], [Team], [Opponent], [Date] FROM [game] WHERE ([Team] = @Team)">


にテーブルのフィールドの名前、GameIDをすることを前提とします。