Автозаполнение Extender не сортировка по алфавиту - PullRequest
0 голосов
/ 09 февраля 2010

Я использую LINQ в веб-сервисе, который создает функцию автозаполнения в текстовом поле. У меня это работает, но, к сожалению, результаты не заполняются в порядке, который я ожидаю, например, если бы я искал напитки, начинающиеся с «carl», я бы сначала ожидал «carling», а затем «carlsberg», но это не так.

Используемый веб-сервис:

public string[] GetProdDesSearch(string prefixText, int count)
    {

        try
        {
            ReportingService.ProductsDataContext dbac = new  ReportingService.FinalProductsDataContext();

            return dbac.FINALPRODUCTSNEWDEMOs
                .Where(r => r.MemberId == HttpContext.Current.Session["MemberKey"].ToString() && r.IDDesc.Contains(prefixText))
                .OrderBy(r => r.UnitDescription)
                .Select(r => r.IDDesc)
                .Distinct()
                .Take(count)
                .ToArray();

        }

        catch (Exception)
        {
            return null;
        }
    }

    }

Детали .net следующие:

 <asp:TextBox ID="tbxProdAC" runat="server"  
    style="z-index: 1; left: 200px; top: 460px; position: absolute; height: 20px; width: 345px;" 
    CssClass="completionList2" AutoPostBack="True" 
     ontextchanged="tbxProdAC_TextChanged"></asp:TextBox>   


<cc1:AutoCompleteExtender ID="tbxProdAC_AutoCompleteExtender" runat="server" 
    DelimiterCharacters="" Enabled="True" 
    ServicePath="~/Reporting/GetProd.asmx" 
    ServiceMethod="GetProdDesSearch" 
    TargetControlID="tbxProdAC" 
    CompletionInterval="50" CompletionSetCount="50" 
    MinimumPrefixLength="3"
    onclientpopulating="ShowImage"
    onclientpopulated="HideImage" 
    CompletionListCssClass="completionList2">
</cc1:AutoCompleteExtender>

.completionList2 {font-family: Trebuchet MS;font-size:11px; border:solid 1px #444444;margin:0px;padding:2px;height: 395px;
            overflow:auto; background-color:White;
          z-index: 1;
          left: 200px;
          top: 310px;
          position: absolute;
          width: 1496px;

      }

Если кто-то может указать мне на ошибку, я был бы очень признателен.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Я нашел ответ.

Отдельное должно быть помещено ДО порядка в моем запросе LINQ в веб-сервисе:

return dbac.FINALPRODUCTSNEWDEMOs
                .Where(r => r.MemberId == HttpContext.Current.Session["MemberKey"].ToString() && r.IDDesc.Contains(prefixText))
                .Distinct()
                .OrderBy(r => r.IDDesc)
                .Select(r => r.IDDesc)
                .Take(count)
                .ToArray();
1 голос
/ 09 февраля 2010

Вы сортируете по UnitDescription, но и ограничение на prefixText, и окончательно выбранный элемент IDDesc. Не очевидно, что вы должны использовать, но я думаю, что вы должны быть последовательными - либо заказывайте по IDDesc, либо заставьте ваши Contains и Select звонки использовать UnitDescription тоже.

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