【发布时间】:2016-01-13 21:51:11
【问题描述】:
我正在学习 ASP,但在使用 asp SqlDataSource 和 GridView 更新数据库时遇到了困难。 我有以下控件:
<asp:SqlDataSource ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:BPersonalConnectionString %>"
OldValuesParameterFormatString="original_{0}"
ConflictDetection="CompareAllValues"
SelectCommand="SELECT [Marca], [Nume], [Prenume], [Salariu], [Profesia] FROM [Salariati]"
UpdateCommand="update [Salariati] set [Marca] = Marca, [Nume] = Nume, [Prenume] = Prenume, [Salariu] = Salariu, [Profesia] = Profesia
where [Marca] = @original_Marca">
<UpdateParameters>
<asp:Parameter Name="Marca" Type="Int16"/>
<asp:Parameter Name="Nume" Type="String" Size="20"/>
<asp:Parameter Name="Prenume" Type="String" Size="20" />
<asp:Parameter Name="Salariu" Type="Int32" />
<asp:Parameter Name="Profesia" Type="String" Size="10" />
<asp:Parameter Name="original_Marca" Type="Int16" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView"
runat="server"
DataSourceID="SqlDataSource1"
AutoGenerateColumns="true"
AutoGenerateEditButton="true"
DataKeyNames="Marca"
AllowPaging="true"
PageSize="3"></asp:GridView>
每当我尝试编辑和更新项目时,我都没有得到任何结果。网格显示的值与更新前完全相同。我没有在文件后面的代码中写任何代码。 我查看了已经在此主题上完成的其他一些示例,但我无法确定更新问题的原因。 有什么提示吗? 谢谢!!!
【问题讨论】:
-
您在更新语句中缺少
@参数符号,这是一个msdn 参考,可以查看SqlDataSource.UpdateParameters Property 如果您需要更多示例,请使用谷歌 -
如果我把 @ 然后我得到错误:“必须声明标量变量:@Marca”...
-
要么切换到ControlParameters,要么在后面的代码中设置。
-
你为什么不创建一个方法来更新数据库,在我个人使用 UpdateParameters 的代码中使用不同的方法在我看来已经过时了
-
经过一些尝试,我发现上面的代码有什么问题。首先,由于 Marca 是 PK 不应该在 WHERE 子句之前使用它的更新命令。我也删除了 UpdateParameters 部分。我为每个要设置的值添加了@。这意味着一对 Field=Value 现在是 Field=@Value
标签: c# asp.net sqldatasource