2012-09-11 79 views
0

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

我可以在AutoCompleteExtender中使用DataTabe作为信息吗?如果我可以使用这个如何使用这个?

+0

而不是使用** Ajax AutoCompleteExtender **为什么不使用** webservice **和** J-query **自动完成文本框。 – RL89

回答

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更多的例子。

+0

是的给我看一个例子:P – Tarasov

+0

please .......... – Tarasov

+0

@Tarasov查看我的更新 – Icarus

相关问题