2009-05-12 7 views
0

Ich habe ein Problem, das macht mich wirklich dumm. Ich habe ein benutzerdefiniertes Steuerelement, das Textfeld erbt. Dieses Textfeld (zumindest für dieses Beispiel) enthält einfach eine .js-Datei, die in die DLL eingebettet ist.RegisterClientScriptResource + AJAX-Update-Panel

Lange Rede kurzer Sinn, funktioniert gut, wenn nicht in einem AJAX-Update-Panel. Also habe ich etwas recherchiert und festgestellt, dass ich anstelle von: Page.ClientScript.RegisterClientScriptResource ScriptManger.RegisterClientScriptResource verwenden sollte - ich habe dies in der Overdrive Render Methode gemacht, aber das Javascript feuert immer noch nicht.

Wer weiß, was ich falsch mache?

Beispiel: Ich habe einen Ordner in meinem Projekt Scripts genannt - es enthält MyScript.js Meine Assembly genannt wird Jim.Bob.Controls

ich hinzufügen Attribute meiner Kontrollen, dh: Attributes.Add ("Onclick "," Test2(); ");

Im Aufschalten Render:

ScriptManager.RegisterClientScriptResource(this.Page, typeof(CustomTextBox), "Jim.Bob.Controls.Scripts.myscript.js"); 

Doch ich immer noch 'Objekt erwartet' Fehler.

Ich brauche meine Textbox mit und ohne AJAX zu arbeiten. Ich importierte System.Web.Extensions in mein Projekt, um auf ScriptManger zuzugreifen

Kann mir bitte jemand sagen, was ich falsch mache? diese ganze Sache funktionierte wieder, fein w/o AJAX, i notwendigen Dinge in die AssemblyInfo.cs gesetzt haben (WebResource: ,,,, etc.)

Vielen Dank im Voraus :-)

--- UPDATE --- Ich habe die Steuerung zurückgesetzt, es in einem nicht AJAX-Web versucht und ich habe das gleiche Problem. Nicht sicher, warum ich ein Problem habe, ich habe ein anderes benutzerdefiniertes Steuerelement in der gleichen Assembly, die gerade funktioniert - lassen Sie sie genau die gleiche Weise einrichten, nur der Unterschied ist derjenige, der WebControl erbt, das nicht erbt TextBox ... in dem, der funktioniert ememit HTML wie gehe und es tun Wo der, der nicht funktioniert, ich habe Attribute.Add ("onclick", "CustomFunction();");

Auch, wenn ich Attribute.Add ("onclick", "alert ('hallo');"); es funktioniert gut.

Entschuldigung für solch eine lange Post.

Antwort

1

Versuchen Sie, this statt this.Page zu übergeben. Der ScriptManager würde Skripte nur für Steuerelemente ausgeben, die gerade aktualisiert werden (untergeordnete Elemente von UpdatePanel).

Ich habe gerade bemerkt, dass Sie dies während Render tun. Das ist zu spät. Probieren Sie stattdessen PreRender aus.

+0

Ich habe das auch versucht, gleiche Ergebnisse. Danke für Ihre Antwort :-) – schmoopy