ASP.NET SQL Search Engine Error

落爺英雄遲暮 提交于 2020-01-17 06:08:14

问题


I keep getting this error when trying to use @itemname in a SQL search query. The code should search the values in the SQL table and display them here. Thanks.

Must declare the scalar variable "@itemname".

Code for search.aspx:

<body>
    <asp:SqlDataSource ID="searchresults" runat="server"
        ConnectionString='<%$ ConnectionStrings:ConnectionString %>'
        SelectCommand="SELECT [ID], [itemname] FROM [reports] WHERE ([itemname] LIKE '%' + @itemname + '%')">
    </asp:SqlDataSource>
    <asp:ListView ID="displayitems" runat="server" DataSourceID="searchresults" DataKeyNames="ID">
        <EmptyDataTemplate>
            <span>
                No items for <asp:Label Text='' runat="server" ID="itemname" />
            </span>
        </EmptyDataTemplate>
        <ItemTemplate>
            <asp:HyperLink ID="HyperLink1" runat="server"
                NavigateURL='<%# "Sale.aspx?saleid=" + Eval("ID") %>'>
                <asp:Label Text='<%# Eval("itemname") %>' runat="server" ID="ItemNameLabel" /> <br />
            </asp:HyperLink>
        </ItemTemplate>
    </asp:ListView>
</body>

回答1:


The message means the parameter itemname is not declared. Try adding the parameter into the SqlDataSource

<asp:SqlDataSource ... OnSelecting="ds_Selecting">
    <SelectParameters>
        <asp:Parameter Name="itemname" Type="Int32" DefaultValue="0" />
    </SelectParameters>

    ....
</asp:SqlDataSource>

and then in the code behind set its value:

protected void ds_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters[0].Value = "Value";
} 

There are many options for setting the value using derived classes of System.Web.UI.WebControls.Parameter, some of these classes do not require code behind, for example asp:ControlParameter or asp:QueryStringParameter.



来源:https://stackoverflow.com/questions/37121598/asp-net-sql-search-engine-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!