包含带有AutoCompleteExtender的用户控件的母版页
本文关键字:控件 母版页 用户 包含带 AutoCompleteExtender | 更新日期: 2023-09-27 18:24:55
应用简介:
我正在创建一个网站,它有一个母版页,一个子母版页和一些内容页。
我创建了一些用户控件来在主主页面上显示信息。我已经在我的主主页上直接注册了这些控件,并指定了它们的位置。
我在ContentPlaceHolder中使用了一些内容页和其他母版页。
描述:
我在一个用户控件上有一个文本框,我想将其与AutoCompleteExtender一起使用,通过向用户显示相关结果来帮助用户查找特定文本。
以下是代码示例:
<asp:TextBox ID="TxtSource" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender
ID="AutoCompleteSource"
TargetControlID = "TxtSource"
MinimumPrefixLength="1"
ServiceMethod="GetSourceList"
runat="server" UseContextKey="True">
</asp:AutoCompleteExtender>
自定义控制背后的代码:
[System.Web.Services.WebMethod(), System.Web.Script.Services.ScriptMethod()]
public static string[] GetSourceList(string prefixText, int count, string contextKey)
{
string[] SourceList = {"Star Wars", "Star Trek", "Superman", "Memento", "Shrek", "Shrek II"};
return (from m in SourceList where m.StartsWith(prefixText.ToUpper()) select m).ToArray();
}
我不是在使用webservice,而是使用codeehind来调用该方法。
问题:
永远不会调用codeehind中的函数。
我知道我必须将函数保留在aspx文件中,但运气不好,我没有在aspx上添加控件,而是在主文件上添加控件。母版页再次被视为控件,而不是页面。
一种解决方案:
我可以在每个内容页面上添加自定义控件。
问题:
1) 没有代码的可重用性,这是我想要实现的。
2) 页面布局将被更改。
有没有其他解决方案,代码更改最少?
尝试设置自动完成扩展程序的ServicePath。
<asp:TextBox ID="TxtSource" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender
ID="AutoCompleteSource"
TargetControlID = "TxtSource"
MinimumPrefixLength="1"
ServiceMethod="GetSourceList"
ServicePath="yourpage.cs"
runat="server" UseContextKey="True">
</asp:AutoCompleteExtender>