Javascript 需要忽略自动完成框中的重复条目

Javascript 需要忽略自动完成框中的重复条目,javascript,jquery,ajax,vb.net,Javascript,Jquery,Ajax,Vb.net,我有一个使用jquery自动完成插件的输入。有了这个,我想返回5个结果。我是通过在我使用的存储过程中输入5个返回结果来实现这一点的,但是我想删除重复的结果,同时仍然显示5个结果。我不确定做这件事的最佳方式 这是我的回调页面代码 Public Class SearchCallback Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Ha

我有一个使用jquery自动完成插件的输入。有了这个,我想返回5个结果。我是通过在我使用的存储过程中输入5个返回结果来实现这一点的,但是我想删除重复的结果,同时仍然显示5个结果。我不确定做这件事的最佳方式 这是我的回调页面代码

Public Class SearchCallback
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Clear()
    Dim searchText As String = Request("searchText")
    Dim searchField As String = Request("searchField")


    Dim dtCustomer As CustomerCollection = CustomerService.SearchRecords(searchText, searchField, "Contains", searchField, "Asc", CInt("1"), CInt("5"))
    Dim returnString As String
    If searchField = "Company" Then
        For Each drCustomer As Customer In dtCustomer
            If returnString = "" Then
                returnString = drCustomer.Company
            else
                returnString = returnString & "," & drCustomer.Company
            End If
        Next
        Response.Write(returnString)
在那之后,我有一个更多searchfield选项的列表,以提供我想要的数据。我把需要的信息放进一个字符串中,这样我就可以在javascript代码中使用它,如下所示

$(document).ready(function () {
$(".searchTextBox").autocomplete({
    source: callback,
    autoFill: true
});
});

var callback = function (request, response) {
var searchText = request.term;
var searchField = $(".ddlist > option:selected").attr("value");
$.ajax({
    type: "GET",
    dataType: "text",
    url: "SearchCallback.aspx?searchText=" + searchText + "&searchField=" + searchField,
    success: function (data) {
        var splitData = data.split(",");
        response(splitData);
    }
});
}
除了我遇到的复制问题外,一切都正常。。请帮忙


这有点混乱,但我用下面的代码让它按照我想要的方式工作

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Clear()
    Dim searchText As String = Request("searchText")
    Dim searchField As String = Request("searchField")
    Dim lastValue As String
    Dim resultsCounter As Integer = 0

    Dim dtCustomer As CustomerCollection = CustomerService.SearchRecords(searchText, searchField, "Contains", searchField, "Asc", CInt("1"), CInt("100"))
    Dim returnString As String
    If searchField = "Company" Then
        resultsCounter = 0
        For Each drCustomer As Customer In dtCustomer
            If returnString = "" Then
                returnString = drCustomer.Company
                lastValue = drCustomer.Company
                resultsCounter += 1
            ElseIf resultsCounter < 6 Then
                If lastValue <> drCustomer.Company Then
                    returnString = returnString & "," & drCustomer.Company
                    lastValue = drCustomer.Company
                    resultsCounter += 1
                End If
            End If
        Next

        Response.Write(returnString)
Protected Sub Page_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
答复:Clear()
Dim searchText As String=请求(“searchText”)
Dim searchField作为字符串=请求(“searchField”)
将最后一个值设置为字符串
Dim resultsCounter As Integer=0
Dim dtCustomer As CustomerCollection=CustomerService.SearchRecords(searchText,searchField,“Contains”,searchField,“Asc”,CInt(“1”),CInt(“100”))
将返回字符串设置为字符串
如果searchField=“Company”,则
结果计数器=0
作为dtCustomer中的客户,针对每个drCustomer
如果returnString=“”,则
returnString=drCustomer.Company
lastValue=drCustomer.Company
结果计数器+=1
ElseIf resultsCounter<6则
如果是客户公司,那么
returnString=returnString&“,”和drCustomer.Company
lastValue=drCustomer.Company
结果计数器+=1
如果结束
如果结束
下一个
Response.Write(返回字符串)

您使用的是哪种ORM框架?对于SQL,DISTINCT关键字用于此,这可能会有所帮助

我会使用它,但对于此,我被迫使用存储过程,并且我没有在存储过程中指定参数的选项,您可以使用DISTINCT关键字,因为它在查询中使用。检查我的设置,这是唯一一个我想要不同值的地方,所以我不得不更改我所有的代码隐藏和webserveces,我很懒,所以我只是在我的代码隐藏中手动完成了。我用我所做的补充了我的问题。投票支持尝试这听起来更像是SearchRecords方法中的数据访问问题,您可以使用DISTINCT before LIMIT(5)来确保所需内容。