C# 我可以使用AjaxToolKit中的AutoCompleteXtender数据表吗

C# 我可以使用AjaxToolKit中的AutoCompleteXtender数据表吗,c#,asp.net,datatable,autocompleteextender,C#,Asp.net,Datatable,Autocompleteextender,我构建了一个ASP.NET Web应用程序,我有一个文本框,用户可以在其中找到其他用户。为此,我希望使用AjaxToolKit中的AutoCompleteXtender。我从Active Directory获取的数据。如果我启动我的页面,应用程序将从ActiveDirectory创建一个包含所有UserDate的DataTable,我的问题是 我可以在AutoCompleteXtender中使用数据表来显示信息吗?如果我能用这个我怎么能用这个 根据规则,你不能。不仅不能使用DataTable,还

我构建了一个ASP.NET Web应用程序,我有一个文本框,用户可以在其中找到其他用户。为此,我希望使用AjaxToolKit中的AutoCompleteXtender。我从Active Directory获取的数据。如果我启动我的页面,应用程序将从ActiveDirectory创建一个包含所有UserDate的DataTable,我的问题是

我可以在AutoCompleteXtender中使用数据表来显示信息吗?如果我能用这个我怎么能用这个

根据规则,你不能。不仅不能使用DataTable,还必须实现web服务,并在其中实现具有非常特定签名的webmethod

如果您不介意使用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>
现在,您只需添加以下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官方文档中的更多示例。

与其使用Ajax AutoCompleteXtender,不如使用webservice和J-query自动完成文本框。
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)+"]";

}