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.




Workflow soll aktuelle Ansicht der Elemente steuern

Dieser Beitrag hat 6 Antworten

Ohne Rang
3 Beiträge
EyesOnly erstellt 3 Aug. 2012 09:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

 

ich bin gerade dabei im Sharepoint eine e-Lerning Plattform auf zu bauen und stehe vor dem Problem, dass ich auf insgesamt 10 seiten einen Forum Webpart eingebuden habe, welches jedesmal auf eine Liste "Forum" zeigt.

Jetzt möchte ich, dass auf Seite 1 jeweils nur die Betrage die über Seite 1 hinzugefügt wurden angezeigt werden, Seite 2 jeweils nur die betrage die über Seite 2 Hinzugefügt wurden, usw. (Für jede Seite eine Liste anlegen ist keine Lösung)

Das ganze über Auswahl(Metadaten) für den Anwender zu machen ist hier nur bedingt eine Lösung. Der Anwender soll hierzu keine Auswahl haben.

Ich bin bislang jedesmal nur auf den Hinweis gestoßen, dass dies nur über einen Workflow beim Elemente Anlegen geht. Aber Wie???

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 Aug. 2012 10:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich sehe da nur eine einzige Möglichkeit: lege für jede Seite einen eigenen Inhaltstyp an (sie können alle identisch sein) und gib den Benutzern dort jeweils einen Link zur Neuanlage, der den entsprechenden Inhaltstyp vorbelegt. Die Benutzer dürfen dann aber nur diesen Link benutzen. Die Ansichten kannst Du dann alle passend filtern.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
3 Beiträge
EyesOnly Als Antwort am 3 Aug. 2012 13:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich konnte eine Möglichkeit finden, ganz Ohne Workflow.

Einfach nur 3 zeile Code in das  "NewForm.aspx" Formular mit rein und fertig.

Hier der Code wer Ihn vllt auch noch benötigt.

 

1) You can retrieve the name of the site from data in the master page (assuming the master page has not be too heavily modified)

var SiteName = document.getElementById("ctl00_PlaceHolderSiteName_onetidProjectPropertyTitle").innerText;

1) Add the Site Name column to your list

2) Click New to add a new item (display the NewForm.aspx page), right-click View Source and then search for your column (Site Name) and note the ID="" value. (mine was "ctl00_m_g_94a01375_632d_4e89_825a_bd87120d718d_ctl00_ctl05_ctl09_ctl00_ctl00_ctl04_ctl00_ctl00_TextField")

You could also loop through all of the <INPUT> tags and find the one with: title="Site Name"

2) In SharePoint Designer, open your site, open your list and edit the NewForm.aspx page

- click the Advanced button in the ribbon so you and edit the entire page

- just before the </asp:Content> that belongs to the "PlaceHolderMain" block, add this JavaScript (modified for your list and column)
<script>
var textbox = document.getElementById("ctl00_m_g_94a01375_632d_4e89_825a_bd87120d718d_ctl00_ctl05_ctl09_ctl00_ctl00_ctl04_ctl00_ctl00_TextField")
var SiteName = document.getElementById("ctl00_PlaceHolderSiteName_onetidProjectPropertyTitle").innerText;
textbox.value = SiteName;
</script>

 

Hier mein Code dazu.

var textbox = document.getElementById("ctl00_m_g_649c741c_1b0e_4b6a_b71d_0dbca3e045bf_ctl00_ctl05_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_TextField");
var SiteName = parent.document.title;
textbox.value = SiteName;

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 Aug. 2012 14:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Jetzt verstehe ich das nicht mehr??? Ich dachte Du hast verschiedene Ansichten ein und derselben Liste auf verschiedenen Seiten. Dein Code funktioniert aber nur, wenn es sich um verschiedene Listen in verschiedenen Sites handelt und in diesem Fall braucht es kein weiteres Unterscheidungsmerkmal.

Abgesehen davon würde ich niemals derart hartcodierte IDs verwenden, um ein bestimmtes HTML-Element zu finden. Bei der kleinsten Änderung in der Masterpage oder auch anderswo können sich diese IDs ändern.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
3 Beiträge
EyesOnly Als Antwort am 3 Aug. 2012 14:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann haben wir uns falsch versanden.

Ich habe eine Liste bzw. einen Kalender. Desweiteren habe ich 10 Seiten auf denen jeweils ein Webpart mit der Sicht auf diesen Kalender plaziert ist. Nun soll ein "Lehrer(e-Lerning)" einen Kalendereintrag von Seite 1 in diesen Kalender machen können. Dieser soll auch nur in dem Webpart auf Seite 1 angezeigt werden (Filtereinstellungen).
Seite 2 bis 10 identisch.

Der Lehere soll hierfür aber keine Besonderen Merkmale einstellen müssen/dürfen.

MFG

EyesOnly

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 Aug. 2012 15:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann habe ich es doch beim ersten Mal richtig verstanden. Dein Script von oben liest aber den Websitenamen aus und das heißt, Du kannst den nicht als Filter verwenden, weil alle zehn Seiten in derselben Site sind.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 4 Aug. 2012 21:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="EyesOnly"]) You can retrieve the name of the site from data in the master page (assuming the master page has not be too heavily modified)

var SiteName = document.getElementById("ctl00_PlaceHolderSiteName_onetidProjectPropertyTitle").innerText;

1) Add the Site Name column to your list

2) Click New to add a new item (display the NewForm.aspx page), right-click View Source and then search for your column (Site Name) and note the ID="" value. (mine was "ctl00_m_g_94a01375_632d_4e89_825a_bd87120d718d_ctl00_ctl05_ctl09_ctl00_ctl00_ctl04_ctl00_ctl00_TextField")

You could also loop through all of the <INPUT> tags and find the one with: title="Site Name"

2) In SharePoint Designer, open your site, open your list and edit the NewForm.aspx page

- click the Advanced button in the ribbon so you and edit the entire page

- just before the </asp:Content> that belongs to the "PlaceHolderMain" block, add this JavaScript (modified for your list and column)
<script>
var textbox = document.getElementById("ctl00_m_g_94a01375_632d_4e89_825a_bd87120d718d_ctl00_ctl05_ctl09_ctl00_ctl00_ctl04_ctl00_ctl00_TextField")
var SiteName = document.getElementById("ctl00_PlaceHolderSiteName_onetidProjectPropertyTitle").innerText;
textbox.value = SiteName;
</script>[/quote]

Das kann für diese Szenario so nicht funktionieren, da die Liste im RootWeb der SiteCollection liegt und jedes SubWeb auf die Liste in der obersten Ebene zugreift, somit ist das Web immer das RootWeb.  Es sind ja nur Pages ...

Was man machen könnte ist einen Link mit Parameter für jede Page zu konfigurieren und diesen dann im Formular zu setzen, dafür könnte man ein eigenes Formular über den SPD bereitstellen. Der einfachst weg ist das was Andi über die Inhaltstypen schreibt.

Mit Workflows sehe ich so keine Möglichkeit dies zu lösen, es sei denn du macht für jede Page eine Liste und kopierst die Elemente über einen WF in die Hauptliste.