Ajax自动完成代码无法正常工作(带数据库)

时间:2012-06-26 03:27:10

标签: c# asp.net

我在Asp.net(C#)中编写了一个简单的ajax自动完成代码

这是代码

ASPX

<asp:TextBox ID="TextBox1" runat="server" Height="21px" Width="80px"></asp:TextBox>
<asp:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" MinimumPrefixLength="1" ServiceMethod="GetCompletionList" TargetControlID="TextBox1" UseContextKey="True"></asp:AutoCompleteExtender>

代码隐藏

string connString = ConfigurationManager.ConnectionStrings["Station"].ToString();
string selectString = "SELECT *from Station";

List<String> CustList = new List<string>(count);
using (SqlConnection sqlConn = new SqlConnection(connString))
{
    sqlConn.Open();

    using (SqlCommand sqlCmd = new SqlCommand(selectString, sqlConn))
    {
        SqlDataReader reader = sqlCmd.ExecuteReader();
        while (reader.Read())
            CustList.Add(reader["DBRT"].ToString());//DBRT is the Column name

    }
}
return (CustList.ToArray());

当我执行并运行程序时,没有任何反应。我不知道出了什么问题。请指导我。

2 个答案:

答案 0 :(得分:0)

修改返回部分中的代码

return Custlist; 

答案 1 :(得分:0)

确保方法具有以下两个属性:

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] GetCompletionList................{}

编辑:我在你的代码中注意到的一些事情: string selectString = "SELECT *from Station";错误,应为SELECT * from(缺少*和from之间的空格)。

此外,您还需要选择那些以您的方法接收的前缀字符串值开头的名称。您的方法签名应为:

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]  
public static string[] GetCompletionList(string prefixText, int count, string contextKey) {

您希望在数据库中查看prefixText。您的选择查询应为:

string selectString = "SELECT * from Station where @Name like";

然后在定义命令后使用: cmd.Parameters.AddWithValue(NAME,prefixText +“%”);

这将根据文本框中输入的值从表中选择值。 它类似于: Select * from station where Name like 'some%';

此外,我建议您使用Top关键字限制结果,因为该表可能包含太多行,而您的自动完成扩展程序无法按预期执行。