作者说:
我已经:在这里我将解释如何直接在 ASP.Net Web 页面上使用 AJAX AutoCompleteExtender 控件而不使用任何 Web 服务。
- 下载了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;
}
}
在文本框中输入四个字符后,我得到了一个列表,其中包含太多当前页面HTML源代码的字符。每行只有一个源代码字符。就像这样:
<
!
D
O
C
T
Y
P
E
...
直到。
<
/
h
t
m
l
>
我正在尝试自动完成单词"Cancer"。当我输入"canc"时,它会列出HTML源代码。
我使用FireBug检查了页面,在Net标签的XHR部分,POST操作触发,并且以下是值:
JSON
count 10
prefixText "canc"
来源
{"prefixText":"canc","count":10}
searchInDictionary
方法是否被执行以及其执行结果如何。 - dario