我想在用户输入文本时将文本框与gridview连接,如果name列包含那些单词,则应该使用gridview的Name列进行检查,只显示那些记录。 GridView已经有了Daatasource2,它现在通过文本框显示所有可用记录我想只显示那些与输入词一样的记录。 我搜索了很多,但这确实有助于我获得例外 必须声明标量变量“@abcm” 我已经看过这个链接 Must declare the scalar variable "@Name" 但它并没有帮助我。 这是文本框的html。
<%-- <input class="form-control" placeholder="Library Search" name="srch-term" id="srch-term" type="text" />--%>
<div class="input-group-btn">
<asp:LinkButton ID="btnRandom"
runat="server"
CssClass="btn btn-primary"
OnClick="btnsearch_Click" >
<span aria-hidden="true" class="glyphicon glyphicon-search"></span>
这个用于gridview。
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource2" Height="20px" Width="979px"
style="grid-template-rows:max-content;
scrollbar-arrow-color:aquamarine;
background-color:#ffd800;">
<EmptyDataTemplate>No results found.</EmptyDataTemplate>
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
</Columns>
</asp:GridView>
这些是两个数据源。
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:FYPConnectionString %>" SelectCommand="SELECT * FROM [tblFiles]"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:FYPConnectionString %>" SelectCommand="SELECT [Name], [Date] FROM [tblFiles] WHERE ([Name] LIKE '%' + @abcm + '%')">
</asp:SqlDataSource>
Datasource2已连接到gridview。
这里是搜索按钮的
的aspx.cs文件代码 public void btnsearch_Click(object sender, EventArgs e) {
if (abcm.Text == "") { Response.Redirect("Library.aspx"); }
else
{
GridView1.DataSourceID = "SqlDataSource1";
GridView1.DataBind();
}
}
问题是异常 必须声明标量变量&#34; @ abcm&#34;
答案 0 :(得分:1)
数据SQL字符串包含@abc。将参数传递给SQL时,通常将其作为带参数的存储过程。我认为您使用的连接方法需要静态SQL。
以下是如何做到这一点...... ASP.NET C#: SqlDataSource with Stored Procedure and Parameters
答案 1 :(得分:1)
例外说明了一切。您需要在绑定之前将@abcm定义为 SelectParameters 。
public void btnsearch_Click(object sender, EventArgs e) {
if (abcm.Text == "") { Response.Redirect("Library.aspx"); }
else
{
GridView1.DataSourceID = "SqlDataSource1";
SqlDataSource1.SelectParameters.Add("abcm", abcm.Text);
GridView1.DataBind();
}
}