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