我在公司的实习即将结束,我已经接受了这样一个事实:我可能不会想出自动完成。但作为最后的努力,我想再试一次。
我似乎无法让AJAX自动完成功能完全正常运行。我试图遵循示例 - 即使是简单的示例,每次,自动完成下拉列表都会从HTML页面返回代码,一次一行,如: < ! d Ø C Ť ÿ P ë
等等。看起来似乎没有调用服务方法。我在我的Site.Master中有EnablePageMethods,我有方法(在后面的代码中)以ScriptMethod()& WebMethod标题。
这是我的内容页面(Site.Master的孩子):
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master"
AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
Inherits="AutoCompleteTestingCompleteLy.WebForm1" %>
<%@ Register assembly="AjaxControlToolkit"
namespace="AjaxControlToolkit"
tagprefix="ajaxToolkit" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent"
runat="server">
<p></p>
<p></p>
<asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ServiceMethod="SearchCustomers"
MinimumPrefixLength="2"
CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
TargetControlID="txtContactsSearch"
ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</ajaxToolkit:AutoCompleteExtender>
<br />
<br />
</asp:Content>
并且......我的C#代码服务方法背后
namespace AutoCompleteTestingCompleteLy
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count)
Sci{
string conString = "Data Source=DESKTOP-2NHEBS2;Initial Catalog=QualityDatabase;Integrated Security=SSPI";
SqlConnection con = new SqlConnection(conString);
string selectBatchSql = "SELECT * from [Batch Info]";
SqlCommand com = new SqlCommand(selectBatchSql, con);
List<string> customers = new List<string>();
try
{
con.Open();
using (SqlDataReader sdr = com.ExecuteReader())
{
while (sdr.Read())
{
customers.Add(sdr["Batch"].ToString());
}
}
}
finally
{
con.Close();
}
return customers;
}
}
}
在Site.Master
中的ScriptManager中将EnablePageMethods设置为true拜托,拜托......如果有人能提供帮助,我会恳求你。今年夏天我已经克服了许多障碍,但这让我感到困惑......