0

私は ASP.NET Web アプリケーションを構築しました。ユーザーが他のユーザーを見つけることができる TextBox があります。このために、AjaxToolKit の AutoCompleteExtender を使用します。Active Directory から取得したデータ。ページを開始すると、アプリケーションは ActiveDirectory からのすべての UserDate を使用して DataTable を作成し、私の質問は次のとおりです。

AutoCompleteExtender の情報に DataTabe を使用できますか? これを使用できる場合、これをどのように使用できますか?

4

1 に答える 1

1

公式ドキュメントによると、できません。DataTable を使用できないだけでなく、Web サービスを実装し、その中に非常に具体的な署名を持つ Web メソッドを実装する必要があります。

jQuery を使用しても構わない場合は、jQuery を使用した例を示します。

アップデート:

jQuery を使用する必要があるのは、マークアップに次のライブラリを含めることだけです。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.8.23/jquery-ui.min.js" type="text/javascript"></script>

asp:hiddenElementマークアップで、次のようにオートコンプリートに使用されるテキスト要素を追加できます。

<asp:HiddenElement id="hdnAutoComplete" runat="server" />
<asp:TextBox id="txtAutoComplete" runat="server" />

ここで、次の Javascript 関数を追加するだけです。

$(function(){
var items = eval($('#<%=hdnAutoComplete.ClientID%>').val());

  $( "#<%=txtAutoComplete.ClientID%>" ).autocomplete({
     source: items
   });

});

最後に、codebhind からのオートコンプリートに使用する要素を設定する必要があります。DataTable を使用したいので、簡単な方法を紹介します。

protected void Page_Load(object sender, EventArgs e)
{
     DataTable t = ...//your datatable is this

     var query = (from c in t.AsEnumerable()
                 select c.Field<string>("NameOfTheColumnYouWant")).ToArray();

     //this will create a javascript array on the client-side when it's eval'd 
     hdnAutoComplete.Value = "["+string.Join(",",query)+"]";

}

jQuery UI の公式ドキュメントのその他の例については、こちらを参照してください。

于 2012-09-11T13:09:58.493 に答える