C# 自定义控件中的AutoCompleteXtender
我有一个带有动态创建的文本框的复合用户控件。在创建文本框并将其插入ASCX上的占位符时,我还将动态创建一个AutoCompleteXtender,以刚刚创建的文本框为目标。如果我只添加一个ACE,一切都正常,但一旦页面上出现多个ACE,就会出现以下错误: Microsoft JScript运行时错误:无法获取属性“\u行为”的值:对象为null或未定义 这是jQuery中包含的JScript错误的特定位置 变量c=a.|行为=a.|行为|[] 如果我在页面上创建虚拟文本框和ACE,同样的代码也可以工作。但是我需要在自定义控件中创建这些 这表明我“做得很好”——而且,因为我可以让一张王牌在控制中正常工作 我使用的是web服务,而不是页面方法,我意识到用户和自定义控件不能包含页面方法,它们必须在“页面”中 我已经尝试了很多方法——我已经确保文本框都有唯一的ID。ACE都有唯一的ID。我尝试过在ACE上定义BehaviorID和不定义BehaviorID(同样使用唯一ID)。我知道web服务是有效的,因为一张ACE就能运行得很好 我甚至尝试将生成的ACE列表从控件传递到页面级,并将它们插入到页面级占位符中。然后我得到RTE的消息,说无法找到带有提供ID的文本框 关于在复合用户控件中添加多个ACE,以及动态生成的文本框和扩展器,有什么提示吗C# 自定义控件中的AutoCompleteXtender,c#,asp.net,custom-controls,ajaxcontroltoolkit,autocompleteextender,C#,Asp.net,Custom Controls,Ajaxcontroltoolkit,Autocompleteextender,我有一个带有动态创建的文本框的复合用户控件。在创建文本框并将其插入ASCX上的占位符时,我还将动态创建一个AutoCompleteXtender,以刚刚创建的文本框为目标。如果我只添加一个ACE,一切都正常,但一旦页面上出现多个ACE,就会出现以下错误: Microsoft JScript运行时错误:无法获取属性“\u行为”的值:对象为null或未定义 这是jQuery中包含的JScript错误的特定位置 变量c=a.|行为=a.|行为|[] 如果我在页面上创建虚拟文本框和ACE,同样的代码也可
问候。这对我来说很有用:
public partial class multiACEfromCodeBehind : System.Web.UI.Page
{
public override void VerifyRenderingInServerForm(Control control)
{
/* Confirms that an HtmlForm control is rendered for the specified ASP.NET
server control at run time. */
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
for(int i = 0; i < 10; i++)
{
// Create TextBox and its properties
string textBoxID = String.Format("{0}_{1}", "AutoCompleteTextBox", i);
TextBox textbox = new TextBox();
textbox.ID = textBoxID;
textbox.Width = new Unit(250);
textbox.Attributes.Add("autocomplete", "off");
// Create AutoCompleteExtender and its properties
AutoCompleteExtender autoCompleteExtender = new AjaxControlToolkit.AutoCompleteExtender();
autoCompleteExtender.TargetControlID = textBoxID;
autoCompleteExtender.ServiceMethod = "GetCompletionList";
autoCompleteExtender.ServicePath = "YourAutoCompleteWebService.asmx";
autoCompleteExtender.CompletionInterval = 1500;
autoCompleteExtender.CompletionSetCount = 10;
autoCompleteExtender.EnableCaching = true;
// Add created controls to the page controls collection
this.Controls.Add(textbox);
this.Controls.Add(autoCompleteExtender);
}
}
}
}
public分部类multacefromcodebehind:System.Web.UI.Page
{
公共覆盖无效VerifyRenderingInServerForm(控件)
{
/*确认已为指定的ASP.NET呈现HtmlForm控件
运行时的服务器控件*/
}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{
对于(int i=0;i<10;i++)
{
//创建文本框及其属性
string textBoxID=string.Format(“{0}{1}”,“自动完成文本框”,i);
TextBox TextBox=新建TextBox();
textbox.ID=textBoxID;
textbox.Width=新单位(250);
textbox.Attributes.Add(“自动完成”、“关闭”);
//创建AutoCompleteXtender及其属性
AutoCompleteXtender AutoCompleteXtender=新的AjaxControlToolkit.AutoCompleteXtender();
AutoCompleteXtender.TargetControlID=textBoxID;
AutoCompleteXtender.ServiceMethod=“GetCompletionList”;
AutoCompleteXtender.ServicePath=“YourAutoCompleteWebService.asmx”;
AutoCompleteXtender.CompletionInterval=1500;
AutoCompleteXtender.CompletionSetCount=10;
AutoCompleteXtender.EnableCaching=true;
//将创建的控件添加到页面控件集合
this.Controls.Add(文本框);
this.Controls.Add(AutoCompleteXtender);
}
}
}
}
这是用户控件还是web控件?复合用户控件。虽然我想知道如何做到这一点,但最终还是过渡到了jQuery的自动完成,这花了我2个小时的时间来实现动态生成的文本框。谢谢,我可能会再次访问。即使我换了另一个解决方案,我也能找到问题的答案。你的看起来和我做的非常相似。