Hej Hejsan Magnus ! <b>Jag försökte besöka sidan; script.aculo.us , men den var skyddad med inloggning så jag lyckades inte titta de script som finns där.</b>Ajax och Asp
Kan någon på ett enkelt sätt förklara hur jag ska skapa autokomplettering av textfält med hjälp av ajax och dom script som finns på t.ex. script.aculo.us.
All sökinfo ska plockas ur en databas och med asp.
Jag vill även kunna bestämma utseendet på hur sökningsresultatet visas.
Ska även kunna visa info i andra textfält beroende på vad jag valt i autofältet.
mvh MagnusSv: Ajax och Asp
Jag försökte besöka sidan; script.aculo.us , men den var skyddad med inloggning så jag lyckades inte titta de script som finns där. Men om jag inte misstar mig helt så tror jag du är ute efter
AutoComplete Extender funktionen som man kan utnyttka med ajax och asp.net.
Ska försöka skapa ett exempel där ett textfält är kopplat emot en autocomplete extender.
Först default.aspx sidan som innehåller textboxen och autocompleter extendern.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="AutoComplete.asmx" />
</Services>
</asp:ScriptManager>
<div>
<asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" />
<ajaxToolkit:AutoCompleteExtender
runat="server"
ID="autoComplete1"
TargetControlID="myTextBox"
ServicePath="AutoComplete.asmx"
ServiceMethod="GetCompletionList"
MinimumPrefixLength="2"
CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="12" />
</div>
</form>
</body>
</html>
Sedan den webservice som autocompletern utnyttjar för att anropa efter data ifrån databasen beroende på vad användaren matar in för text strän i textboxen. Webservicen i sin tur utnyttjar en stored procedure för att hämta data.
AutoComplete.asmx
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data.SqlClient;
using System.Data;
using System.Data.Common;
using AtlasTextBoxAutoComplete.DL;
using System.Collections;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class Artiklar : WebService
{
// Webservice tjänst som hämtar samtliga artiklar i
// databasen TblArtiklar baserade på input strängen ifrån sök rutan
[WebMethod]
public String[] GetSuggestions(String prefixText, int count)
{
//returnerar alla records som titeln startar med prefix av text input stringen
List<String> titleArList = new List<string>();
SqlDataReader drSuggestion = sqlProductProvider.GetSuggestion(prefixText);
while (drSuggestion.Read())
{
String strTemp = Convert.ToString(drSuggestion["kolumn"]);
titleArList.Add(strTemp);
}
return titleArList.ToArray();
}
Slutligen den stored procedure som hämtar data, GetSuggestion
<code>
ALTER PROCEDURE [dbo].[GetSuggestion]
@pProductName nvarchar = '%'
AS
BEGIN
SELECT
[kolumn]
FROM
[tabell]
WHERE
[kolumn] like @pProductName +'%'
END
</code>
Det finns säkert andra och lättare sätt att lösa detta men så här har jag gjort för att få det att fungera i några av mina lösningar där jag använder autocompleter kopplad emot en textbox i asp.net
Sv:Ajax och Asp
Detta gjorde mig väldigt förundrad. Sidan har aldrig varit lösenordsskyddad så vitt jag vet. Jag fick dock en misstanke och den bekräftades... Du har försökt att gå in på http://www.script.aculo.us, medan den rätta sidan är http://script.aculo.us. Var stod det att du skulle lägga till www före?
Här är ett exempel på autocompleter: http://demo.script.aculo.us/ajax/autocompleter