SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Nach einem response.end geht nichts mehr

Geprüfte Antwort Dieser Beitrag hat 4 Antworten

Ohne Rang
17 Beiträge
sharepointkb erstellt 13 Apr. 2010 16:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe für SP Listen eine Custom Action entwickelt, der Listeninhalte auf eine bestimmte Art und Weise ausgibt (Schnittstelle). Dabei ruft die Custom Action eine Klasse aus. Das funktioniert auch wunderbar. Ich leite von einem WebControl ab und implementiere den IPostBackEventHandler, so dass beim Aufruf des Custom Menu Items das RaisePostBack Event ausgelöst wird. Wie gesagt bis hierhin funktioniert auch alles wunderbar. Das Problem nur ist, das nach dem ersten Klick zwar der Export gefahren wird und auch die Datei zum Download angeboten wird, nur wenn ich ein weitere Mal auf das Menüelement klicke reagiert er garnicht mehr. Auch kein Postback.

Als Test habe ich eine einfache page.response Ausgabe in den RaisPostBack Event eingebaut und siehe da, man kann mehrmals auf den Menuitem klicken und es wird auch mehrfach ausgeführt.

Es muss also am

HttpContext.Current.Response.End()

liegen. Ich habe keine Lösung dazu. Wie machen es andere denn? Hier mein Code:

 

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Utilities
Imports Microsoft.SharePoint.WebControls
Imports System.Collections.Specialized

Namespace CustomAction
    Public Class ListExport
        Inherits WebControl
        Implements IPostBackEventHandler

        Protected Overrides Sub CreateChildControls()
            Dim MenuItem As MenuItemTemplate = New MenuItemTemplate
            MenuItem.Text = "MyExport"
            MenuItem.ClientOnClickScript = ("__doPostBack('" & Me.UniqueID & "','%ITEM%')")
            Me.Controls.Add(MenuItem)
        End Sub

        Protected Overloads Overrides Sub OnLoad(ByVal e As EventArgs)
            Me.EnsureChildControls()
        End Sub

        Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements IPostBackEventHandler.RaisePostBackEvent
            Dim attachment As String = "attachment; filename=filetoexport.csv"
            HttpContext.Current.Response.Clear()
            HttpContext.Current.Response.ClearHeaders()
            HttpContext.Current.Response.ClearContent()
            HttpContext.Current.Response.AddHeader("content-disposition", attachment)
            HttpContext.Current.Response.ContentType = "text/csv"
            HttpContext.Current.Response.AddHeader("Pragma", "public")
            HttpContext.Current.Response.Write("This is a simple output.")
            HttpContext.Current.Response.End()
        End Sub
    End Class
End Namespace


                                

Alle Antworten

Ohne Rang
17 Beiträge
sharepointkb Als Antwort am 14 Apr. 2010 13:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hatte gehofft, dass das ein einfacheres Problem sei. Aber scheint doch ein wenig komplizierter zu sein :) Ich weiß keinen Rat mehr weiter. Ich google schon seit mehr als einer Woche nach einer Lösung, konnte aber bisher keine finden.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Apr. 2010 15:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich kann Dir auch keine Lösung bieten, nur die Feststellung, daß Du da an der Current-Response schraubst und daß das zwangsläufig zu Problemen führt. Versuche doch den Download irgendwie in ein neues Fenster umzuleiten (habe aber auch keine Ahnung wie).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 14 Apr. 2010 15:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das Problem kenne ich ;)

Schau mal hier: http://weblogs.asp.net/jan/archive/2007/09/05/using-the-current-page-url-in-the-urlaction-of-a-sharepoint-feature.aspx

Postback ist für solche Aktionen und ASP.Net irgendwie nicht möglich du musst per Javascript veranlassen das er ein neues Fenster öffnet (so wie Andi auch geschrieben hat) siehe den Link.

Ohne Rang
17 Beiträge
sharepointkb Als Antwort am 16 Apr. 2010 08:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe es gefunden. Hier die Lösung für das Problem :)

http://www.marten-online.com/sharepoint/ajax-second-postback-not-working-in-sharepoint-in-updatepanel.html

hier die ausführliche Erklärung.

http://blogs.msdn.com/sharepoint/archive/2007/03/02/integrating-asp-net-ajax-with-sharepoint.aspx

Trotzdem vielen Dank für eure Unterstützung.