C# 如何在c中从表中搜索记录并在gridview中显示?

C# 如何在c中从表中搜索记录并在gridview中显示?,c#,asp.net,C#,Asp.net,我是.net新手,我已经创建了文本框、下拉列表和searc按钮 当我在下拉列表中选择Start with并在文本框中键入一些字符并单击search按钮时,它应该会根据gridview中表中的搜索文本显示记录 为此,我创建了下拉列表,并创建了存储过程。我添加了以下代码: 这里是aspx: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <td><asp:Hidd

我是.net新手,我已经创建了文本框、下拉列表和searc按钮

当我在下拉列表中选择Start with并在文本框中键入一些字符并单击search按钮时,它应该会根据gridview中表中的搜索文本显示记录

为此,我创建了下拉列表,并创建了存储过程。我添加了以下代码:

这里是aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<td><asp:HiddenField ID="hiddenfield" runat="server" /> 
<td><asp:HiddenField ID="curricular" runat="server" /> 
    <asp:TextBox ID="searchid" runat="server" Visible="false"></asp:TextBox>
 </td>
   <td>

    <asp:Label ID="condition" runat="server" Visible="false" >
    </asp:Label>
    <asp:Label ID="searchtext" runat="server" Visible="false"></asp:Label>
    </td>    
<asp:DropDownList ID="searchrecord" runat="server" Width="150px"></asp:DropDownList>
<asp:TextBox ID="textsearch" runat="server"></asp:TextBox>
<asp:Button ID="searchclick" runat="server" text = "search" OnClick="searchrecords_Click" OnClientClick="return searchrecords();" />
   <center><div><h4>Searched Records</h4></div></center><br /> <br />
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="ID" DataSourceID="SqlDataSource1" 
        OnRowCommand="GridView1_RowCommand" 
        EnablePersistedSelection="True" BackColor="White" 
        OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Height="240px" 
        Width="755px">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                ReadOnly="True" SortExpression="ID" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Class" HeaderText="Class" SortExpression="Class" />
            <asp:BoundField DataField="Section" HeaderText="Section" 
                SortExpression="Section" />
            <asp:BoundField DataField="Address" HeaderText="Address" 
                SortExpression="Address" />
                <asp:BoundField DataField="Email" HeaderText="Email" 
                SortExpression="Email" />
            <asp:BoundField DataField="Mobilenum" HeaderText="Mobile Number" 
                SortExpression="Mobile Number" />
                <asp:ImageField DataImageUrlField="Image" HeaderText="Image" ControlStyle-Width="50" ControlStyle-Height = "50">                
                <ControlStyle Height="50px" Width="50px"></ControlStyle>
                </asp:ImageField> 
                <asp:BoundField DataField="Extracurricular" HeaderText="Extracurricular" 
                SortExpression="Name" />            
        </Columns>
        <HeaderStyle BackColor="#FF0066" BorderColor="#CCFFFF" ForeColor="White" 
            Height="50px" Width="50px" />
        <SelectedRowStyle BackColor="#FF66FF" />
    </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="sp_searchedstudentrecords"          
        SelectCommandType="StoredProcedure">

    </asp:SqlDataSource>

    <script type="text/javascript">
        function searchrecords() {
            if ($.trim(document.getElementById("<%=textsearch.ClientID%>").value).length == 0) {
                alert("Enter Your Characters to search !");
                document.getElementById("<%=textsearch.ClientID%>").focus();
                return false;
            }
        }
</script>
    <script type="text/javascript" src="Scripts/jquery-2.1.4.js" />

</asp:Content>
最后是存储过程:

ALTER PROCEDURE sp_searchedstudentrecords
(
@condition varchar(20),
@searchtext varchar(50)
)
AS
begin
If (@condition = 'startswith')
select * from student where name like @searchtext+ '% '
else if (@condition = 'endswith')
select * from student where name like '%' +@searchtext
else
select * from student where name like '%' +@searchtext+ '%'
End
运行此代码时,会显示以下错误:

