【问题标题】:Auto populate AutoCompleteExtender with all possibilities on first click首次单击时自动填充 AutoCompleteExtender 的所有可能性
【发布时间】:2017-06-21 16:46:48
【问题描述】:

我试图让 autoCompleteExtender 填充文本框的所有可能性。到目前为止,我没有运气。我尝试在文本框标签中添加 onfucus 来调用一个调用 web 方法的 js 函数,以从数据表中填充,但没有成功。正在调用 web 方法,但页面上没有显示任何内容。只有在文本框中输入内容后,才会出现任何建议。 这里是aspx页面控件:

<div title="Model" runat="server" style="text-align:left; padding:20px"><strong>Model</strong>
                <asp:TextBox ID="tbModel" runat="server" onfocus="ModelTBOnFocus()"></asp:TextBox>
                <div id="ModelListPlacement" style="height:100px; overflow-y:scroll;" ></div>
                    <ajaxToolkit:AutoCompleteExtender ID="tbModel_AutoCompleteExtender" runat="server" DelimiterCharacters=""
                        Enabled="True" ServiceMethod="GetListofModels" MinimumPrefixLength="1" EnableCaching="true"
                        ServicePath="" TargetControlID="tbModel" CompletionInterval="50" CompletionSetCount="40"
                        CompletionListElementID="ModelListPlacement"></ajaxToolkit:AutoCompleteExtender>
            </div>

这是 CodeBehind webMethod:

[System.Web.Script.Services.ScriptMethod()]
        [System.Web.Services.WebMethod]
        public static List<string> GetListofModels(string prefixText)
        {
            using (SqlConnection sqlconn = new SqlConnection(GetConnectionStringValue("")))
            {
                sqlconn.Open();
                SqlCommand cmd = new SqlCommand("SELECT DISTINCT(Model) FROM Assets WHERE Model like '" + prefixText + "%' " + ModelQuery, sqlconn);
                cmd.Parameters.AddWithValue("@Model", prefixText);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                List<string> Models = new List<string>();
                TextInfo myTI = CultureInfo.CurrentCulture.TextInfo;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string model = myTI.ToTitleCase(dt.Rows[i]["Model"].ToString().ToLower());
                    Models.Add(model);
                }
                return Models;
            }
        }

这是工作代码。我只是想在文本框聚焦时显示所有可能性。任何帮助将非常感激。谢谢!

编辑: 这个 js 也可以工作,但在输入内容之前我没有得到任何建议。 这是调用该函数的javascript代码:

<script type="text/javascript">
        function ModelTBOnFocus() {
            PageMethods.GetListofModels("");
        }
</script>

【问题讨论】:

  • 您介意分享您为专注而编写的 javascript 代码吗?为什么我要问的是自动完成有自己的焦点事件,可能有助于触发您的代码。自动完成焦点事件是autocompletefocus
  • 我将如何在这段代码中实现自动完成焦点。我试图将它添加到 autoCompleteExtender 标记中,但错误提示不存在公共属性。
  • 嗯,不确定,您有没有机会尝试stackoverflow.com/questions/4132058/… 中的一些解决方案。尝试将此 $(this).data("autocomplete").search($(this).val()); 添加到您的 javascript 函数中,并从 asp 页面传递 this。

标签: javascript c# jquery asp.net


【解决方案1】:

找到我的答案: 为了解决这个问题,我必须设置 MinimumPrefixLength="0"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多