1
    <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)"> ”

有谁知道如何解决这个问题,我已经看到了几个涉及标量的相同问题,没有一个问题得到解决,或者我无法将我的情况置于相同的上下文中。谢谢你。

4

1 回答 1

3

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

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

You declareControlParameter时,该Name属性表示查询中使用的参数名称。在您发布的代码中,参数名为VendorID,因此该名称也应在查询中使用(带有一个附加@字符,表示它是参数的名称)。

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

有关更多信息,请查看:

于 2017-04-07T21:34:27.540 回答