我在一个web服务中使用LINQ,在文本框上创建一个自动完成功能。我有它的工作,但不幸的是,结果没有按照我预期的顺序填充,例如,如果我搜索以“carl”开头的饮料,我期望先“carling”,然后再“carlsberg”,但是这个情况并非如此。自动完成扩展器不按字母顺序排序
正在使用的Web服务是:
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;
}
如果有人能指出我的方式错误,我将非常感谢。
很多道歉乔恩,那就是我“打”,看看是否使用unitdescription作出任何区别。 当我通过IDDesc进行订购时,也会发生同样的情况,即产品的排序错误 – 2010-02-09 10:28:07
看起来实际上没有进行排序 - 从查看几行结果看来,它看起来像是在没有排序的情况下单独提取数据。 – 2010-02-09 10:31:23