“自动完成”文本框未前进到下一条记录

Autocomplete textbox not progressing to the next record

本文关键字:记录 一条 文本 自动完成      更新时间:2023-09-26

我使用下面的代码来获取文本框中的信息,但当它运行时,它只显示数据库的第一条记录。我怎样才能拿到下一张唱片?

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部分。。。

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

HTML部分。。。

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

您最好使用GetRows()将数据读取到数组中。然后,您可以使用这个二维数组来在线填充JavaScript代码。。。

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

(Martha提醒):还有RecordSet对象的GetString方法:

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

(我假设您使用的是SQL Server):如果您在SQL中执行此操作,则可以使用STUFF方法将字符串编译为列表。不过,我建议您为此使用存储过程。

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

还有你的JavaScript。。。

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

将您的javascript代码更改为以下代码:

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

这是因为您忘记在循环中执行语句。所以,只有第一个元素被加载到自动完成中。希望这有帮助:)

感谢大家的支持。我是这样做的

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