Tror sgu det bli'r svært at strikke sammen, og hvis det lykkes kunne jeg forestille mig at du skal over i noget javascript i stedet for.
Problemet er, at ASP'en afvikles før HTML'en, så dit tekstfelt vil være genereret efter alle databasekald er blevet afsluttet. Dermed skal du nok over i at proppe alle dine ord i et javascript-array eller noget, og jeg kunne forestille mig at det endte med at blive MEGET tungt for både server og klient.
Jeg ved dog ikke om det ville kunne lade sig gøre, hvis du fik strikket en eller anden form for komponent sammen, der kunne køre på serveren, men stadigvæk tror jeg det bliver svært.
Vil dog gerne høre, hvis du finder en løsning på det :-)
Ved ikke stiv du er i scripting og div. andre teknologier, men jeg ville nok prøve flg:
1) Læs via ASP værdierne i databasen ind i et JavaScript array (eller andet client-side script).
2) Sæt JavaScript til at lytte efter keystrokes på takstfeltet.
3) Når brugeren taster i tekstfeltet, så søg i array'et efter ord, der ligner, det, der er indtastet.
- Men du skal i så fald smide data fra hele database-tabellen over til klienten/browseren hver gang, siden hentes, og det kan godt være et problem mht performance og sikkerhed.
Du kan bruge det her, det virker fint:
<%
Dim myOptions
myOptions = ""
Set conntemp = Server.CreateObject("ADODB.Connection")
conntemp.Open DSN
SQLAUTOCOMPLETE = "SELECT * FROM TABEL"
Set rsAutoComplete = conntemp.Execute(SQLAUTOCOMPLETE)
Do While Not rsAutoComplete.EOF
myOptions = myOptions & "'" & rsAutoComplete("DIT_FELT") & "',"
rsAutoComplete.MoveNext
Loop
myOptions = Left(myOptions,Len(myOptions)-1)
rsAutoComplete.Close
Set rsAutoComplete = Nothing
%>
<script>
function matchFieldSelect (field) {
var found = false;
for (var i = 0; i < myOptions.length; i++)
if ((found = myOptions[i].toLowerCase().indexOf(field.value.toLowerCase()) == 0))
break;
if (field.createTextRange) {
var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;"
if (cursorKeys.indexOf(event.keyCode+";") == -1) {
var r1 = field.createTextRange()
var oldValue = r1.text;
var newValue = found ? myOptions[i] : oldValue;
if (newValue != field.value) {
field.value = newValue
var rNew = field.createTextRange()
rNew.moveStart('character', oldValue.length)
rNew.select()
}
}
}
}
// Valgmuligheder
myOptions = new Array(<%=myOptions%>);
</script>
<input type="text" name="InputNavn" size="20" onkeyup="matchFieldSelect(this)">