0

簡単に...私はこれの初心者です。

OK、AutoCompleteExtenderを自分のWebページに追加しました。ユーザーがプロジェクトに検索タグを追加します。データベースに既に存在するタグを使用してテキストボックスをオートコンプリートする必要があります。

タグの「レジストリ」はありません。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ソリューションの例もいくつか見つけましたが、クエリをその形式にする方法がわかりません。どんな助けやアイデアも大歓迎です!

4

1 に答える 1

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

うまくいけば、それはそこにいる他の誰かを助けるでしょう!

于 2012-12-03T19:07:45.273 に答える