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
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