必须在VS2005和ASP.net中声明标量变量“@Ad1”错误

时间:2009-07-24 14:49:34

标签: .net sqldatasource

我正在使用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>

3 个答案:

答案 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重新加载了我的记录,并用旧记录更新了记录!