2

私はこれを持っていますGridView

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" 
        GridLines="None">
        <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:TemplateField ShowHeader="False">
                    <EditItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" 
                            CommandName="Update" Text="Update"></asp:LinkButton>
                        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
                            CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                            CommandName="Edit" Text="Edit"></asp:LinkButton>
                        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
                            CommandName="Delete" 
                            onclientclick="javascript:return confirm('are you sure you want to delete.');" 
                            Text="Delete"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            <asp:BoundField DataField="id" HeaderText="id" SortExpression="id"/>
            <asp:BoundField DataField="email" HeaderText="email" SortExpression="email" />
            <asp:BoundField DataField="first" HeaderText="first" SortExpression="first" />
            <asp:BoundField DataField="last" HeaderText="last" SortExpression="last" />
            <asp:BoundField DataField="gender" HeaderText="gender" 
                SortExpression="gender" />
            <asp:BoundField DataField="birthday" HeaderText="birthday" 
                SortExpression="birthday" />
        </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>

そして、これは次のSqlDataSourceとおりです。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:clientConnectionString %>" 
        ProviderName="<%$ ConnectionStrings:clientConnectionString.ProviderName %>" 
        SelectCommand="SELECT * FROM Client;" 
        DeleteCommand="DELETE FROM Client WHERE id = @id AND email = @email;">

        <DeleteParameters>
            <asp:Parameter Name="id" Type="String" />
            <asp:Parameter Name="email" Type="String" />
        </DeleteParameters>

    </asp:SqlDataSource>

そして、削除を実行しようとすると、次のエラーが発生します。

Parameter '@id' must be defined. 
Exception Details: MySql.Data.MySqlClient.MySqlException: Parameter '@id' must be defined.
4

1 に答える 1

2

DataKeyNames属性を GridViewに追加することができます

GridView コントロールの自動更新機能と削除機能を機能させるには、DataKeyNames プロパティを設定する必要があります。これらのキー フィールドの値は、更新または削除する行を指定するためにデータ ソース コントロールに渡されます。このリンクを参照してください

DataKeyNames="id,email"

Gridview のコンテキストで。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" 
        GridLines="None"  DataKeyNames="id,email">
于 2013-03-03T20:12:24.047 に答える