Frage

Ich habe eine benutzerdefinierte Steuerelement mit Vorlagen (Toolbar), die eine benutzerdefinierte Usercontrol enthält (Button) Die Taste jquery Stil verwendet und verwaltet die Zustände / Postbacks / non = Postbacks etc.

Einige der Tasten sind mit einem Platzhalter verborgen und angezeigt werden, wenn eine der Tasten zu treffen.

Alle Tasten in Bezug jquery scheinen auf Postbacks (Ajax Stil innerhalb eines Update mit den Pagerequestmanagern) aber der Ansichtszustand verloren auf den Tasten durch den Platzhalter unsichtbar gemacht werden eingeleitet.

Es scheint ein Problem ist spezifisch für den Ansichtszustand und Tasten auf dem Platzhalter in der Templat-Kontrolle. Dies funktioniert in der Regel in einer nicht-Ajax-Umgebung, ich vermute, ich bin etwas fehlt.

Fragen oder Anregungen, die mich geschätzt erhalten denken.

Der Code wird in verschiedenen Teilen befinden und wahrscheinlich nicht wert Einfügen, da es vollständig getrennt wird (Ich weiß, das hilft nicht)

War es hilfreich?

Lösung

Ich glaube, ich brauche meine eigene Frage zu beantworten, hier:

Statt Platzhalter oder div-Tags mit CSS zu verwenden, wird Update entweder in einem div oder einer Spanne auf der Rendering-Option abhängig gemacht. In diesem Fall versteckt nur die div oder Spanne, die die Update schaffen anstatt zu versuchen, einen neuen Außenbehälter aus- / eingeblendet.

Andere Tipps

Wenn ich mich richtig erinnere, ASP.NET-Steuerelemente nicht beenden ihren Lebenszyklus, wenn sie sichtbar auf false gesetzt ist. Die Bedeutung, wie die Dinge Render () werden nicht genannt, und Viewstate muss eines dieser Dinge sein (was Sinn macht). Mit Update-Panels zusammen mit AJAX / Javascript ist auch eine wirklich heikle Sache, und nicht sehr gut funktionieren. Dies ist nur, wie ASP.NET-Steuerelemente und das Update-Panel zu arbeiten.

Mein Vorschlag ist es, entweder die Verwendung Update-Panels, oder Javascript verwenden, und nicht beide.

Sie können leicht emulieren, welche Update-Panels tun, indem Sie jQuerys $ .post / bekommen und einen Code-Abschnitt mit dem HTML-Ersatz zurückgegeben von einem Web-Service-Aufruf.

function myButtonClick(event){
    $.post("path/to/webservice", {data1: "data1"}, function(data, status){
        $("#myPanel").replaceWith(data);
    });
}

Sie werden schließlich in andere Fragen laufen, wenn Sie eine JS-Code angebracht, die über einen Update-Panel aktualisiert wird. Ex: Wenn Sie eine Liste der Elemente, die jeder haben JS mit ihnen verbunden, wie einer der ASP.NET AJAX Control Toolkit-Steuerelemente und Sie eine dieser von der Seite löschen Update Panel verwenden, verwendet die JS die Haken steuert bis werden nicht synchron sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top