0

我在 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());

当我执行并运行程序时,什么也没有发生。我不知道出了什么问题。请指导我。

4

2 回答 2

0

在返回部分修改您的代码

return Custlist; 
于 2012-06-26T03:41:31.277 回答
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关键字限制结果,因为该表可能包含太多行,并且您的 AutoComplete 扩展程序将无法按预期执行。

于 2012-06-26T04:13:19.170 回答