Como implementar uma barra de pesquisa na página principal ASP.NET

Estou a tentar criar uma barra de busca para o meu ... ASP.NET páginas que serão incluídas no mestre para que seja mostrado em todas as páginas. A introdução do texto de pesquisa e a realização da pesquisa enviar-lhe-ão os resultados.aspx, que então recupera o valor do texto da caixa de pesquisa da página principal e exibe dados do banco de dados em uma área de grade. Procurar na minha página inicial funciona bem, mas eu quero que o usuário seja capaz de introduzir um novo texto de pesquisa enquanto na página de resultados e ter a página recarregada com o novos dados na área da grelha. Aqui está o código dos resultados.aspx page load

   if (PreviousPage != null)
            {
                TextBox SourceTextBox =
                    (TextBox)PreviousPage.Master.FindControl("txtSearchMaster");
                if (SourceTextBox != null)
                {
                    txtSearch.Text = SourceTextBox.Text;
                }
            }

Código na página principal

    <div id="search">
         <asp:HyperLink ID="linkAddFile" runat="server" BorderStyle="None" NavigateUrl="~/Default.aspx" Width="150px" >Add File</asp:HyperLink>
         <asp:TextBox ID="txtSearchMaster" runat="server"></asp:TextBox>
         <asp:Button ID="btnSearch" runat="server" Text="Search" PostBackUrl="~/results.aspx" />
     </div>

a questão é uma vez que eu chegar à página de resultados e tentar fazer uma nova pesquisa a partir de lá, meu condicional (Previousspage != nulo) diz que ele é nulo.

 0
Author: wizloc, 2015-06-26

2 answers

Não obtenha os valores de pesquisa da página anterior através da propriedade PreviousPage.

Em vez disso, quando o utilizador efectuar uma pesquisa, pegue no valor da caixa de texto da pesquisa e passe o valor para a página de resultados. Exemplo:

Página principal

<div id="search">         
         <asp:TextBox ID="txtSearchMaster" runat="server"></asp:TextBox>
         <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" />
     </div>

Código principal atrás de

protected void btnSearch_Click(object sender, EventArgs e)
{
    var searchText = Server.UrlEncode(txtSearchMaster.Text); // URL encode in case of special characters
    Response.Redirect("~/Results.aspx?srch="+searchText);
}

O código da página dos resultados atrás de

protected void Page_Load(object sender, EventArgs e)
{
    if(!String.IsNullOrEmpty(Request.QueryString["srch"])
    {
        //perform search and display results
    }
}
 4
Author: mason, 2015-06-26 15:23:18

Acho que não deve obter os valores de pesquisa da página anterior através da propriedade PreviousPage.

Em vez disso, também podes fazer isto:

TextBox mastertxt = (TextBox)Master.FindControl("txtSearchMaster");
Response.Redirect("~/YourResultPage.aspx?search="+mastertxt.Text.ToString());
 0
Author: Bhasin, 2016-09-21 06:08:23