2011-05-17 49 views
0

我有一个使用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) 
您正在使用什么样的ORM框架的
+0

这听起来更像是SearchRecords方法中的数据访问问题,您可以在LIMIT(5)之前使用DISTINCT来确保您需要。 – JOBG 2011-05-17 19:05:01

回答

1

?使用SQL DISTINCT关键字用于此,这可能会帮助

+0

我会使用它,但为此我被迫使用存储过程,并且我没有给出该参数的选项 – Mertis 2011-05-17 18:39:41

+0

在存储过程中,您可以使用distinct关键字,因为它在查询中使用。检查http://www.w3schools.com/sql/sql_distinct.asp – 2011-05-17 18:45:19

+0

与我的设置,这是唯一的地方,我想要不同的值,所以我不得不改变我所有的代码和webserveces andim懒惰,所以我只是在我的代码隐藏中手动完成。我在我的问题上加上了我所做的。 upvote的尝试! :d – Mertis 2011-05-17 19:05:05