2016-03-24 3 views
0

Ich verwende den folgenden Code, um die Informationen in das Textfeld zu bekommen, aber wenn es ausgeführt wird, zeigt es nur den ersten Datensatz der Datenbank. Wie kann ich den nächsten Rekord bekommen?Autocomplete Textbox nicht zum nächsten Datensatz

VBScript ...

Dim Leads 
Dim Leads_cmd 
Dim Leads_numRows 
Set Leads_cmd = Server.CreateObject ("ADODB.Command") 
Leads_cmd.ActiveConnection = MM_PSCRM_STRING 
Leads_cmd.CommandText = "SELECT lead_desc from dba.lead" 
Leads_cmd.Prepared = true 
Set Leads = Leads_cmd.Execute 
Leads_numRows = 0 
... 
... 
'At end of file... 
Leads.Close() 
Set Leads = Not 

JavaScript-Bereich ...

$(function() { 
var availableTags = ["<%=(Leads.Fields.Item("lead_desc").Value)%>"]; 
$("#tags").autocomplete({ 
source: availableTags 
}); 
    }); 

HTML-Abschnitt ...

<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags" name="NameCus"> 
</div> 
+0

Können Sie 'console.log (availableTags);'? – Rayon

Antwort

0

Ändern Sie Ihre Javascript-Code zu folgenden:

<script> 
$(function() { 
var availableTags = ["<% 
Do Until Leads.EOF 
Response.Write(Leads.Fields.Item("lead_desc").Value & ",") 
Leads.Movenext 
Loop 
%>"]; 
$("#tags").autocomplete({ 
    source: availableTags 
    }); 
}); 
</script> 

Es ist, weil Sie vergessen haben, Anweisung in Schleife auszuführen. Daher wird nur das erste Element in die Autovervollständigung geladen. Hoffe, das hilft :)

+0

hallo Jadeja So muss es Datensätze vollständig auswählen. Aber wenn Sie einen Namen auswählen, konzentrieren Sie sich immer noch nur auf den ersten Datensatz. Kannst du mir helfen, den richtigen Fokus nicht zu wählen? danke! –

+0

Sicher können Sie Demo in Jsfiddle mit statischen Daten von ASP-Code erstellt vorbereiten? –

+0

liebe Jadeja Sie greifen auf Ihre Demo-Test-Hilfe http://ksdemo.somee.com/sample3.asp –

1

Sie sind wahrscheinlich besser dran lesen die Daten in ein Array mit GetRows(). Anschließend können Sie diese zweidimensionale Matrix verwenden, um die JavaScript-Code in-line zu füllen ...

Dim rs, sql, res 
sql = "SELECT lead_desc from dba.lead" 
Set rs = Server.CreateObject("ADODB.RecordSet") 
rs.Open sql, MM_PSCRM_STRING, 0, 1, 1 
res = rs.GetRows() 
rs.Close() 
Set rs = Nothing 
Dim c, arr 
For c = 0 To UBound(res, 2) 
    arr = arr & res(0, c) & """,""" 
Next 
arr = """" & Left(arr, Len(arr)-1) & """" 'Chop off the last comma 

(Wie Martha erinnert): Es gibt auch die GetString method des RecordSet Objekt:

Dim rs, sql, res 
sql = "SELECT lead_desc from dba.lead" 
Set rs = Server.CreateObject("ADODB.RecordSet") 
rs.Open sql, MM_PSCRM_STRING, 0, 1, 1 
arr = rs.GetString(,,,",") 
rs.Close() 
Set rs = Nothing 

(Ich gehe davon aus, dass Sie SQL Server verwenden): Wenn Sie dies in SQL tun, können Sie die STUFF Methode zum Kompilieren der Zeichenfolge in eine Liste verwenden. Ich würde jedoch empfehlen, dass Sie hierfür eine gespeicherte Prozedur verwenden.

Dim rs, sql, res 
sql = _ 
    "SELECT STUFF((" & _ 
     "SELECT " & _ 
      "',' + lead_desc " & _ 
     "FROM " & _ 
      "dba.lead " & _ 
     "ORDER BY " & _ 
      "dba.lead " & _ 
     "FOR XML PATH('')), 1, 1, '') " 
Set rs = Server.CreateObject("ADODB.RecordSet") 
rs.Open sql, MM_PSCRM_STRING, 0, 1, 1 
res = rs.GetRows() 
rs.Close() 
Set rs = Nothing 

Und sie JavaScript ...

var availableTags = [<%= arr %>]; 
+1

Warum verwenden 'STUFF' anstelle von' rs.GetString (...) '? – Martha

+0

lieber Paul Ich benutze den Datenbankzugriff. Folgen Sie Ihren Anweisungen, es wurde auch nur der erste Datensatz in einer Datenbanktabelle angezeigt. Sie sehen den Demo-Link und teilen, welcher Code ich schreibe gescheitert ist. bitte hilf mir einfach. Demo: http://ksdemo.somee.com/sample4.asp danke –

+0

@Martha: Ja - ich habe 'GetString' vergessen. Gut darauf hingewiesen. – Paul

0

danken allen für die Unterstützung. Ich habe es so gemacht

<script type="text/javascript" language="javascript"> 
<!-- 
    $(function() { 
$("#productname").autocomplete({ 
source: "list.asp", 
     minLength: 2 
    }); 
    }); 
// --> 
</script>