2009-06-08 7 views
4

Ich habe ein Problem mit jquery nicht in einem ASP-Benutzer Steuerelement geladen.Jquery Benutzerkontrolle

Ich möchte einfach das Click-Ereignis hinzufügen, wenn ein Kontrollkästchen angeklickt wird.

Hier ist meine Javascript-Datei

$(document).ready(function() { 
    var arr = jQuery(":checkbox[id*='drpAccountType']"); 
    for (i = 0; i < arr.length; i += 1) { 
     $("#" + arr[i].id).click(function() { alert(this.id) }); 
    } 
}); 
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

Die Benutzerkontrolle vor Ereignisse machen:

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 
     ScriptManager.RegisterClientScriptInclude(Me, Me.GetType, "CheckboxdropdownScript", ResolveUrl("~/Scripts/CheckBoxDropDown.js")) 
End Sub 

das Skript geladene feine aber jede Verwendung von jQuery undefined zurück. Nur dann, wenn die Seite geladen ist, kann ich den gleichen Code für die Befehlszeile in Firebug ausführen. Die jquery-Bibliothek wird in die Masterseite geladen.

Immer wenn ich jquery in einem ASP-Benutzersteuerelement verwende, finde ich immer Probleme, und ich muss immer herumhacken, um es zum Laufen zu bringen. Ich versuche alle Einträge in stackoverflow, aber ich habe nie eine als allgemeine Lösung gefunden.

hat jemand eine einfache Lösung gefunden, um jquery mit Masterseiten zu verwenden, Benutzersteuerung in asp.net Ich würde mich freuen, wenn jemand so wertvolle Informationen teilen kann.

Mein Manager ist dabei, jquery aus der Anwendung zu entfernen, da wir immer viel Zeit in Anspruch nehmen, nur um einen Workaround zu finden, damit es mit den Benutzersteuerelementen funktioniert.

Bitte helfen, ich mag jquery und ich möchte es wirklich für Client-Skript verwenden.

freundlichen Grüßen

Antwort

5

Ihr Skript vor der jQuery-Bibliothek in die Seite eingefügt werden können bekommen. (Sie können dies überprüfen, indem Sie die HTML-Ausgabe Ihrer Seite überprüfen.)

Wenn Skriptdateien JS inline ausführen, und insbesondere wenn JS von anderen Bibliotheken abhängt, ist es am sichersten, RegisterStartupScript statt RegisterClientScriptInclude zu verwenden. Wenn Sie this overload of RegisterStartupScript verwenden, können Sie eine Referenz auf dieselbe externe JS-Datei erstellen, und sie wird an der richtigen Stelle ausgeführt.

Als Alternative könnten Sie <asp:ScriptReference/> Tags in einem ScriptManagerProxy in Ihrem Benutzersteuerelement verwenden, anstatt das Skript in Page_Load oder Pageinit zu registrieren; Meiner Erfahrung nach werden diese Skripts nach Skripten von der Masterseite hinzugefügt.

+0

Beat mich dazu;) –

+0

Ich vermeide RegisterStartupScript, einfach weil ich das Skript mit String-Builder erstellen muss, wenn das Skript groß ist, wird es hässlich und schwer zu pflegen. – Youssef

+1

sollten Sie in der Lage sein, die Überladung von 'RegisterStartupScript' unter http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx zu verwenden, um einen Verweis auf eine JS-Datei zu generieren. Muss kein Inline-Skript sein! –

1

dies hier nicht gerade eine direkte Antwort, aber sind einige Steuerelemente jQuery ASP.net, die helfen könnten: (. Für das Bit über Rückrufe suchen)

http://clipperhouse.com/jQuery/

, können Sie auch nicht die "for" -Schleife, wenn Sie einfach alle Ihre Checkboxen einen Klassennamen geben und diesen als Selektor verwenden.

Verwandte Themen