2011-05-17 70 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