根据官方文档,您不能。不仅不能使用 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 官方文档中的更多示例。