我正在使用ASP.net 3.5,我收到此错误。
Must declare the scalar variable "@Ad1".
我做错了什么?
我的提交按钮
Protected Sub btnUpdate_Click
Try
AddressSRC.Update()
lblResult.Visible = True
Catch ex As Exception
lblResult.Visible = True
lblResult.Text = ex.Message
End Try
LoadData()
End Sub
我的SQLDatasource所在的ASPX页面 - 虽然我有parramators。
<asp:SqlDataSource ID="AddressSRC" runat="server"
ConnectionString="<%$ ConnectionStrings:SLConn %>"
ProviderName="<%$ ConnectionStrings:SLConn.ProviderName %>"
UpdateCommand="UPDATE ADDRESS
SET Address1 = @Ad1, Address2 = @Ad2
WHERE entityID = 'CRB'
AND addressID = @AdID ">
<UpdateParameters>
<asp:ControlParameter ControlID="txtPaddress1" Name="Ad1" PropertyName="Text" Type="String"/>
<asp:ControlParameter ControlID="txtPaddress2" Name="Ad2" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="txtAddressID" Name="AdID" PropertyName="Text" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
答案 0 :(得分:0)
如果此源是数据绑定,请确保数据绑定控件(即GridView,ListView等)已设置其DataKeyNames属性。类似的东西:
GridView1.DataKeyNames = new string[]{"KeyFieldName"};
编辑:如果所有其他方法都失败,您可以手动添加参数:
Protected Sub btnUpdate_Click
Try
AddressSRC.UpdateParameters.Clear();
AddressSRC.UpdateParameters.Add("Ad1",textPaddress1.Text);
AddressSRC.UpdateParameters.Add("Ad2",textPaddress2.Text);
AddressSRC.UpdateParameters.Add("AdID",textAddressID.Text);
AddressSRC.Update()
lblResult.Visible = True
Catch ex As Exception
lblResult.Visible = True
lblResult.Text = ex.Message
End Try
LoadData()
End Sub
答案 1 :(得分:0)
对我来说没问题。你可以断点它并检查更新语句之前存在的参数吗?我看不出任何明显的错误,所以在其他地方可能是一个愚蠢的错误。
答案 2 :(得分:0)
AI AI AI .........我是傻瓜。
我想在我的PAGE LOAD事件上放置一个IF NOT ISPOSTBACK语句,因为当我点击Submit按钮时我从DB重新加载了我的记录,并用旧记录更新了记录!