编译器错误消息:CS1061:“ASP.searchrecords\u aspx”不包含“GridView1\u RowCommand”的定义,并且找不到接受类型为“ASP.searchrecords\u aspx”的第一个参数的扩展方法“GridView1\u RowCommand”。是否缺少using指令或程序集引用

我正在努力解决这个问题,请问,如何在我的代码中传递这两个@condition和@searchtext参数

任何帮助都将不胜感激

谢谢

更新:


在您的ASPX for GridView中声明了一个名为GridView1_RowCommand的OnRowCommand事件。但它并没有定义在你的代码背后。从ASPX中删除OnRowCommand=GridView1_RowCommand事件。或者将该事件添加到代码隐藏中。

您的代码有两个问题:首先,您已经使用OnRowCommand=GridView1\u RowCommand注册了RowCommand事件,但尚未定义它,因此您必须在代码隐藏中处理它,或者从gridview中删除该属性

第二个问题是您使用了SQLDataSource控件来触发SP SP_searchedstudentrecords,它需要两个参数,即@condition和@searchtext,但您没有从控件传递任何参数。我猜您想从dropdownlist和textbox控件resp传递这些值。然后按如下方式更改代码:-

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="sp_searchedstudentrecords"          
    SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="searchrecord" Name="condition" 
             PropertyName="SelectedValue" Type="String" />
        <asp:ControlParameter ControlID="searchtext" Name="searchtext" PropertyName="Text" 
             Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

首先,您希望更改代码中的参数名称, 因为查询和代码隐藏中的参数名称必须相同

受保护的无效搜索记录\u单击对象发件人,事件参数e { SqlConnection con=Connection.DBconnection; { SqlCommand com=new-SqlCommandsp_insertsearchtext,con; com.CommandType=CommandType.StoredProcess; com.Parameters。AddWithValue@condition,idsearch.Text.Trim; com.Parameters。AddWithValue@searchtext,searchtext.Text.Trim; com.ExecuteNonQuery; } } 受保护的void gridview 1\u SelectedIndexChangedObject发送方,事件参数e { int index=GridView1.SelectedIndex; hiddenfield.Value=index.ToString;
}

我不明白。。你能详细说明一下吗?thanks@Rani答案已更新。如果我删除OnRowCommand=GridView1\u RowCommand..其余行显示为error.Yes。但您在问题中指定的问题是,该事件。过程或函数“sp_searchedstudentrecords”需要未提供的参数“@condition”。请从ASPX中删除OnRowCommand=GridView1_RowCommand。或者将相关事件添加到代码隐藏中。我将检查您的答案并向您更新,谢谢您没有显示错误。。但在点击搜索按钮后,并没有在gridview中显示记录。@Rani-Hey SQLDataSource控件就是用来处理这些事情的,我的意思是调用SP并绑定数据。您已经完成了这两项工作,即使用SQLDataSource和自定义代码来调用SP,或者只使用SQLDataSource控件,或者只编写自定义代码,而不是同时使用这两项。我无法理解..:好。。我必须在searchrecords\u Click事件下添加哪些代码?谢谢
protected void searchrecords_Click(object sender, EventArgs e)
        {
            SqlConnection con = Connection.DBconnection();
            {
                SqlCommand com = new SqlCommand("sp_insertsearchtext", con);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.AddWithValue("@id", idsearch.Text.Trim()); 
                com.Parameters.AddWithValue("@searchtext", searchtext.Text.Trim());               
                com.ExecuteNonQuery();
            }
        }
        protected void GridView1_SelectedIndexChanged(Object sender, EventArgs e)
        {
            int index = GridView1.SelectedIndex;
            hiddenfield.Value = index.ToString();
        }
ALTER PROCEDURE sp_insertsearchtext
    (
    @id int,
@searchtext Varchar (100)
)
AS
begin
Insert into searchtext (searchtext) values (@searchtext)
End
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="sp_searchedstudentrecords"          
    SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="searchrecord" Name="condition" 
             PropertyName="SelectedValue" Type="String" />
        <asp:ControlParameter ControlID="searchtext" Name="searchtext" PropertyName="Text" 
             Type="String" />
    </SelectParameters>
</asp:SqlDataSource>