Ich habe Sharepoint 2010 Visual Webpart in VisualStudio2010 mit drei Benutzersteuerelementen (ASCX) erstellt. Ich möchte Benutzersteuerung im Webpart dynamisch ändern, indem ich auf eine Schaltfläche bei der aktuell geladenen Benutzersteuerung klicke. Das Hauptproblem besteht in der Tatsache, dass das buttonClick-Ereignis erst nach der Ausführung der CreateChildControls-Methode behandelt wird (wobei ich versuche, die benötigte Benutzersteuerung mit ViewData zu erhalten). Könnte mir bitte jemand helfen, dieses Problem zu lösen?Sharepoint Webpart mit vielen Benutzersteuerelementen
Antwort
Ein Weg, dies zu tun, die Taste rufen Sie eine JavaScript-Funktion haben wäre, dass wiederum ruft die folgenden:
__doPostBack('LoadControl', 'ControlName');
Anschließend können Sie verwenden, um die Server-Variablen __EVENTTARGET und __EVENTARGUMENT um herauszufinden, welche innerhalb laden steuern Ihre CreateChildControls-Ereignisbehandlungsroutine.
Lee's Antwort ist grundsätzlich richtig und kann gut für Sie arbeiten. Sie sollten jedoch nicht einfach __doPostBack
verwenden und darauf vertrauen, dass es immer "magisch" für Sie da sein wird. Diese Methode und die von Lee erwähnten Variablen sind ASP.NET-intern und sie sind nicht für die direkte Verwendung vorgesehen. Wenn Sie kein Postback-Steuerelement auf Ihrer Seite platzieren, wird diese Methode außerdem nicht generiert und Ihr Code, der es aufruft, würde fehlschlagen.
Zum Glück ist der Code, um ein generisches Postback zu verursachen und zu handhaben, sehr einfach. Stattdessen integrierte Ereignishandler der Eingabe der Verwendung von Kontrollen (die, bevor sie ausgelöst werden aufgebaut müssen - daher der Aufruf CreateChildControls
vor Ihrem Handler genannt wird) würden Sie die Postback an den Web-Part-Ziel selbst:
public class MyWebPart : WebPart, IPostBackEventHandler {
protected override void CreateChildControls() {
Control clickable = ...; // Create a clickable control.
// Get JavaScript expression to send postback "test" to "this" web part.
var postBack = Page.ClientScript.GetPostBackEventReference(this, "test");
clickable.Attributes["onclick"] = postBack + "; return false";
Controls.Add(clickable);
}
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) {
if (eventArgument == "test") { // Recognize and handle our postback.
...
}
}
}
Die GetPostBackEventReference
generiert den notwendigen JavaScript-Ausdruck für Sie. (Und tatsächlich, rufen Sie einfach die __doPostBack
"magisch" auf der Seite erscheinen.) Die RaisePostBackEvent
wird zwischen OnLoad
und OnPreRender
aufgerufen werden. Stellen Sie sicher, dass davor keine untergeordneten Steuerelemente erstellt werden (z. B. durch Aufrufen von EnsureChildControls
oder auf andere Weise). Wenn Sie mehrere Postback-Steuerelemente benötigen, können Sie unter dem Parameter eventArguments
zwischen ihnen unterscheiden.
Sie benötigen die Postback-Trigger in Ihren Benutzersteuerelementen und nicht direkt im Webpart. Ich habe es im Webpart gezeigt, um es einfach zu halten. Sie können das Ergebnis GetPostBackEventReference
in ein beliebiges Steuerelement einfügen, vorausgesetzt, Sie verwenden beim Aufruf die richtigen Seiten- und Webpart-Instanzen.
--- Ferda
ich auch dieses Problem hatte.
Fügen Sie diese auf der Event-Handler (nach dem Code innerhalb der Handler ausgeführt wird)
this.Page.Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri, true);
Grüße,
Pedro
- 1. SharePoint-Webpart und ASP.NET-Webpart
- 2. SharePoint 2010 Webpart
- 3. Sharepoint WebPart nicht installiert
- 4. SharePoint-Inhaltsabfrage-Webpart
- 5. Aktualisierung dll von Sharepoint Webpart
- 6. Textfeld mit mehreren Zeilen im Webpart "Sharepoint"
- 7. Sharepoint Kalender Listenansicht Webpart mit Filter verbunden
- 8. Sharepoint Client Web Webpart mit Google Chrome
- 9. sharepoint webpart mit caml und xslt
- 10. Sharepoint-Webpart-Eigenschaften/Rich-Textfeld?
- 11. SharePoint-Domänen und Inhaltsabfrage-Webpart
- 12. Outlook-Termin von Sharepoint-Webpart
- 13. SharePoint Inhaltsverzeichnis Webpart und Export/Import
- 14. Webpart lädt sehr langsam im Sharepoint 2007
- 15. Sharepoint - anschließbarer Empfang, XSLT editierbares Webpart?
- 16. ASP.NET-Steuerelement zum SharePoint-Webpart hinzufügen
- 17. Sharepoint 2010 Veröffentlichungssite benutzerdefiniertes Seitenlayout webpart zone
- 18. Silverlight Sharepoint 2010 Webpart Windows-Authentifizierung
- 19. Sharepoint 2010 und Silverlight Webpart SL Version
- 20. Konfigurieren von Outlook-Webpart in Sharepoint 2007
- 21. Async-Thread stirbt in SharePoint-Webpart
- 22. Sharepoint webpart und overiding der CSS-Stil
- 23. Best Practice: Sharepoint 2010 WebPart Entwicklung debuggen
- 24. Sharepoint find wo Webpart verwendet wird
- 25. Sharepoint: Kommunikation zwischen WebPart und silverlight control
- 26. Validate Sharepoint 2007 Webpart-Formularfeld in C#
- 27. JQuery-Datatables in einem SharePoint-Webpart
- 28. Wie deaktiviere ich ein SharePoint-Webpart vorübergehend?
- 29. Programmatische Instanziierung einer Webpart-Seite in Sharepoint
- 30. WCF-Dienst von SharePoint Webpart konsumieren