09. marts 2003 - 20:34
Der er
14 kommentarer og 1 løsning
Avanceret brug af adressefelt, til søgning
Sidder lige og bøvler med en søge maskine til min hjemmeside, den virker nu fint nok, men har lige et enkelt problem / opgave.
Som det er nu ændre mit adresse felt sig ikke alt efter hvad man søger på. Jeg kunne godt tænke mig at mit adresse felt ændrede sig alt efter hvad der blev søgt på. ligesom her på eksperten.
ex. her har jeg søgt efter Test, og hvis man bruger linket kommer man hen til søgeresultatet.
http://www.eksperten.dk/list.phtml?method=and&excerpt_on=1&searchtype=txt&words=test&x=5&y=0 Håber I fatter hvad jeg mener, eller uddyber jeg meget gerne.
Annonceindlæg fra SuperOffice
09. marts 2003 - 20:41
#1
Du kan bare have en almindelig form og så bruge get i stedet for post - og herefter så på din søgeside undersøge hvad der står i querystrengen.
09. marts 2003 - 20:49
#2
Ellers kan du i din søgeknap event ligge følgende: Response.Redirect("search.aspx?query=" + Server.UrlEncode(dinTextBox.Text)); dinTextBox = søgeboxen. Når brugeren så trykker på søg vil man blive sendt videre til søgesiden, med den indtastede query. /askhoej
09. marts 2003 - 20:52
#3
Hmm, skulle der virkelig ikke mere til end at ændre post til get man får godt nok et temmelig langt link udaf det, men det virker da
09. marts 2003 - 20:54
#4
Ja den kan godt blive temmelig lang, hvis du vil undgå det brug den anden metode jeg har vist. Så er det kun input fra søgeboxen du smider i din Querystring.
09. marts 2003 - 21:00
#5
Har lidt problemer med at placere den Response.Redirect Her er koden til min søgeknap private void Sog_Click(object sender, System.EventArgs e) { lejlighed.Postnummer = Convert.ToInt16(Postnr.Text); dataset = lejlighed.FindLejligheder(); if(dataset.Tables[0].Rows.Count >0 ) { resultat.Text = "Din søgning resulterede i følgende Lejligheder."; resultat.Visible = true; DataList1.DataSource = dataset; DataList1.DataBind(); } else { resultat.Text = "Ingen lejligheder passede til dine søge kriterier."; resultat.Visible = true; } }
09. marts 2003 - 21:07
#6
Noget i denne her retning: private void Page_Load(object sender, System.EventArgs e) { try { lejlighed.Postnummer = Convert.ToInt16(Request.QueryString["query"]); dataset = lejlighed.FindLejligheder(); if(dataset.Tables[0].Rows.Count >0 ) { resultat.Text = "Din søgning resulterede i følgende Lejligheder."; resultat.Visible = true; DataList1.DataSource = dataset; DataList1.DataBind(); } else { resultat.Text = "Ingen lejligheder passede til dine søge kriterier."; resultat.Visible = true; } } catch {} } private void Sog_Click(object sender, System.EventArgs e) { Response.Redirect("search.aspx?query=" + Server.UrlEncode(Postnr.Text)); } Spørg endelig hvis du er i tvivl.
09. marts 2003 - 21:26
#7
Okay, har lige 2 ting Hvis jeg nu vil bare flere søge felte med, hvordan gør jeg lige det ? og ved at bruge din kode, får jeg problemer, med mit login system, kan ikke helt styre om man er logget ind eller ej. Ved ikke helt hvorfor det sker, da hele login systemet ligget i sin egen user control
09. marts 2003 - 21:30
#8
1.) Så kan du bare udbygge din Querystring med flere paramtre, efter samme princip som med postnumre. 2.) Er ikke til at sige hvis jeg ikke har noget kode.
09. marts 2003 - 21:41
#9
Det skal lige siges at jeg bruger Context.User.Identity.IsAuthenticated til at finde udaf om en person er logget ind. Jeg har selv været inde op lave min egen implementering af Identity det gør også at min codebehind fil til søge maskinen starter på denne måde public class SogLejlighed : VBJHP.Web.VBJPage normalt ville det se sådan her ud. public class SogLejlighed : System.Web.UI.Page Her er koden til VBJPage public class VBJPage : System.Web.UI.Page { protected VBJHP.Web.Controls.User.Header Header; public VBJPage() { } protected override void OnInit(System.EventArgs e) { base.OnInit(e); this.Load += new System.EventHandler(this.VBJPage_Load); } private void VBJPage_Load(object sender, System.EventArgs e) { if(Context.User.Identity.IsAuthenticated) { if(!(Context.User is VBJPrincipal)) { VBJPrincipal nybruger = new VBJPrincipal(Context.User.Identity.Name); Context.User = nybruger; } } } Her er lige min page_load til min header public void Page_Load(object serder, System.EventArgs e) { Velkommen.Text = "Velkommen, "; if(Context.User.Identity.IsAuthenticated) { VBJIdentity id = (VBJIdentity)Context.User.Identity; Velkommen.Text += "<b>" + id.Fornavn + " " + id.Efternavn + " </b>"; UserLink.Text ="Min Ansøgning"; UserLink.NavigateUrl ="/VBJHP/Web/Bruger/MyAccount.aspx"; SignOut.Visible = true; } else { Velkommen.Text +="Gæst"; UserLink.Text ="Log ind"; UserLink.NavigateUrl ="/VBJHP/Web/Bruger/Login.aspx"; SignOut.Visible = false; } }
09. marts 2003 - 21:46
#10
Jeg kan ikke ummidelbart se at din søgefunktion skal påvirke det andet kode du har.
09. marts 2003 - 21:52
#11
næ, jeg kan heller ikke se hvad der skulle gå galt, men under alle omstændigheder får du dine point, vil lige forsøge lidt mere med mit login system.
09. marts 2003 - 21:53
#12
Ok tak for points :-)
09. marts 2003 - 22:03
#13
har fået det til at virke nogenlunde nu, den er bare lidt langsom til at opdatere, men gør ikke rigtig noget. Det var nogle sikkerheds check jeg lige skulle fjerne.
10. marts 2003 - 15:45
#14
Spørgsmålet er godt nok lukket, men håber da jeg lige kan få lidt hjælpe alligevel. Kan ikke helt finde udaf at have mere end en variable i min Querystring. Håber nogen kan se hvad jeg gør forkert. Response.Redirect("SogLejlighed.aspx?postnr=" + Server.UrlEncode(Postnr.Text) + "?aldersgruppe=" + Server.UrlEncode(Aldersgruppe.Text)); min url, ser således ud bagefter. SogLejlighed.aspx?postnr=7000?aldersgruppe=senior
10. marts 2003 - 15:53
#15
fandt selv ud af det, når man skal bare en ekstra variable på skriver med & Response.Redirect("SogLejlighed.aspx?postnr=" + Server.UrlEncode(Postnr.Text) + "&aldersgruppe=" + Server.UrlEncode(Aldersgruppe.Text));
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.