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ß
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
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.
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?
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.
Treffer!
Es geht um eine Nachschlagespalte =)
Das ist in dem Beitrag, den ich oben verlinkt habe, aber auch beschrieben.
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.
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"]
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"
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
Warum sollte das mit mehreren Parametern nicht funktionieren? Habe ich schon oft angewendet...
Ich wünschte mir es würde gehen. Habe es bereits bei mehreren Formularen getestet mit unterschiedlichen Spaltentypen.