Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义控件中的AutoCompleteXtender_C#_Asp.net_Custom Controls_Ajaxcontroltoolkit_Autocompleteextender - Fatal编程技术网

C# 自定义控件中的AutoCompleteXtender

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,同样的代码也可

我有一个带有动态创建的文本框的复合用户控件。在创建文本框并将其插入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,以及动态生成的文本框和扩展器,有什么提示吗


问候。

这对我来说很有用:

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个小时的时间来实现动态生成的文本框。谢谢,我可能会再次访问。即使我换了另一个解决方案,我也能找到问题的答案。你的看起来和我做的非常相似。