Frage

Gibt es ein Client-Ereignis, das ich für verwenden kann, wenn die Daten eine Dropdownlist wurde auf die Steuerung geladen / gebunden? Ich brauche Ereignis auf ihrer Seite auszulösen, wenn dies geschieht.


Im Grunde versuche ich, die Kontrollen zu sperren, während die Daten geladen werden, als ob es eine Verlangsamung (nicht selten) ist ein Benutzer starten kann die Eingabe von Daten und dann den Fokus verlieren, wenn sie die Eingabe sind.

Ich habe versucht, dies zu tun in den Tags, aber die Methoden angezeigt scheinen arbeiten nach dem ersten Postback zu stoppen! (Alle es Hilfe würde sehr geschätzt werden). Zur Umgehung des Problems versucht Anbringen ich die Ereignisse an den Elementen selbst und während dies für die Verriegelung funktioniert, das onchange Ereignis mit, ich bin nicht in der Lage zu entsperren auf die Daten erfolgreich geladen!

Irgendwelche Ideen? Danke für die Antworten so weit :)

War es hilfreich?

Lösung

Da die Daten auf der Server-Seite gebunden sein, Sie haben nicht ein clientseitige Ereignis für diesen speziellen Fall jedoch ein die Seite gerendert wird, werden die Daten dort, so dass Sie Ihren Client ausführen möchten Skript im document.load Ereignisse oder mit so etwas wie document.ready Veranstaltung jQuery. Das löst das Skript einmal die Seite auszuführen (einschließlich Ihrer gebundenen Drop-down) ist fertig geladen.

Andere Tipps

Jason ist hier richtig, dass Sie nicht „benachrichtigen“, um den Client, wenn ein solches Ereignis eintritt. Eine Sache, die Sie tun können, ist rufen Sie die Page.RegisterStartupScript () -Methode etwas mit JavaScript zu tun, wenn die Seite geladen ist beendet (und vermutlich, dass die Post zurück, die Ihre Datenbindung getan hat aufgetreten ist). Wir setzen voraus, dass Sie etwas auf der Client-Seite tun wollen, sobald die Bindung der Daten abgeschlossen ist, wie auf Server-Seite gegenüber.

Sind Sie in der Lage ASP.NET AJAX in Ihrer Anwendung zu benutzen? Wenn ja, können Sie das ausgewählte Ereignis haben einen modalen Dialog öffnen, in dem Sie Ihre „Verarbeitung“ Text anzeigen kann, während Sie die Dropdown-Liste bevölkern. Auf diese Weise hat der Benutzer keinen Zugriff auf andere Steuerelemente und Sie können tun, was Sie ohne Sorge brauchen.

Ich verwende den folgenden Code in meinen Masterseite für meine Websites. Dies hält den Benutzer versucht, eine Kontrolle vor seinem vollständig gebunden zu verwenden. Ich habe festgestellt, dass, wenn eine Kontrolle nicht vollständig (langsame Verbindungen) gebunden worden ist, dann wird die Seite sprengt.

Im Wesentlichen hijacks das Skript die Post zurück, wenn diese Seite nicht erfolgt. So dass der Benutzer nicht, etwas zu tun, bis die Seite Verarbeitung beendet hat. Ich schrieb vor einem Jahr diese und sein in sehr praktisch.

  1. zuerst den onload Body-Tag setdopostback ()

  2. Fügen Sie diese in einem Scrip Block im Körper.

        var boolDoPostBack = false;
    
        if (__doPostBack)
        {
           // save a reference to the original __doPostBack
           var __oldDoPostBack = __doPostBack;
    
          //replace __doPostBack with another function
          __doPostBack = AlwaysFireBeforeFormSubmit;
        }
        function setdopostback()
        {
            boolDoPostBack = true;
        }
        function AlwaysFireBeforeFormSubmit (eventTarget, eventArgument)
        {
            var x= document.readyState
    
            if (x != "complete")
            {
                if (x == "loading" || x == "interactive" || x == "unitialized" || x == "loaded")
                { 
                    //do nothing with IE postback
                }
                else if (!boolDoPostBack)
                {
                    //do nothing with FireFox postback
                }
                else
                {
                    //alert('Allow Postback 1');
                    return __oldDoPostBack (eventTarget, eventArgument);
                }
            }
            else
            {
                //alert('Allow Postback 2');
                return __oldDoPostBack (eventTarget, eventArgument);
            }       
        }
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top