<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%我的错误来自第一行代码的结尾&#34; WHERE([VendorID] = @ vendor.VendorID)&#34;&gt; &#34;
有谁知道如何解决这个问题,我已经看到了几个涉及标量的相同问题,没有一个已经修复,或者我无法在相同的环境中抛出我的情况。谢谢。
答案 0 :(得分:3)
似乎问题是由于缺少@vendor
参数声明引起的,正如Juan Carlos Oropeza在评论中所说的那样。你拒绝了他的建议,但在分析了代码后我得出了相同的结论,所以我决定发表更多的解释性答案。
您在查询中使用了@vendor
参数,但仅声明了@VendorID
参数(除非您在其他地方声明了其他参数)。
当您声明ControlParameter
时,Name
属性指示查询中使用的参数的名称。在您发布的代码中,参数名为VendorID
,因此该名称也应在查询中使用(附加@
字符表示它是参数的名称)。
尝试将查询结尾更改为WHERE [VendorID] = @VendorID
。
有关详细信息,请查看: