Nach Portierung von ASP.NET 2 auf 4.0 funktioniert Rücksprung in die zugewiesenen c# Function nach Javascript aufruf nicht mehr



  • Hallo zusammen,

    Beim Löschen eines Datensatzes wird vor dem Aufruf der Lösch-Function aus der Code-Seite,
    ein Warnhinweis über Javascript aufgerufen. Dieses Javascript setzt ein hidden html-input feld.
    Das Javascript Fenster wird auch angezeigt. Nur beim Rücksprung in den Code hat das System
    die für den Form-Link hinterlegte Function im Code-Teil vergessen, und es wird einfach wieder
    die "Page_Load()" Function aufgerufen.
    Der Aufruf erfolgt über einen "Löschen"-Button.

    Hier die Definition des Buttons:

    <asp:Button ID="Bn_Delete" runat="server" Text="Löschen" OnClick="Bn_Delete_Click" OnClientClick="deleteCondition()" /><br />
    
    

    Hier noch das Javascript:

            function getMessage() 
            {     
    	        var ans; 
    	        ans=window.confirm('Möchten Sie diesen Kunden wirlich löschen?'); 
    	        //alert (ans); 
            	
    	        if (ans==true) 
    	        { 
    		        //alert('Yes'); 
    		        document.aspnetForm.hdnbox.value='Yes';         		
    	        } 
    	        else 
    	        { 	
    		        //alert('No'); 
    		        document.aspnetForm.hdnbox.value='No';
    	        } 
            } 
    
    

    Wie muss ich das gestalten, damit nach dem Javascript die dort ebenfalls
    aufgeführte "Bn_Delete_Click" Function aufgerufen wird?

    Danke und Grüsse
    Helmut



  • Das JavaScript hat einen anderen Namen als oben in OnClientClick angegeben - evtl. die falsche Funktion hinterlegt?



  • @elmut19 sagte in Nach Portierung von ASP.NET 2 auf 4.0 funktioniert Rücksprung in die zugewiesenen c# Function nach Javascript Aufruf nicht mehr:

    deleteCondition()

    Sorry! ... Und danke für die Antwort.

    Ich habe die Function verwechselt. Bin in die falsche Zeile gekommen, da es mehrere dieser Functions gibt.

    Aber die gewünschte Function existiert natürlich. Und alle gleichartigen haben das selbe Problem.
    Sie werden auch aufgerufen. Früher hat alles funktioniert, unter .net 2.0.
    Aber die Wert-Übergabe funktioniert nun nicht mehr.

    Interessant wäre es zu wissen, warum nicht.

    Inzwischen habe ich rum experimentiert.
    Statt den Wert in ein verstecktes "input" Feld zu schreiben, gebe ich nun direkt ein true oder false aus dem Javascript zurück.
    (das habe ich so übernommen, und der Umweg über ein "input" Feld ist eigentlich viel zu umständlich)
    Hierdurch kann ich die Rückgabe nun auswerten.

    Aber wenn irgend jemand weiss, warum sich unter .net 4.0 so vieles anders verhält,
    wäre mir auch noch geholfen.



  • Hmm, laut Doku ist es eigentlich immer noch so, dass wenn du nicht explizit false zurückgibst, der PostBack durchgeführt wird. Leider ist mein .NET-Wissen nicht tiefgehend genug um deine Frage besser zu beantworten. Werde mich daher ausklinken.

    Ansonsten kann ich dir nur https://stackoverflow.com/questions/3792390/asp-net-2-0-to-4-0 empfehlen bzw. das dort verlinkte Dokument https://docs.microsoft.com/en-us/aspnet/whitepapers/aspnet4/breaking-changes

    MfG SideWinder



  • @SideWinder
    Hallo SideWinder,
    Vielen Dank für Deine Antwort.

    Ich habe etwas damit rumprobiert.
    Es ist wohl wichtig, dass das Javascript einen Wert zurückgibt.
    Es war dabei aber egal, ob true oder false. Das Flag fürs löschen steht ja in einem hidden input.
    In der Page_Load() wird der "PostBack" erkannt.

    Indem ich das Javascript ein "return true" oder "false". zurückgeben lasse, funktioniert das Löschen wieder.

    Also hierfür schon mal vielen Dank. (Nachtrag 5 Tage später: Nein, das war nicht der Grund)
    Und danke für den Link.

    Es taucht nur noch der nächste Fehler auf, der in meinem anderen Thread beschrieben ist.
    Das mit dem GridView, der plötzlich in den Editier-Modus geht.
    Eigentlich ist dafür ein im aspx eingesetztes Panel zuständig, das nach dem Löschen aber wieder ausgeblendet wird.

    Aber dieser Thread ist damit ja beantwortet..
    Grüsse
    Helmut



  • Inzwischen bin ich etwas klüger geworden.
    Musste dazu eben nochmal 20 oder 30 Stunden investieren.
    Dabei hat mir dann mein anderer Thread mit dem DatePicker geholfen.

    Also leider keine Hilfe von euch.
    Ich habs selber raus bekommen, mit Hilfe von
    https://weblogs.asp.net/scottgu/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series
    und etwas durch die Beiträge im anderen Thread.

    Ich habe folgende Anpassungen gemacht.
    In der web.config:

        <pages clientIDMode="Static">
    

    In der page.master:

            function deleteCondition()
            {
                var ans; 
    	        ans=window.confirm('Möchten Sie diesen Zustand wirlich löschen?'); 
            	
    	        if (ans==true) 
    	        { 
                    document.getElementById('hdnbox').value = 'Yes'; 
    	        } 
    	        else 
    	        { 	
                    document.getElementById('hdnbox').value = 'Yes'; 
    	        } 
                return false;
            }
    ```Also über "getElementById"
    
    Aber vielen Dank an alle.


  • Dieser Beitrag wurde gelöscht!

Anmelden zum Antworten