none
Weiterleitung an eine andere Seite nach Erstellung eines Listenelements

    שאלה

  • Hallo zusammen,

    ich habe eine Liste bei der nach der Erstellung eines Listeneintrags ein Workflow los läuft. Der Listeneintrag wird über einen Content Type erstellt. Der Workflow füllt u.A. die Spalten, die in der Standardview benötigt werden. Springt SharePoint direkt nach dem Erstellen des Elements auf die Liste, so ist nur eine leere Zeile ohne Einträge zu sehen, da der Workflow die Spalten noch nicht befüllt hat wodurch die User verwirrt werden. Daher möchte ich nicht, dass nach dem erstellen des Listeneintrags zurück zu der Liste gesprungen wird, sondern auf eine Application Page mit einer Meldung. Diese Application Page ist schon vorhanden und funktioniert wunderbar.

    Daher die Frage: Wie bekomme ich eine direkte Umleitung auf diese Application Page in SharePoint 2010 nach dem Erstellen eines Listeneintrags hin?

    Viele Dank schon im voraus für hilfreiche Antworten.

    Viele Grüße

    Simon

    יום רביעי 07 מרץ 2012 12:58

תשובות

  • Hallo zusammen,

    leider habe ich es erst jetzt geschafft mich mit dem Problem zu beschäftigen. Meine Hoffnung war, dass es eine einfache Konfiguration an der Liste im Frontend gibt. Da dies wohl nicht der Fall ist habe ich mich mal an die Lösung in der Programmierung gemacht.

    Vom Gefühl hätte ich gesagt, es muss ein synchrones Event sein, weshalb ich es mit ItemAdded nicht versucht habe. Stattdessen habe ich das ItemAdding Event genommen. Das Problem fing schon damit an den HttpContext zu bekommen. Glücklicherweise habe ich folgenden Post gefunden:

    http://blogs.msdn.com/b/sowmyancs/archive/2008/03/25/can-we-get-the-httpcontext-in-custom-event-handlers-in-sharepoint.aspx

    Dort hat sich auch die Vermutung bestätigt, dass asynchrone Events nicht funktionieren. Was auch indirekt aus dem Artikel zu lesen ist, ist dass Response.Redirect nicht so glücklich an dieser Stelle ist. Glücklicherweise bietet der SharePoint an dieser Stelle auch eine eigene Methode: SPUtility.Redirect.

    In Code ausgedrückt:

    pubilc class RedirectReceiver : SPItemEventReceiver
    {
    private HttpContext current = null;
    public RedirectReceiver() : base()
    {
    //get HttpContext from base
    current = HttpContext.Current;
    }
    public override void ItemAdding(SPItemEventProperties properties)
    {
    //Do something
    //Redirect
    SPUtility.Redirect("http://someurl.com", SPRedirectFlags.Trusted, current);
    }
    }

    Ich hoffe das hilft allen weiter, die ein ähnliches Problem haben.

    Viele Grüße

    Simon

    • סומן כתשובה על-ידי SimonIw יום שלישי 03 אפריל 2012 11:27
    יום שלישי 03 אפריל 2012 11:26
  • Noch ein Nachtrag:

    Leider bricht auch SPUtility den Thread ab, wodurch das Item nie erstellt wird. Die Lösung habe ich in folgendem Blog gefunden:

    http://www.entwicklungsgedanken.de/2008/03/27/redirecting-from-newformaspx-to-dispformaspx-after-creating-a-new-item/

    Man muss das Item manuell hinzufügen.

    Achtung: In Sharepoint 2010 sollte EventFiringEnabled = false / true anstatt EnableEventFiring () oder DisableEventFiring () verwendet werden.

    • סומן כתשובה על-ידי SimonIw יום שלישי 03 אפריל 2012 13:58
    יום שלישי 03 אפריל 2012 13:57

כל התגובות