Необходимо игнорировать дубликаты записей в поле автозаполнения - PullRequest
0 голосов
/ 17 мая 2011

У меня есть вход, используя плагин автозаполнения 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)

После этого у меня был список дополнительных параметров поля поиска, чтобы дать мне нужные данные. Я помещаю необходимую информацию в строку, чтобы я мог использовать ее с моим кодом 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)

1 Ответ

1 голос
/ 17 мая 2011

Какую среду ORM вы используете? В SQL для этого используется ключевое слово DISTINCT, которое может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...