AutoCompleteExtender в пользовательском элементе управления

У меня есть составной пользовательский элемент управления с динамически создаваемыми текстовыми полями. Когда текстовые поля создаются и вставляются в заполнитель на ASCX, я также динамически создаю AutoCompleteExtender, ориентируясь на только что созданное текстовое поле. Все работает нормально, если я добавляю только один ACE, но как только на странице присутствует более одного, я получаю следующую ошибку:

Ошибка выполнения Microsoft JScript: невозможно получить значение свойства «_behaviors»: объект имеет значение null или не определен

Это конкретное место ошибки JScript, содержащейся в jQuery.

var c=a._behaviors=a._behaviors||[];

Тот же код работает, если я создаю фиктивные текстовые поля и ACE на своей странице. Но мне нужно, чтобы они были созданы в пользовательском элементе управления.

Это указывает на то, что я "делаю это правильно" - также, поскольку я могу заставить ONE ACE работать в управлении просто отлично.

Я использую веб-службу - НЕ метод страницы - я понимаю, что пользовательские и пользовательские элементы управления не могут содержать методы страницы, они должны быть на «странице».

Я пробовал несколько вещей - я гарантировал, что все текстовые поля имеют уникальные идентификаторы. Все ACE имеют уникальные идентификаторы. Я пробовал с BehaviorID и без него в определенном ACE (опять же с уникальным идентификатором). Я знаю, что веб-сервис работает, потому что один ACE работает отлично.

Я даже пытался передать список сгенерированных ACE до уровня страницы из элемента управления и вставить их в заполнитель на уровне страницы. Затем я получаю RTE, что текстовое поле не может быть найдено с предоставленным идентификатором.

Любые советы по добавлению нескольких ACE в составной пользовательский элемент управления с динамически генерируемыми текстовыми полями и расширителями?

С Уважением.


person Ripside    schedule 10.02.2013    source источник
comment
Это пользовательский элемент управления или веб-элемент управления?   -  person Yuriy Rozhovetskiy    schedule 11.02.2013
comment
Составной пользовательский контроль. Хотя я хотел бы знать, как это сделать, в итоге я перешел на автозаполнение jQuery, на реализацию которого у меня ушло 2 часа с динамически генерируемыми текстовыми полями.   -  person Ripside    schedule 12.02.2013


Ответы (1)


Это работает для меня:

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);
            }
        }
    }
}
person YaakovHatam    schedule 25.07.2013
comment
Спасибо за это - я мог бы посетить повторно. Хорошо иметь ответы на такие проблемы, как у меня, даже если я перейду к другому решению. Ваш очень похож на то, что я делал. - person Ripside; 28.07.2013