必须声明标量变量“@vendor”

Must declare the scalar variable "@vendor"

    <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:IS315Database1ConnectionString %>" SelectCommand="SELECT Category.CategoryName, Product.ProductName, Product.ProductPrice, Product.ProductID, vendor.VendorID, vendor.VendorName FROM vendor INNER JOIN Product ON vendor.VendorID = Product.VendorID INNER JOIN Category ON Product.CategoryID = Category.CategoryID WHERE ([VendorID] = @vendor.VendorID)">
        <SelectParameters>
            <asp:ControlParameter ControlID="DropDownList1" Name="VendorID" PropertyName="SelectedValue" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

所以我几乎 100% 的错误来自第一行代码的末尾 "WHERE ([VendorID] = @vendor.VendorID)"> “

有谁知道如何解决这个问题,我见过几个涉及标量的相同问题,none 已经解决,或者我无法将我的情况放在相同的上下文中。谢谢。

问题似乎是由于缺少 @vendor 参数声明引起的,正如 Juan Carlos Oropeza 在他的评论中所建议的那样。你拒绝了他的建议,但在分析代码后我得出了相同的结论,所以我决定 post 更具解释性的答案。

您在查询中使用了 @vendor 个参数,但只声明了 @VendorID 个参数(除非您在其他地方声明了其他参数)。

当您声明 ControlParameter 时,Name 属性 表示查询中使用的参数名称。在您 posted 的代码中,参数被命名为 VendorID,因此该名称也应该用于查询中(附加的 @ 字符表明它是参数的名称)。

尝试将查询的结尾更改为 WHERE [VendorID] = @VendorID

有关更多信息,请查看: