【发布时间】: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