2014-05-22 28 views
5

Ich wurde mit der Migration des vorhandenen benutzerdefinierten Plugins von SharePoint 2010 auf 2013 betraut. Die SharePoint 2013-Lösung sollte eine benutzerdefinierte Spalte erstellen, für die die Daten mithilfe von Webservice aus unserem Produkt (Anwendung) abgerufen werden sollen. Mit 2010 wurde der Speicherort der js-Datei und die Funktion aus der Datei fldtypes_xxxx.xml mit dem Renderpattern aufgerufen. Aber seit 2013, da sich die Benutzeroberfläche geändert hat, kann ich die JS-Datei nicht mehr verknüpfen. Daher musste ich die JSLink-Eigenschaft verwenden. Bezieht sich auf den folgenden msdn-Artikel und versuchte dasselbe.Benutzerdefiniertes Feld in SharePoint 2013

http://msdn.microsoft.com/en-us/library/jj220061%28v=office.15%29.aspx

Nun würde Ich mag einen Webservice Anruf von der JS-Datei machen. Ich muss die Informationen des Dokuments wie die listid, itemID abrufen und an unseren benutzerdefinierten Webservice senden, der die Anfrage bearbeitet, die wiederum einen Webservice-Aufruf an unsere externe Anwendung senden und die Daten für das entsprechende Dokument in der Sharepoint-Bibliothek abrufen soll.

Bitte führen Sie mich auf diese.

So fügen Sie einen Anruf aus der folgenden Funktion hinzu.

(function() { 
    var favoriteColorContext = {}; 

    favoriteColorContext.Templates = {}; 
    favoriteColorContext.Templates.Fields = { 
     "FavoriteColorField": { 
      "View": favoriteColorViewTemplate 
     } 
    }; 

    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(
     favoriteColorContext 
     ); 
})(); 

function favoriteColorViewTemplate(ctx) { 
    var color = ctx.CurrentItem[ctx.CurrentFieldSchema.Name]; 
    return "<span style='background-color : " + color + 
     "' >&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;" + color; 
} 
+0

Warum versuchst du es nicht: var color = ctx.CurrentItem.NameOfYourColumn; AND Überprüfen Sie, ob der Name der Spalte richtig ist. Weil ich gestern eine Spalte im Bearbeitungsmodus erstellt habe, und als ich den Namen meiner Spalte eingegeben habe, die mit einem anderen Namen wie "poakspoK" erstellt wurde und ich "Type" wollte. :) –

+0

Nicht sicher, ob das Problem das gleiche ist wie das, das ich letzte Woche hatte, aber schauen Sie [hier] [http://sharepoint.stackexchange.com/questions/139771/how-to-access-a-custom -field-of-a-list-using-rest] - Ich denke, das könnte das gleiche Problem sein und Sie müssen auch einen eigenen benutzerdefinierten Endpunkt implementieren ... – Markus

Antwort

0

Sie oben genannten Code ist für das Rendern Feld in der Ansicht. In diesem Fall können Sie diese Eigenschaften in favoriteColorViewTemplate Funktion erhalten:

  • Liste ID: ctx.listName oder aus globalen Variablen _spPageContextInfo.pageListId
  • Artikelnummer: ctx.CurrentItem.ID

Wenn Sie Funktionen im Display verwenden oder bearbeiten Formen, diese Eigenschaften sind ein bisschen anders:

  • Liste ID: ctx.FormContext.listAttributes.Id oder _spPageContextInfo.pageListId
  • Artikelnummer: renderCtx.FormContext.itemAttributes.Id

Wahrscheinlich der einfachste Weg, Sie benutzerdefinierten Web-Service zu rufen ist JQuery $.ajax(...) Anruf zu nutzen. Sehen Sie sich einige Proben hier:

  1. http://api.jquery.com/jquery.ajax/
  2. http://www.w3schools.com/jquery/ajax_ajax.asp

Wenn Sie Bezug auf JQuery machen wollen, Sie tun können, es auch JSLink verwenden, mit | Symbol wie folgt aus:

{path to JQuery}|{path to your JS file}

Verwandte Themen