Sprunglinks

  • Aktuell
  • JSLink: URL-Feld-Wert setzen

JSLink: URL-Feld-Wert setzen

16. Okt. 2018: Andreas Hebeisen

Wie kann per JSLink der Wert eines URL-Felds auf einem SharePoint-Formular gesetzt werden?

Kurzfassung: JSLink erstellen

Impressionen -

Längere Fassung

Um möglichst einfach neue Elemente in einer Liste zu erstellen, sollen in einem Projekt gemäss den Anforderungen einige Feldwerte bereits vorbelegt werden, wenn das Formular geöffnet wird. Die Werte sollen zu diesem Zweck über die URL übergeben werden. Bei einer rein client-seitigen Lösung bietet es sich dafür an, JavaScript-Code mittels JSLink an das Formular anzubinden.

Die Werte aus der URL lassen sich einfach mit der von SharePoint bereitgestellten Funktion aus dem Query-String ermitteln:

Impressionen -

Wie die Werte verschiedener Feldtypen (u.a. auch URL-Feld) in einem JSLink ausgelesen werden, erklärt Stefan Bauer in seinem Blog-Post. Um einen Wert zu setzen, kann bei vielen Feldtypen die Zuweisung einfach umgedreht werden. Dies scheint beim URL-Feld jedoch nicht zu klappen. Auch die sonst oftmals verwendete Notation mit einem Objekt mit den Eigenschaften „URL“ und „Description“ bringt hier keinen Erfolg. Nach einer kurzen Analyse mittels JSLink im Edit-Form hat sich gezeigt, dass der Wert als String im Format „URL, Beschreibung“ gesetzt werden muss. Gleich kann ja z.B. auch mit PowerShell ein URL-Wert gesetzt werden.

Somit kann das JSLink-Script einfach fertiggestellt werden:

Resultat

Impressionen -
// View Page custom rendering
function customView(ctx) {
if (ctx != null && ctx.CurrentItem != null) {
  var percentCompete = parseInt(ctx.CurrentItem.PercentComplete);
  if (percentCompete != 100) {
    return "<span style='color:red'>Incomplete Task</span>";
  }
  else {
    return "<span style='color:green'>Task Completed</span>";
  }
}
}
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
  <Field
    ID="{eb3eed37-961b-41bd-b11c-865c16e47071}"
    Name="MyCustomField"
    DisplayName="Custom Columns"
    Type="Text"
    Required="FALSE"
    Group="JSLink Demo"
    JSLink="~site/style library/JSLinkDemo/jquery-1.10.2.min.js|
            ~site/style library/JSLinkDemo/customview.js">
  </Field>
 
</Elements>
setLink: function (ctx) {
        // Feld-Wert setzen
	ctx.CurrentFieldValue = "https://www.advis.ch, ADVIS AG";

        // Default-Edit-Template zurückgeben
	return SPFieldUrl_Edit(ctx);
}