2014-10-30 63 views
0

我还是ASP.NET和C#的初学者。在我目前的项目中,我必须做一个“简单搜索”。在主页上简单搜索并在不同页面上显示结果

我的搜索栏位于母版页上,我希望搜索结果显示在Searchside.aspx上。我只想在我的数据库中搜索slips_navn(tie_name)。

这是我现在有的,我不知道如何从这里继续前进。

母版按钮/文本框

<asp:TextBox ID="SearchTextBox" runat="server"></asp:TextBox> 
<asp:Button ID="ButtonSearch" runat="server" Text="Søg" OnClick="ButtonSearch_Click" /> 

代码背后的母版页

protected void ButtonSearch_Click(object sender, EventArgs e) 
{ 

    Response.Redirect("~/searchside.aspx?SearchText=" + SearchTextBox.Text); 

} 

Searchside.aspx

而这正是我想要显示的结果。

<div id="randomslips"> 
    <b><%#Eval("maerke_navn") %></b> 
    <p><%#Eval("slips_navn") %></p> 
    <img alt="" src='prod_image2/<%# Eval("billede") %> ' height="100px" width="100px" /> 
    <b>DKK<%#Eval("slips_pris") %>,-</b> 
    <a class="Infoknap" href='EnkeltSlips.aspx?id=<%#Eval("Slips_id") %>'>INFO</a> 
</div> 

我的领带表。(单)

CREATE TABLE [dbo].[slips] (
    [slips_id] INT    IDENTITY (1, 1) NOT NULL, 
    [slips_tekst] NVARCHAR (MAX) NOT NULL, 
    [slips_pris] DECIMAL (18, 2) NOT NULL, 
    [billede]  NVARCHAR (MAX) NOT NULL, 
    [slips_navn] NVARCHAR (50) NOT NULL, 
    [FK_maerke] INT    NOT NULL, 
    [status]  INT    NOT NULL, 
    PRIMARY KEY CLUSTERED ([slips_id] ASC), 
    CONSTRAINT [FK_Slips_maerke] FOREIGN KEY ([FK_maerke]) REFERENCES [dbo].[maerke] ([maerke_id]) ON DELETE CASCADE 
); 

Maerke表(品牌)

( 

CREATE TABLE [dbo].[maerke] (
    [maerke_id] INT   IDENTITY (1, 1) NOT NULL, 
    [maerke_navn] NVARCHAR (50) NOT NULL, 
    PRIMARY KEY CLUSTERED ([maerke_id] ASC) 
); 

所以迄今为止,当我按下主页上的搜索按钮,我得到重定向到searchside.aspx?SEARCHTEXT =蓝色因为它应该,但我不知道我应该如何连接到数据库,通过代码隐藏和如何?或通过sql-datasource/repeater和如何?。我包括我期望从中搜索的2个数据库表,我再次想要搜索tie_name(slips_navn)行。我很抱歉,如果即时通讯仍然不清楚,我会尝试再次更新我的问题,直到希望我能解释我想要回答:)

+0

那么问题是什么?如果您重定向到搜索页面并将搜索参数作为查询字符串传递,您可以在搜索页面上阅读该参数。 – 2014-10-30 10:07:45

+0

@TimSchmelter你能告诉我该怎么做吗?目前,当我按搜索按钮它重定向到searchside.aspx,因为我应该,并且还将文本字段输入添加到查询字符串“searchside.aspx?SearchText =蓝色”等,然后显示框中我想要的关系到显示,但没有数据,所以我的问题是,我如何,我想连接到数据库从这里?一个SQL数据源?代码在后面?如果你能给我一个视觉效果会很棒。 – tekar 2014-10-30 10:13:32

+0

目前尚不清楚你卡在哪里。如果这个问题只是关于SQL,你应该删除所有的ASP.NET的东西,因为它是误导。如果您不知道如何显示结果:根据搜索结果使用像Panel这样的服务器控件(对于div)和一个Label来将它设置为Text属性。或者,也许你想列出多个,然后使用'ListBox'或甚至'GridView'。但不要在一个问题中提出多个问题。顺便说一句,如果这是一个sql问题,您应该提供有关数据模型的更多信息。 – 2014-10-30 10:17:16

回答

0

哦,很明显,它其实很简单。我想我的大脑只是在星期五才会发现。这是我的结果。

我还是用

Response.Redirect("~/searchside.aspx?SearchText=" + SearchTextBox.Text); 

,这是searchside.aspx。我有sarchside.cs

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource3"> 
     <ItemTemplate> 
     <div id="randomslips"> 
       <b><%#Eval("maerke_navn") %></b> 
      <p><%#Eval("slips_navn") %></p> 
      <img alt="" src='prod_image2/<%# Eval("billede") %> ' height="100px" width="100px" /> 
      <b>DKK<%#Eval("slips_pris") %>,-</b> 
      <a class="Infoknap" href='EnkeltSlips.aspx?id=<%#Eval("Slips_id") %>'>INFO</a> 

     </ItemTemplate> 
      </asp:Repeater> 
     <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" SelectCommand="SELECT * FROM [slips] INNER JOIN maerke ON slips.FK_mærke = maerke.maerke_id WHERE ([slips_navn] LIKE '%' + @slips_navn + '%')"><SelectParameters> 
    <asp:QueryStringParameter QueryStringField="SearchText" Name="slips_navn" Type="String"></asp:QueryStringParameter> 
    </SelectParameters> 
    </asp:SqlDataSource> 

没有代码,所以你可以看到我只是用一个中继器和SQL的数据源,并获得通过查询字符串参数querystringfield。

0

首先使用gridview或datalist绑定数据在Searchside.aspx 之后在Searchside.aspx的页面加载事件中检查您过去进行筛选的查询字符串。

如果您在页面加载中发现查询字符串,则根据新搜索的数据集绑定该数据列表或grindview。

+0

谢谢,但由于某种原因,我无法在头脑中看到如何继续,如果你能告诉我一个很好的例子。 – tekar 2014-10-31 10:21:51

相关问题