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

Custom Action um Element aus Liste in eine andere Liste zu kopieren (via ECB Erweiterung)

bewertet von 0 Usern
Beantwortet Dieser Beitrag hat 1 Geprüfte Antwort | 14 Antworten | 2 Followers

Ohne Rang
19 Beiträge
Vincent erstellt in 21 Jun 2012 20:31

Hi,

 

ich habe per Custom Code den Edir Control Block einer Liste erweitert. Hat alles gut funktioniert. Ich lasse beim draufklicken auf den ECB Befehl C# Code laufen, der das Element in eine andere Liste kopiert, bzw in einer anderen Liste einen Eintrag mit gleichem Title.

Meine Frage...

Hat jemand eine Idee wie ich, nachdem ich auf "Eintrag in anderer Liste" im ECB geklickt habe, sich das newForm.aspx der anderen Liste, wo der Eintrag entstehen soll, aufgeht mit bereits gefülltem Titel?

Ich habe es hinbekommen das direkt die NewForm aufgeht. Aber der Titel steht nicht drin. Der soll ja übernommen werden.

 

Vielen Dank für Hilfe.

 

Gruß

Beantwortet Geprüfte Antwort

Top-10-Beitragsschreiber
19.005 Beiträge

Man gibt dazu beim Aufruf der NewForm den Titel in der URL mit:
NewForm.aspx?Title=MeinTitel

In die NewForm kommt dann noch etwas JavaScript, das diesen Wert aus der URL ausliest und in das Titelfeld schreibt. Das kann man dann auch gleich readonly setzen.

Beispiel: http://geekswithblogs.net/SoYouKnow/archive/2009/07/06/setting-sharepoint-form-fields-using-javascript.aspx

Viele Grüße
Andi
af @ evocom de
Blog

Alle Antworten

Top-10-Beitragsschreiber
19.005 Beiträge

Man gibt dazu beim Aufruf der NewForm den Titel in der URL mit:
NewForm.aspx?Title=MeinTitel

In die NewForm kommt dann noch etwas JavaScript, das diesen Wert aus der URL ausliest und in das Titelfeld schreibt. Das kann man dann auch gleich readonly setzen.

Beispiel: http://geekswithblogs.net/SoYouKnow/archive/2009/07/06/setting-sharepoint-form-fields-using-javascript.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge

Vielen Dank.

Ich habe genau nach so etwas gesucht. Allerdings jabe ich es mit CSharp gelöst und nicht mit javascript, da ich eh über C#-Code das newForm Formular aufrufe.

Gruß

Ohne Rang
19 Beiträge

Guten Morgen zusammen,

 

wie das immer so ist, führt das eine zum anderen. Es funktioniert jetzt das ich die Titelspalte der newForm. aspx mit ?Title=MeinTitel befülle. Aber es geht nicht bei weiteren Spalten. Ich mache zum Beispiel ?Title=MeinTitel&ElementID=14.

Nach dem Kompilieren wird mir der Inhalt der Title-Spalte befüllt, aber die Spalte ElementID ist leer. Allerdings steht oben in dem Fenster des Links http://....

?Title=MeinTitel&ElementID=14 drin. Hat es vielleicht damit zu tun, das keine Spalten dafür genutzt werden können die vom Benutzer erstellt wurden sind?

 

Gruß

Top-10-Beitragsschreiber
19.005 Beiträge

Das ist völlig unabhängig davon, wie die Spalte erstellt wurde. Aber Dein Script muß natürlich den Spaltentyp beachten. Ein Textfeld kann einfach besetzt werden, aber z.B. ein Nachschlagefeld ist da komplizierter.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge

Treffer!

Es geht um eine Nachschlagespalte =)

Top-10-Beitragsschreiber
19.005 Beiträge

Das ist in dem Beitrag, den ich oben verlinkt habe, aber auch beschrieben.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge

Ja, habe ich mir angeschaut. Aber ich bekomme den QueryString einfach nicht zusammengebaut. Es handelt sich bei mir "nur" um einen einfachen Lookup. Die Übergabe des Titles von der einen in die andere Liste klappt ohne Probleme mit ?Title=...

Bei dem zweiten Feld was ich befüllen will geht es lediglich darum, dass ich eine lookup-Spalte in Liste 2 befüllen möchte, die auf die ID-Spalte von Liste 1 verweist. Irgendwie will das einfach nicht klappen.

Top-10-Beitragsschreiber
19.005 Beiträge

Dann beschreibe genauer, was Du wie machst. Du bekommst die richtige ID nicht in die aufzurufende URL, richtig?

Du machst das per C#? Aus welchem Kontext? Du kannst die ID des aktuellen Elemenst so bekommen:
SPContext.Current.ListItem.ID

Oder eines anderen Elements, das Du hast: SPListItem.ID

Wenn die gesuchte ID bereits im QueryString vorhanden ist, je nach Kontext:
Request.QueryString["ID"] oder this.Page.Request.QueryString["ID"]

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge

Genau. Die ID habe ich in einer Variable gespeichert und bekomme sie nicht in der URL übergeben.

Per CustomAction in einem Edit Control Block starte ich C# Code. Es wird dann aus der Element.xml durch den Befehl javascript:__doPostBack(...) eine Klasse aufgerufen, in der mein C# Code läuft. 

Dort lese ich die ItemID aus, und auf diesem Weg bekomme ich das Element (getItemById()), von dem das Event gefeuert wurde (aus dem ECB).

Darauf rufe ich mit Page.Response.Redirect() die Sharepointseite auf, auf der sich die 2. Liste befindet. Ich rufe direkt die /newForm.aspx auf und übergebe in den Title, und will als Lookup die ID des Elements der ersten Liste mitgeben (was ja in der ItemID steht).

Andernfalls, falls es nicht klappt, möchte ich die ItemID nicht als Lookup übergeben, sondern nur als Wert (siehe URL unten).

 

URL aufruft sieht folgendermaßen aus:  http://......../newForm.aspx?Title=" + str_title + "&TicketID=" + int_ticketID"

 

Ohne Rang
19 Beiträge

Mir ist beim Debuggen aufgefallen, dass ich in der Variablen die ich für die ItemID angelegt habe, immer den richtigen Wert drin habe. Allerdings habe ich den Eindruck, dass ich einer newForm.aspx nicht mehr als einen Wert uiweosen kann. Mit dem Title klappt es wunderbar, aber mehr funktioniert nicht. Es wurde auch mit anderen Parametern getestet. Sowohl Zahlenwerte, wie auch Strings.

Gruß Vincent

 

 

Top-10-Beitragsschreiber
19.005 Beiträge

Warum sollte das mit mehreren Parametern nicht funktionieren? Habe ich schon oft angewendet...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge

Ich wünschte mir es würde gehen. Habe es bereits bei mehreren Formularen getestet mit unterschiedlichen Spaltentypen.

 

Ohne Rang
1 Beiträge

Hallo Andy,

wir haben Probleme ein Listen-Element in eine andere Liste zu kopieren.

Hast du einen Vorschlag.

 

VG

Berti

Top-10-Beitragsschreiber
19.005 Beiträge

Wo genau klemmt's denn? 

Viele Grüße
Andi
af @ evocom de
Blog
Seite 1 von 1 (15 Elemente) | RSS