簡體   English   中英

自定義控件中的AutoCompleteExtender

[英]AutoCompleteExtender in Custom Control

我有一個帶有動態創建的文本框的復合用戶控件。 創建文本框並將其插入ASCX上的占位符后,我還將動態創建一個AutoCompleteExtender,以剛創建的文本框為目標。 如果僅添加一個ACE,一切正常,但是一旦頁面上存在多個ACE,就會出現以下錯誤:

Microsoft JScript運行時錯誤:無法獲取屬性“ _behaviors”的值:對象為null或未定義

這是jQuery中包含的JScript錯誤的特定位置。

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

如果在頁面上創建虛擬文本框和ACE,則相同的代碼也有效。 但是我需要在自定義控件中創建這些。

這表明我“做對了”-而且,因為我可以使ONE ACE在控件中正常工作。

我正在使用Web服務-不是頁面方法-我意識到用戶和自定義控件不能包含頁面方法,這些方法必須位於“頁面”中。

我已經嘗試了許多方法-確保文本框都具有唯一的ID。 ACE都有唯一的ID。 我嘗試過在定義的ACE上使用或不使用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);
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM