AjaxControlToolkit AutoCompleteExtender ...如何填写linq查询?

时间:2012-12-03 18:52:52

标签: asp.net linq ajaxcontroltoolkit autocompleteextender

轻松一点......我是新手。

好的,我已将AutoCompleteExtender添加到我的网页。用户将向项目添加搜索标签,我希望文本框能够使用数据库中已存在的标签自动完成。

我没有标签的“注册表”;只有一个带有tagName和projectID的表。因此,tagName可能会在表中重复多次。所以我只想在查询中返回不同的结果。 (这很容易。)

但是如何将它绑定到AutoCompleteExtender?我不熟悉Web服务等......

我正在使用实体框架,fyi ...

这是我在aspx页面上的自动完成代码:

<asp:TextBox ID="TagNameTextBox" runat="server"></asp:TextBox>

<ajaxToolkit:AutoCompleteExtender ID="TagNameTextBox_AutoCompleteExtender" 
runat="server"    
ServiceMethod="GetCompletionList" 
 MinimumPrefixLength="2" 
 EnableCaching="false" 
DelimiterCharacters="" 
Enabled="True" 
TargetControlID="TagNameTextBox"> 
</ajaxToolkit:AutoCompleteExtender>

这是我的linq查询:

            var qrygettags = (from t in db.TagTables
                          select new { t.TagName }).Distinct().ToString();

我也发现了一些jquery解决方案的例子,但我不知道如何将查询转换为该格式。任何帮助或想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

好吧,我一直在四处寻找并发现这个看似简单的解决方案,它对我有用。

在aspx页面中,在控件中,我有

ServiceMethod="GetTagNames" 

并在cs页面中我在页面加载中添加了这个:

[System.Web.Services.WebMethod]
public static string[] GetTagNames(string prefixText, int count)
{
    mydatabase db = new mydatabase();
    return db.TagTables.Where(n => n.TagName.StartsWith(prefixText)).OrderBy(n => n.TagName).Select(n => n.TagName).Distinct().Take(count).ToArray();
}

希望它可以帮助其他人!