Auch Microsoft stellt nun eine Reihe von Javsscript-Dateien über Ihr CDN (Content Delivery Network) zur Verfügung.
Damit lässt sich z.B. jQuery mit folgendem Link in einer HTML-Seite einbauen:
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
Eine komplette LIste der verfügbaren Dateien findet man unter http://www.asp.net/ajaxlibrary/cdn.ashx
395ce5aa-0eec-471c-90ad-46f8e8c64667|0|.0
Wenn man in einem datengebundenen Control (Repeater, Datagrid, ...) einen Radiobutton benutzt, der einen Gruppennamen hat, also innerhalb des Controls immer nur ein Button angewählt sein soll, bekommt man das Problem, dass asp.net dem RadioButton einen eindeutigen Namen gibt.
Damit wird, wenn ich eine neue Radiobox anwähle, die alte nicht deselektiert.
Mit diesem kleinen jQuery Script kann man die Funktion per Javascript wieder "nachbauen":
<script language="javascript" type="text/javascript">
//<![CDATA[
jQuery(document).ready(function() {
jQuery(":radio").change(function() {
var sel = this.id;
jQuery(":radio").each(function() {
if (sel != this.id) {
jQuery(this).removeAttr("checked");
}
});
});
});
//]]>
</script>
ff116b1c-7f70-4912-ad24-7cf2d9ab3667|0|.0
Mit dem .Net 3.5 SP1 ist eine neue sehr nützliche Funktion zum asp:ScriptManager hinzugekommen: Man kann nun automstisch die benötigten Javascript Dateien zusammenfügen lassen (incl. die für das Ajax Control Toolkit benötigten!)
Dazu müssen folgende Schritte durchgeführt werden:
- mit dem Script Reference Profiler auflisten, welche Dateien überhaupr benötigt werden:
- den Profiler von Codeplex herunterladen
- die DLL im Projekt als Referenz anlegen
- in der index.aspx ganz oben folgende Referenz einfügen:
<%@ Register Assembly="ScriptReferenceProfiler" Namespace="ScriptReferenceProfiler" TagPrefix="asp"
%>
- auf der Seite dann den Profiler anzeigen:
<asp:ScriptReferenceProfiler runat="server" />
- Nun können die benötigten Dateien zum asp:ScriptManager hinzugefügt werden:
<asp:ScriptManager ID="sm1" runat="server"
EnableScriptGlobalization="false"
EnableScriptLocalization="false"
LoadScriptsBeforeUI="false"
ScriptMode="Release" >
<CompositeScript ScriptMode="Release">
<Scripts>
<asp:ScriptReference name="MicrosoftAjax.js"/>
<asp:ScriptReference name="MicrosoftAjaxWebForms.js"/>
<asp:ScriptReference Path="~/Include/js/jquery-1.2.6.min.js" />
<asp:ScriptReference Path="~/Include/js/thickbox.31.de.js" />
<asp:ScriptReference Path="~/Include/js/jquery.tooltip.js" />
<asp:ScriptReference Path="~/Include/js/my.js" />
</Scripts>
</CompositeScript>
</asp:ScriptManager>
Damit werden alle benötigten Dateien "am Stück" geladen.
70aa8773-7702-4cb5-a089-8476b10a1247|0|.0
man kann per jQuery auch DOM Elemente mit bestimmten Attributen selektieren, was u.A. beim asp:DataPager sehr hilfreich ist:
jQuery("a[disabled=disabled]").addClass("dis");
Damit werden alle Objekte selektiert, die disabled=disabled als attribut haben, also z.B:
<a href="index.aspx"
disabled="disabled">zurück zur Seite</a>
dfe403b2-ab85-40f5-bfcd-92f32f3a7586|0|.0
Wer ein UpdatePanel in einem Master/Detail Scenario benutzt, also auf einer Listingseite ein Updatepanel um ein z.B. Gridview legt, dass dann auf eine Detailseite verlinkt, wird wahrscheinlich das Problem bekommen, dass dann auf der Detailseite bei einem Click auf den Broeser Back Button das Updatepanel nicht mehr funktioniert.
Das liegt daran, dass der Firefox etwas anders mit dem Caching umgeht, und die Javascript-Methoden, die das Updatepanel anstossen, nicht mehr startet.
Man kann das ganze "reparieren", indem man den Seiten einen
Response.Cache.SetNoStore()
gibt, und den Firefox damit zwingt, die seite "komplett neu" zu laden.
6f2c3fb3-e366-4eff-8bb9-3d698d5de094|0|.0
Mit folgendem Snippet werden innerhalb eines Update Panels alle Submitbuttons nach einem Click per JQuery deaktiviert, sobald ein Submitbutton gedrückt wurde:
function BeginRequest(sender, args) {
var panelID = sender._postBackSettings.panelID.split("|")[0];
$('#' + panelID + ' input[@type=submit]').attr('disabled', true);
}
function EndRequest(sender, args) {
var panelID = sender._postBackSettings.panelID.split("|")[0];
$('#' + panelID + ' input[@type=submit]').attr('disabled', false)
}
http://encosia.com/2008/03/04/why-my-aspnet-ajax-forms-are-never-submitted-twice/
23a24ddf-d6b3-41f3-8092-06c7843d7ac9|0|.0
Dazu habe ich auf Jon Galloway's Blog folgende recht Interessanten Links gefunden:
166544c9-9219-49e6-bf1c-e770f011e986|0|.0
Wenn ASP.Net Ajax benutzt wird, kann mit Sys.Debug.trace(text) kann im Javascript beliebige Objekte ausgeben lassen .
(ACHTUNG: Gross/Kleinschreibung beachten).
Diese landen entweder in einer Textbox mit id=TraceConsole oder im Firebug / Web Development Helper
Zusätzlich muss in der Web.Config <compilation debug="true"> angegeben sein, und der Scriptmanager muss ScriptMode="Inherit" haben.
Dann funktionieren folgende Aufrufe im Javascript:
Sys.Debug.trace(text);
Sys.Debug.traceDump(object, name);
Weitere Informationen gibt's auch hier:
http://weblogs.asp.net/romannikitin/archive/2007/11/22/sys-debug-in-asp-net-ajax-framework.aspx
9eb35988-5679-4ef0-bc65-ec828c5da40a|0|.0