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

asp.net ajax多滑块控件中的可变步骤

在asp.net中自动完成选择多个标签

带有 ASP.NET 问题的 Jquery 自动完成

asp.net webservice jquery 文本框自动完成

自动完成不适用于 IE 的 asp.net 文本框