Laden...

[gelöst] ASP.NET Sharepoint2010 Webpart - Execute Javascript nach Aufbau des Webparts

Erstellt von Birne vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.351 Views
B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 12 Jahren
[gelöst] ASP.NET Sharepoint2010 Webpart - Execute Javascript nach Aufbau des Webparts

Hallo Community,

ich habe ein problem mit meinem Sharepoint2010 Webpart, geschrieben in ASP.NET.

Ich möchte ein Javascript ausführen, welches ich zuvor im Webpart in dessen Init-Methode definiert habe.
Allerdings nachdem das Webpart komplett konstruiert ist, also Render durchlaufen hat.

Wie erreiche ich dieses Ziel ?
Vielen Dank für eure Hilfe.

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo Birne,

du könntest das z.B. mit jQuery machen. Hier findest du Beispiele dazu.

B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 12 Jahren

Vielen Dank !

Ich weiss es ist jetzt nicht mehr State Of the Art aber gibt es auch eine reine Ajax Solution, so dass ich die jQuery lib nicht beipacken muss ? :S

Im Notfall täte es aber auch die jQuery lib, ist nur unschön :S

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo Birne,

ich kenne mich mit Ajax leider nicht so gut aus, aber ich habe schon oft gehört, dass es möglich ist, Ajax in WebParts zu integrieren. Ich glaube du musst aber ein paar Änderungen an der Web.Config machen. Sicher bin ich mir da aber nicht.

B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 12 Jahren

Danke für die Info.

ich ahbe nun dochj die jQuery lib beugepackt, allerdings habe ich ein Problem bzgl des Caches.

Rufe ich meine Seite, in dem Rahmen also auch den WebPart, das erste mal auf, bekomme ich die Höhe von diesem (durch das Javascript) - Die Seite ist noch nicht im cache.

Nachdem die Seite im Cache ist, bekomme ich stets nur noch die Höhe des sichtbaren Bereichs im Broswer.

Weiss darüber jemand etwas ?
Danke

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo Birne,

ich glaube jetzt wird mir so langsam klar, was du vor hast.
Hast du zufällig eine normale ASPX-Page über das "Seiten-Viewer"-Webpart eingebunden? Oder warum möchtest du die Höhe ermitteln?

Das Seiten-Viewer-Webpart passt seine Höhe soweit ich weiß nicht automatisch an den Inhalt an. Wenn du ein Webpart erstellen möchtest, dann nimm besser die Visual Studio Vorlage "Visual WebPart" oder "Web Part".

Was ist ein Visual Web Part und wo liegt der Unterschied zum klassischen Web Part?
in einem Visual Web Part hast du den Designer zur Verfügung. D.h. du kannst die benötigten Controls direkt auf das UserControl ziehen. ABER: Visual Web Parts werden automatisch im GAC abgelegt. Dadurch brauchst du zwar keine CAS Policy, aber du umgehst somit auch das Berechtigungskonzept von SharePoint. Visual WebParts können somit also auch nicht in Sandboxed Solutions verwendet werden.

Edit:
Scheinbar ist es mit dieser Erweiterung sogar möglich, "Sandboxed Visual Web Parts" zu erstellen. Getestet habe ich das aber noch nicht.

B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 12 Jahren

Hallo felix,

vielen vielen Dank für deine hilfe.
Ich habe, wie du empfohlen hats, die jQuery ready Methode genutzt um zu determinieren ob das DOM aufgebaut ist.

Hintergrund war folgender.
Es existiert eine Sharepoint Website mit nur einem Webpart. Diese Seite, welche nur das Webpart und auch sonst keine Elemente wie Navigation oder ähnliches enthält (modifizierte Masterfile), wird als IFrame in eine andere Webseite eingebunden.

Das stellte mich vor das Problem von CrossiteScripting. ich konnte die Höhe des Contents des IFrames nicht ermitteln.

Um dieses Problem zu lösen, habe ich eine extra Seite der Domain in meinem Webpart geframed und diesem die Höhe meines Webparts (dynamischer Content) via URL zugeteilt. Dieses IFrame konnte dann wiederrum auf der anderen WebSite ausgelesen werden und somit konnte der IFrame via Javascript in der Höhe passgenau definiert werden.

Es handelt sich btw. bereits wie du schon erwähntest um ein Visual Webpart.

Das ursprüngliche Problem betrachte ich als gelöst.

Danke an Felix.

Lösung: jQuery Ready() Function
Die Höhe via OffsetTop vom letzten Element bestimmt.