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.




Setzen von JSLink Property für eine Managed Metadata SiteColumn funktioniert nicht

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
367 Beiträge
Christian Merkel erstellt 12 Apr. 2017 11:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ich bin gerade dabei via JSLink eine ManagedMetadaten-Spalte zu verändertn. Diese hat eine CustomProperty "TargetLink" die ich dann anstelle des normalen tags als Link rendere. Geht super sowohl mit einfach als auch mehrfach Tags.

Doch leider greift das JSLink nur, wenn ich es in der JSLink Property des WebParts / Views setze.

Wenn ich es auf das Feld selber setzen will (SiteColumn) geht es nicht. Es wird immer wieder scheinbar auf den Standard JSLink-Wert für Taxonomy-Felder zurück gesetzt.

Hier mal ein Code-Ansatz zum Update des Feldes:

var config = {
    fieldTitle: "AG",
    jsLink: "~sitecollection/_catalogs/masterpage/JSLink/AGLinking.js"
};
var fieldData;

$.ajax({
  url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/fields/getbyinternalnameortitle('" + config.fieldTitle + "')",
  type: "GET",
  headers: { "accept": "application/json; odata=verbose" },
  success: successGet,
  error: errorHandler
});

function successGet(data){
    fieldData = data;
   
    console.log("Feld-Abruf Erfolg!");
    console.log(data);

    if(fieldData.d.JSLink.indexOf(config.jsLink) < 0 ){
        var newJSLink = fieldData.d.JSLink + (fieldData.d.JSLink.length > 0 ? "|" : "") + config.jsLink;
        console.log("JSLink noch nicht gesetzt. Setze JSLink auf: " + newJSLink);
        $.ajax({
            url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/fields('" + fieldData.d.Id + "')",
            type: "POST",
            data: "{ '__metadata': { 'type': 'SP.Field' }, 'JSLink': '" + newJSLink + "' }",
            headers: {
                "X-RequestDigest": $('#__REQUESTDIGEST').val(),
                "content-type": "application/json;odata=verbose",
                //"content-length": <length of body data>,
                "X-HTTP-Method": "MERGE"
            },
            success: successUpdate,
            error: errorHandler
        });
    }
}

function successUpdate(data){
    console.log("Update erfolgt!");
    console.log(data);
}

function errorHandler(msg, status, error){
    console.log("Error!!!")
    console.log(msg);
}

Den schmeiss ich in meine Browser-Console und der wird komplett ausgeführt mit "Update erfolgt" meldung...

Aber bei erneutem Aufruf wird wieder der alte JSLink-Wert angezeigt.

kann ich einer Taxonomy-SiteColumn kein eigenes JSLink verpassen? muss es zwingend immer an den Views / WebParts passieren?

Danke euch!

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2017 13:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Bist Du denn sicher, daß Dein Script bei anderen Feldern funktioniert? Und daß Du auch wirklich das richtige Feld erwischt hast? Ich wüßte sonst nicht, warum das bei Termstore-Feldern nicht gehen sollte...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 12 Apr. 2017 13:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habs mit einem Text-feld probiert, da gehts reibungslos :)

Sehr komisch :/

Wie gesagt, habs ja früher auch schon so gemacht, nur noch nicht bei einem Taxonomie-Feld :D

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING

Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 24 Apr. 2017 11:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Laut MSDN ist es scheinbaru auch garnicht vorgesehen die JSLink-Eigenschaft des Feldes zu verändern, da es ut eine GET-Methode gibt:

https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.taxonomy.taxonomyfield.jslink.aspx

Somit muss man es entweder immer am WebPart setzen oder sich einen anderen Weg einfallen lassen :/ (z.B. das JSLink eines anderen Feldes in der Ansicht / Form nutzen und da einfach das Taxonomy Feld mit angeben.... ka...)

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING