2009-06-29 14 views
1

Ich erstelle ein benutzerdefiniertes ASP.NET AJAX-Serversteuerelement, in dem mehrere Instanzen des Steuerelements auf der Seite platziert werden können. Diese Steuerung umschließt JavaScript-Objekte, für die ich Zugriff auf diese Objekte für jedes einzelne Steuerelement benötige. Zum Beispiel könnte das JavaScript-Objekt eine Eigenschaft namens "x" haben, und control1 könnte x auf 5 setzen und control2 könnte x auf 10 setzen. Wie bekomme ich Zugriff auf die JavaScript-Objekte jedes einzelnen Steuerelements? Hier ist ein bisschen ein Code-Schnipsel, die helfen könnten:Zugriff auf JavaScript-Eigenschaften in benutzerdefiniertem ASP.NET AJAX-Serversteuerelement

HTML

<CustomControl:MyControl ID="MyControl1" runat="server" x="5"/> 
    <CustomControl:MyControl ID="MyControl2" runat="server" x="10"/> 

JavaScript

alert(MyControl1.x); //result 5 
alert(MyControl2.x); //result 10 
+0

Könnten Sie klarstellen, was Sie mit "Zugriff auf die JavaScript-Objekte jedes einzelnen Steuerelements" verstehen? Möchten Sie beispielsweise, dass ein einzelnes Skript über jedes umschlossene Objekt informiert ist? –

+0

Ich möchte die JavaScript-Eigenschaften für jedes Steuerelement aufrufen. MyControl1 wird für einzelne Eigenschaften andere Werte als MyControl2 haben, und ich muss auf die lokalen Eigenschaften jedes Steuerelements zugreifen, anstatt es in einen globalen Bereich zu legen. –

Antwort

1

Die von Chris vorgeschlagenen Artikel haben mich zur richtigen Lösung geführt. Um Zugriff auf die JavaScript-Eigenschaften eines benutzerdefinierten Steuerelements zu erhalten, müssen Sie die ScriptControl-Bibliothek verwenden, um die $ find-Funktion zum Suchen Ihres Steuerelements auszuführen. Zum Beispiel:

JavaScript in ASP.NET-Seite Implementierung Steuer

var ctrl1 = $find("<%=MyControl1.ClientID%>"); 
var ctrl2 = $find("<%=MyControl2.ClientID%>"); 

ctrl.set_x(5); 
alert(ctrl1.x); //result 5 

ctrl2.set_x(10); 
alert(ctrl2.x); //result 10 

JavaScript in Steuer

CustomControl.MyControl = function(element) { 
    CustomControl.MyControl.initializeBase (this, [element]); 

    this.x = null; 

} 

CustomControl.MyControl.prototype = { 
    set_x: function(value) { 
      this.x = value;  
    } 
} 

Hinweis: Ich bin nicht sicher von etiquitte für die Beantwortung Deine eigene Frage. Ich stimme Chris 'Antwort zu, dass er mir geholfen hat, zum richtigen Artikel zu kommen. Wenn es andere etiquiite Regeln gibt, bin ich glücklich zu verpflichten.

Verwandte Themen