[英]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.