2

동적으로 만든 텍스트 상자를 사용하여 합성 된 사용자 정의 컨트롤이 있습니다. 텍스트 상자가 만들어져 ASCX의 자리 표시 자에 삽입 될 때 방금 만든 텍스트 상자를 대상으로 AutoCompleteExtender를 동적으로 만듭니다. 난 단지 빨리 하나 이상의 페이지에 존재로 하나의 ACE를 추가 할 수 있지만 경우에 모든 것이 잘 작동, 나는 다음과 같은 오류 얻을 :사용자 지정 컨트롤의 AutoCompleteExtender

Microsoft JScript runtime error: Unable to get value of the property '_behaviors': object is null or undefined

이 jQuery에 포함 된 JScript의 오류의 특정 위치입니다 .

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

내 텍스트 상자와 ACE를 내 페이지에 만들면 같은 코드가 작동합니다. 그러나 나는 이것들이 커스텀 컨트롤에서 생성 될 필요가있다.

그게 바로 "잘하고있다"는 것을 의미합니다. 또한 ACE가 제대로 작동 할 수 있기 때문에 좋습니다.

웹 서비스를 사용하고 있습니다. 페이지 메서드가 아닙니다. 사용자 및 사용자 지정 컨트롤에 페이지 메서드가 포함될 수 없다는 것을 알았습니다. 이러한 메서드는 "페이지"에 있어야합니다.

여러 가지 시도를 해봤습니다. 텍스트 상자에 모두 고유 ID가 있음을 보장했습니다. ACE에는 모두 고유 한 ID가 있습니다. 나는 (고유 한 ID를 가진) 다시 정의 된 ACE에서 BehaviorID없이 시도했다. 하나의 ACE가 훌륭하게 실행되기 때문에 웹 서비스가 작동한다는 것을 알고 있습니다.

나는 심지어 생성 된 ACE의 목록을 컨트롤에서 페이지 수준까지 전달하여 페이지 수준의 자리 표시 자에 삽입하려고했습니다. 그렇다면 RTE는 ID가 제공된 텍스트 상자를 찾을 수 없다는 사실을 알게되었습니다.

복합 사용자 정의 컨트롤에서 동적으로 생성 된 텍스트 상자 및 확장자를 사용하여 여러 ACE를 추가하는 방법에 대한 팁은 무엇입니까?

감사합니다.

+0

를이되는 사용자 컨트롤 또는 웹 컨트롤은? –

+0

복합 사용자 정의 컨트롤. 이 작업을 수행하는 방법을 알고 싶지만 jQuery의 자동 완성으로 전환하여 결국 동적으로 생성 된 텍스트 상자를 구현하는 데 2 ​​시간이 걸렸습니다. – Ripside

답변

0

이 나를 위해 노력하고 있습니다 :

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); 
      } 
     } 
    } 
} 
+0

감사합니다. 다시 방문 할 수도 있습니다. 다른 솔루션으로 옮겼더라도 문제가있는 것처럼 대답하는 것이 좋습니다. 당신의 모습은 제가 한 것과 매우 흡사합니다. – Ripside

관련 문제