4
<asp:SqlDataSource ID="HopefulDataSource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
    SelectCommand= "SELECT id, regGroupID, amountReceived, other FROM table" 
    UpdateCommand="UPDATE table
                        SET [amountReceived] = @amountReceived
                        WHERE [regGroupID] = @regGroupID">
    <SelectParameters>
        <asp:ControlParameter ControlID="ddlCourses" Name="ddlSelectedCourse" PropertyName="SelectedValue" Type="String" />
    </SelectParameters>

    <UpdateParameters>
        <asp:Parameter Name="regGroupID"        Type="Int32" />
        <asp:Parameter Name="amountReceived"    Type="Decimal" />

        other parameters

        <asp:Parameter Name="id"                Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource>

当我将“WHERE [regGroupID] = @regGroupID”更改为

哪里 [id] = @id

或者

WHERE [regGroupID] = 2

4

1 回答 1

5

您需要在声明中将“regGroupID”添加到DataKeyNames集合中GridView。像这样的东西:

<asp:GridView ID="yourGridViewId" DataKeyNames="regGroupID" ... >
    ...
</asp:GridView>

请参阅DataKeyNames文档

您必须设置 DataKeyNames 属性才能使 GridView 控件的自动更新和删除功能起作用。这些关键字段的值被传递给数据源控件,以指定要更新或删除的行。

注意:自从我使用它已经有一段时间了,所以您可能需要同时包含主键和其他键字段。像这样:

DataKeyNames="id,regGroupID"
于 2013-02-26T20:04:04.160 回答