在aspx.cs文件中更改gridview的DataSource

时间:2016-11-18 07:59:30

标签: c# asp.net

我想在用户输入文本时将文本框与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();
        }
    }

现在附上一张输出图片 enter image description here

问题是异常 必须声明标量变量&#34; @ abcm&#34;

enter image description here

2 个答案:

答案 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();
        }
    }