【发布时间】:2014-12-31 08:06:53
【问题描述】:
我正在尝试在我自己的网页上实现 http://www.aspsnippets.com/Articles/AJAX-AutoCompleteExtender-Example-in-ASPNet.aspx 上的自动完成示例。
作者说;
这里我解释一下,如何在不使用任何网络服务的情况下,直接将 AJAX AutoCompleteExtender 控件与 ASP.Net 网页一起使用。
我有
- 下载AjaxControlToolkit
- 安装了工具
- 按照自己的目的写代码。
我的代码如下:
<!--Default.aspx-->
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
...
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
...
<asp:TextBox ID="txt_searchTerm" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
CompletionInterval="200" MinimumPrefixLength="4" EnableCaching="false"
CompletionSetCount="10" TargetControlID="txt_searchTerm"
FirstRowSelected="false" ServiceMethod="searchInDictionary">
</cc1:AutoCompleteExtender>
//Default.aspx.cs
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> searchInDictionary(string prefixText, int count)
{
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = ConfigurationManager
.ConnectionStrings["myConnectionString"].ConnectionString;
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.CommandText = "SELECT word FROM Dictionary WHERE word LIKE @searchTerm + '%'";
cmd.Parameters.AddWithValue("@searchTerm", prefixText);
cmd.Connection = conn;
conn.Open();
List<string> result = new List<string>();
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.Add(dr["word"].ToString());
}
}
conn.Close();
return result;
}
}
在文本框中输入 4 个字符后,我得到一个包含太多字符的列表,这些字符是当前页面的 html 源。每行只有一个源代码字符。就像
<
!
D
O
C
T
Y
P
E
...
直到
<
/
h
t
m
l
>
我正在尝试自动完成“癌症”一词。我输入“canc”,它会列出 HTML 源代码。
我已经使用 FireBug 检查了该页面 在 Net 选项卡的 XHR 部分中,会触发一个 POST 操作,其值如下:
JSON
count 10
prefixText "canc"
来源
{"prefixText":"canc","count":10}
【问题讨论】:
-
您能告诉我您的数据库中 word 的第一列中的文字是什么
-
尝试调试看看
searchInDictionary方法是否被执行,执行结果是什么。 -
听起来自动完成功能是返回一个 HTML 页面而不是序列化数据;您是否能够在某个时候检查 Ajax 调用(使用 Glimpse、Fiddler 或 Firebug)?
标签: c# asp.net ajaxcontroltoolkit