我在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());
当我执行并运行程序时,没有任何反应。我不知道出了什么问题。请指导我。
答案 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关键字限制结果,因为该表可能包含太多行,而您的自动完成扩展程序无法按预期执行。