我正在为我的ASP.NET项目使用AutoCompleteExtender,它正在拉动字段以显示正常。但是,当用户选择自动完成建议时,我需要该函数从该行(作为主键的“ID”列)中提取另一个字段,因为这是用于显示相关数据的必要字段。
这是我的代码
public string[] GetAutoComplete(string prefixText)
{
int count = 10;
string sql = "SELECT * FROM SageAccount WHERE Name LIKE @prefixText";
SqlDataAdapter da = new SqlDataAdapter(sql, "My Connection String(changed due to personal info being shown)");
da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
DataTable dt = new DataTable();
da.Fill(dt);
string[] items = new string[dt.Rows.Count];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr["Name"].ToString(), i);
i++;
}
return items;
}
编辑:我正在尝试的一些修改过的代码:
public string[] GetAutoComplete(string prefixText, int count)
{
string sql = "SELECT * FROM SageAccount WHERE Name LIKE @prefixText";
SqlDataAdapter da = new SqlDataAdapter(sql, "Con string");
da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText + "%";
DataTable dt = new DataTable();
da.Fill(dt);
List<string> Names = new List<string>();
//string[] items = new string[dt.Rows.Count];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
Names.Add(AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(dr["Name"], dr["ID"].ToString());
//items.SetValue(dr["Name"].ToString(), i);
}
return Names.ToArray();
我在这里遇到的问题是它给了我错误:
'AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItems(string,string)'的最佳重载方法匹配'有一些无效的争论'
有什么想法吗?非常感谢
答案 0 :(得分:0)
我过去使用隐藏字段来保存所选的ID。查看HERE 或者通过谷歌查看如何使用隐藏字段,我现在没有代码。
编辑2:检查您的新方法是否需要int参数,并且您正在调用发送字符串。并且..检查您是否正在调用另一个名为CreateAutoCompleteItems的方法,它似乎是缺失