【问题标题】:Can I use a DataTable for a AutoCompleteExtender from AjaxToolKit我可以将 DataTable 用于 AjaxToolKit 中的 AutoCompleteExtender
【发布时间】:2012-09-11 13:00:05
【问题描述】:

我构建了一个 ASP.NET Web 应用程序,并且我有一个文本框,用户可以在其中找到其他用户。为此,我想使用 AjaxToolKit 中的 AutoCompleteExtender。我从 Active Directory 获得的数据。如果我启动我的页面,应用程序会使用 ActiveDirectory 中的所有 UserDate 创建一个 DataTable,而我的问题是。

我可以将 DataTabe 用于 AutoCompleteExtender 中的信息吗?如果我可以使用它,我该如何使用它?

【问题讨论】:

  • 你为什么不使用 Ajax AutoCompleteExtender 而不是使用 webserviceJ-query 来自动完成文本框.

标签: c# asp.net datatable autocompleteextender


【解决方案1】:

根据official documentation 你不能。不仅不能使用 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 的官方文档here阅读更多示例。

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2018-04-23
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2010-11-22
    • 2013-08-21
    相关资源
    最近更新 更多