asp.net ajaxtoolkit 自动完成功能不起作用
Posted
技术标签:
【中文标题】asp.net ajaxtoolkit 自动完成功能不起作用【英文标题】:asp.net ajaxtoolkit autocomplete does not work 【发布时间】:2013-05-29 13:21:47 【问题描述】:我尝试使用 AutoCompleteExtender,但它不起作用。我使用 ajaxToolkit 和 web 服务文件。两者都没有错误。我认为脚本可能是错误的,请给我修复建议。
< ajaxToolkit:AutoCompleteExtender
runat="server"
BehaviorID="AutoCompleteEx"
ID="autoComplete1"
TargetControlID="TextBox"
ServicePath="AutoComplete.asmx"
ServiceMethod="GetCompletionList"
MinimumPrefixLength="2"
CompletionInterval="1000"
EnableCaching="true"
CompletionSetCount="20"
CompletionListCssClass="autocomplete_completionListElement"
CompletionListItemCssClass="autocomplete_listItem"
CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"
DelimiterCharacters=";, :"
OnClientShowing="true" >
<Animations>
<OnShow>
<Sequence>
<OpacityAction Opacity="0" />
<HideAction Visible="true" />
<ScriptAction Script="
// Cache the size and setup the initial size
var behavior = $find('AutoCompleteEx');
if (!behavior._height)
var target = behavior.get_completionList();
behavior._height = target.offsetHeight - 2;
target.style.height = '0px';
" />
<Parallel Duration=".4">
<FadeIn />
<Length PropertyKey="height" StartValue="0" EndValueScript="$find('AutoCompleteEx')._height" />
</Parallel>
</Sequence>
</OnShow>
<OnHide>
<Parallel Duration=".4">
<FadeOut />
<Length PropertyKey="height" StartValueScript="$find('AutoCompleteEx')._height" EndValue="0" />
</Parallel>
</OnHide>
</Animations>
</ajaxToolkit:AutoCompleteExtender>
AutoComplete.asmx:
public string[] GetCompletionList(string prefixText, int count)
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["U"].ToString());
DataSet ds = new DataSet();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from Stoc WITH (NOLOCK) where KeySentences like @myParameter";
cmd.Parameters.AddWithValue("@myParameter", "%" + prefixText + "%");
try
cn.Open();
cmd.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
catch (Exception ex)
finally
cn.Close();
dt = ds.Tables[0];
//Then return List of string(txtItems) as result
List<string> txtItems = new List<string>();
String dbValues;
foreach (DataRow row in dt.Rows)
//String From DataBase(dbValues)
dbValues = row["KeySentences"].ToString();
dbValues = dbValues.ToLower();
txtItems.Add(dbValues);
return txtItems.ToArray();
感谢您的回答..
【问题讨论】:
您确定没有错误吗?你确定你能找回任何数据吗?那个空的“catch”块可能会导致你错过任何正在发生的错误。设置断点并查看“catch”块中是否出现错误,如果没有,是否从数据库调用中返回任何内容。 打开Chrome的开发工具的console看看,有没有报错? 【参考方案1】:我在此属性上使用 ajaxtoolkit4.5 错误进行测试。
OnClientShowing="true"
.
不确定您要做什么,但请为我删除这项工作。 (我通过删除数据库连接和工作来复制您的代码)
【讨论】:
以上是关于asp.net ajaxtoolkit 自动完成功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 ajax 动态创建 TABCONTAINER ASP.NET