06. januar 2010 - 03:48Der er
13 kommentarer og 1 løsning
søgeformular
Hej,
Kan i hjælpe mig med en god og solid søgeformular i asp.net / c#, som skal søge alt indhold på hele websitet. Har kigget rundt omkring, men det har bare gjort mig mere forvirret!
Hvis i kender til nogle gode og simple links, så er ville det være super!
tak for dit svar! ;-) hvor skal denne kode placeres? masterpage eller hvordan? -og kunne jeg få lidt mere sammenhængende kode, eller er det alt hvad der skal bruges for at lave en søgeformular?
Så laver du en alm. aspx side som du kalder Soeg.aspx
På design delen ligger du det her. <br /> <h2>Indhold</h2> <asp:Label ID="LinkL" runat="server"></asp:Label>
I codebehinden filen ligger du (Page_Load) if (Convert.ToString(Session["Soeg"]) == "" || Convert.ToString(Session["Soeg"]) == "Skriv søgeord her") { LinkL.Text = "Der skal være indtastet søgeord før der kan søges"; } else {
LinkL.Text = "";
OleDbConnection MyConnection = new OleDbConnection(); //Her sættes hvor databasen er MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|CMSdatabasen.mdb";
//string strSQL = ("Select * from Tabel where (Kolonne like'%" + Convert.ToString(Session["Soeg"]) + "%')"); string strSQL = ("Select * from TBSider where (Indhold like'%" + Convert.ToString(Session["Soeg"]).ToLower().Replace("æ", "æ").Replace("ø", "å").Replace("å", "å") + "%')");
OleDbCommand objCommand = new OleDbCommand(strSQL, MyConnection); OleDbDataReader objDataReader = null;
//Her kommer vi dataen fra databasen ind i tekstfelt,label eller andet LinkL.Text += "<ul><li><a href='" + "Default.aspx?SID=" + Convert.ToString(objDataReader["Side"]) + "'>" + Convert.ToString(objDataReader["Side"]) + "</a>" + "<br/>" + "Denne side indeholde de/det ord der er søgt på" + "</li></ul>"; } //Lukker reader MyConnection.Close(); objDataReader.Close(); if(LinkL.Text == "") { LinkL.Text = "Der blev desværre ikke fundet noget som passede overens med det indtastet "; }
} //Fanger fejl catch (Exception exept) { //Udskriver fejlen Response.Write(exept); } //Lukker forbindelsen til databasen igen
Session["Soeg"] = ""; }
I toppen af din masterpage ligger du det her. <%@ Register Src="UserControls/Soeg.ascx" TagName="Soeg" TagPrefix="uc4" %>
Og der hvor du vil have dit søgefelt ligger du det her... [/i]<uc4:Soeg ID="Soeg" runat="server" />[i/]
Om det er den pæneste måde at gøre det ved jeg ikke men det virker. ;)
rigtig mange gange tak, det er præcis hvad jeg er på udkig efter. :-) Har dog lidt problemer med at få det til at spille optimalt.
Hvordan ser din UserControl ud?
uden userControlen så får jeg denne eller disse fejl i label LinkL:
System.Data.OleDb.OleDbException: Der opstod en eller flere fejl ved en OLE DB-handling på flere trin. Kontroller alle OLE DB-statusværdier. Handlingen blev ikke udført. ved System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) ved System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) ved System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) ved System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) ved System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) ved System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) ved System.Data.OleDb.OleDbConnection.Open() ved Soeg.Page_Load(Object sender, EventArgs e) i c:\Users\Lars\Documents\Visual Studio 2008\WebSites\HSJ\Soeg.aspx.cs:linje 34
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.