C# 自动完成在ASP.Net Web表单和母版页中不起作用
我的脚本有点问题。我有一个名为CoursesPage.aspx的网页表单,它有一个母版页。 我在一个文本框中使用了自动完成功能,该文本框从数据库中获取课程名称。 jQuery在没有母版页的页面上就像一个符咒,但它在这个页面上不起作用 这是代码C# 自动完成在ASP.Net Web表单和母版页中不起作用,c#,javascript,jquery,asp.net,master-pages,C#,Javascript,Jquery,Asp.net,Master Pages,我的脚本有点问题。我有一个名为CoursesPage.aspx的网页表单,它有一个母版页。 我在一个文本框中使用了自动完成功能,该文本框从数据库中获取课程名称。 jQuery在没有母版页的页面上就像一个符咒,但它在这个页面上不起作用 这是代码 <link rel="stylesheet" href="css/jquery-ui.css" /> <script src="js/jquery-1.8.3.js" type="text/javascript"><
<link rel="stylesheet" href="css/jquery-ui.css" />
<script src="js/jquery-1.8.3.js" type="text/javascript"></script>
<script src="js/jquery-ui.js" type="text/javascript" ></script>
<script type="text/javascript">
function LoadList() {
alert("I'm good");
var ds = null;
ds = <%=listFilter %>
$("#txtName").autocomplete({
source: ds
});
}
$(function () { LoadList(); });
</script>
我说我很好;只是为了看看脚本是否启动,结果是启动了。所以这些文件没有问题。但其余的没有
这就是背后的代码:
private string BindName()
{
DataTable dt = null;
using (MakeConn())
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select distinct Name from courses";
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
dt = new DataTable();
da.Fill(dt);
}
}
}
StringBuilder output = new StringBuilder();
output.Append("[");
for (int i = 0; i < dt.Rows.Count; ++i)
{
output.Append("\"" + dt.Rows[i]["Name"].ToString() + "\"");
if (i != (dt.Rows.Count - 1))
{
output.Append(",");
}
}
output.Append("];");
return output.ToString();
}
您没有从.aspx代码中提供标记。但最有可能的是,为您的文本框生成的ID因ClientMode的不同而不同。如果您不确定,可以查看页面生成的HTML 您应该做的是将文本框的clientMode设置为Static。然后客户端上的ID将是txtName
<asp:TextBox runat="server" id="txtName" ClientIdMode="Static" />
有关详细信息,请参阅
您可以使用web.config中的单个设置为所有页面上的所有控件设置ClientMode
<configuration>
<system.web>
<pages clientIDMode="Static"></pages>
</system.web>
</configuration>
我知道这个的方向
另一种方法是将ASP.NET内联,为JavaScript提供ClientId。这样做的好处是,如果出于某种原因删除或重命名txtName,将导致编译错误,而不是在运行时自动失败
$("#<%= txtName.ClientID %>").autocomplete();
尝试:
$("#ContentPlaceHolder1_txtName").autocomplete({
source: ds
});
您的文本框id可能会由ContentPlaceholder id后跟u和您的文本框id标识。请尝试使用Chrome ispector,查看您的文本框标识的id是!!成功了!!天哪,我整个晚上都在这上面。谢谢你,先生。