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
Wenn man ein ASP.Net Updatepanel dazu bewegen will, nach einem Refresh auch noch ein eigenes Javascript aufzurufen, so muss man (ausserhalb des <UpdatePanel>) folgenden Codeblock einfügen:
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args){
Sys.Debug.trace("updated");
}
//]]>
</script>
Wenn sich mehrere Updatepanels auf der Seite gefinden, muss as entsprechende mit einem endRequest versehen werden.
7c71ceeb-c560-4355-a1fc-0273005d6f34|0|.0
Der .Net Framework 3.5 bringt als ein neues Control das ListView mit. Damit kann man nun endlich XHTML Konform mit Daten umgehen, ohne sich um so lästige Sachen wie Paging oder Sorting kümmern zu müssen.
http://basgun.wordpress.com/2007/12/27/listview-control-in-aspnet-35-1/
ist eine sehr gute Dokumentation, die schrittweise ein ListView aufbaut.
Wenn man dann noch eine ObjectDatasource als Datenquelle benutzt, und diese mit einer Datatable füttert ist das ganze auch mit minimalem Code machbar.
Zusätzlich kann man das ganze in ein UpdatePanel packen und hat eine Ajax-Version. Wenn man dann noch darauf achtet, anstatt der LinkButtons normale Buttons zu benutzen, funktioniert das ganze auch, wenn der Browser das Javascript deaktiviert hat.
und nun: use the ListView !
2b788c98-a5c2-4dae-855c-21fc17b870f8|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
Für den täglichen Programmieralltag habe ich ein paar praktische Spickzettel zusammengetragen:
Viel Spass damit !
24309d00-f770-4e3d-8653-639c348d91fc|0|.0