【问题标题】:Autocomplete Extender not sorting alphabetically自动完成扩展器不按字母顺序排序
【发布时间】:2010-02-09 18:34:45
【问题描述】:

我在 Web 服务中使用 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;

      }

如果有人能以我的方式指出错误,我将非常感激。

【问题讨论】:

    标签: linq web-services autocomplete


    【解决方案1】:

    我找到了答案。

    distinct 应该放在 web 服务中我的 LINQ 查询中的 orderby 之前:

    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();
    

    【讨论】:

      【解决方案2】:

      您按UnitDescription 排序,但prefixText 的约束和最终选择的项目都是IDDesc。你应该使用哪个并不明显,但我认为你应该保持一致——要么按IDDesc 排序,要么让你的ContainsSelect 调用也使用UnitDescription

      【讨论】:

      • 向乔恩道歉,那是我在“玩”,看看使用 unitdescription 是否有什么不同。当我通过 IDDesc 订购时,会发生相同的情况,即产品列表排序错误
      • 看起来实际上并没有发生排序——从几行来看,它似乎只是在没有排序的情况下拉回数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      相关资源
      最近更新 更多