<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”更改为
时,上述方法有效WHERE [id] = @id
或
WHERE [regGroupID] = 2
答案 0 :(得分:5)
您需要在DataKeyNames
声明中的GridView
集合中添加“regGroupID”。像这样:
<asp:GridView ID="yourGridViewId" DataKeyNames="regGroupID" ... >
...
</asp:GridView>
请参阅DataKeyNames
documentation:
您必须为自动设置DataKeyNames属性 更新和删除GridView控件的功能。价值 将这些关键字段传递给数据源控件以便 指定要更新或删除的行。
注意:自从我使用它以来已经有一段时间了,因此您可能需要同时包含主键和其他键字段。像这样:
DataKeyNames="id,regGroupID"