2009-07-07 13 views
4

Ich habe eine berechnete Spalte in einer benutzerdefinierten Sharepoint 2007-Liste, mit der folgenden Formel:SharePoint: Berechnete Spaltenwerte werden beim Bearbeiten von Listenelementen nicht mehr angezeigt. Irgendwelche Ideen?

=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25)) 

Wenn ein Element in der Liste erstellt wird, alles ist in Ordnung, aber wenn ein Element die [ID] aktualisiert Die Spalte befindet sich nicht mehr in der berechneten Spalte für diesen Artikel.

Also, bei der Erstellung: "IR-40-TheTitleIsHere", aber nach der Bearbeitung ist es, "IR - TheTitleIsHere".

Jeder hat einen Einblick, warum dies passieren würde?

+3

Sind Sie sicher, dass bearbeiten Urlaub? Weil viele Artikel sagen, dass die ID während des Hinzufügens nicht verfügbar sein wird, weil sie noch nicht erzeugt wurde. Um den Wert in der Spalte Berechnet basierend auf der ID zu ermitteln, müssen Sie das Element bearbeiten, damit der Wert berücksichtigt wird. – Kusek

+0

Ja, jetzt, wo du es erwähnst, denke ich, dass du recht hast. Es scheint, wenn ich in die berechnete Spalte gehe (ich habe noch nicht einmal etwas zu bearbeiten), und klicken Sie dann auf "OK", werden alle IDs generiert/berechnet, für alles fehlte. Wenn Sie danach jedoch einen Datensatz bearbeiten, wird der Wert [ID] für diesen Datensatz wieder ausgeblendet. * seufz * Irgendwelche Gedanken darüber, wie man den ID-Teil der Berechnung hat, und ihn über Rekordbearbeitungen bleiben lassen? – program247365

Antwort

4

Ich bestätige das oben erwähnte Verhalten. Alle Add/Edit löscht den [ID] Teil. Wenn Sie die Spalte in der Liste bearbeiten und die Formel aktualisieren, werden alle Elemente der ALL-Liste aktualisiert, bis sie korrekt sind (bis Sie eine Bearbeitung für das Element vornehmen).

Ich fand this post that mentions the same problem.

Hört sich an, als wäre die einzige Lösung, einen einfachen Workflow mit SharePoint Designer zu erstellen, der ein Textfeld in Ihrer Liste aktualisiert.

+0

Ja, ein SharePoint-Workflow klingt wie die einzige Lösung. Vielen Dank. – program247365

1

Ich hatte ein ähnliches Problem vor einer Weile. Durch andere Blogs und Experten entdeckte ich, dass die [ID] -Spalte nicht in einer berechneten Spalte verwendet werden sollte, da sie Chaos anrichtet und viele Fehler verursacht. Entschuldigung - entfernen Sie die ID-Spalte und Sie sollten in Ordnung sein.

1

Diese Frage ist ein wenig alt, aber ich hatte das gleiche Problem und eine Lösung dafür gefunden. Es ist eine ziemlich spezifische Lösung und wird nicht jedem helfen - es beinhaltet die Verwendung von JavaScript in einem Inhalts-Editor-Webpart, um das berechnete Feld zu aktualisieren.

Diese Seite - http://blog.pathtosharepoint.com/2008/09/01/using-calculated-columns-to-write-html/ - gibt ein Beispiel für die Verwendung von Javascript in der gleichen Weise, die ich es verwendet habe .. der wichtige Block des Codes ist die erste while-Schleife. Der Punkt ist, die Out-of-Box-ID-Spalte aus der Liste zu holen und zu aktualisieren, welches berechnete Feld die ID benötigt.

In meinem Fall hatte ich eine URL in einem berechneten Feld, die die ID als Parameter benötigt .. das würde natürlich nicht normal funktionieren, weil Sie die ID nicht in ein berechnetes Feld setzen können. Was ich getan habe war, dass ich "? ID = null" in den ID-Parameter der URL meines berechneten Felds legte, dann ersetzte ich diese mit der ID, die mit Javascript abgerufen wurde. Wenn also die Seite geladen wird, startet die js und aktualisiert alle der URLs die richtige ID haben.

+1

Danke für das Hinzufügen der Info! – program247365

+0

Gibt es dafür eine Lösung in SharePoint 2010? Ich habe den JavaScript-Code für SharePoint 2010 ausprobiert, aber es hat nicht funktioniert. – hemalshah

0

Ich weiß, das ist sehr alt, aber ich konnte nirgendwo anders eine neuere Version der Frage finden und die obige Antwort von ferr löste das Problem für mich, ist aber nicht sehr klar, also dachte ich, ich würde es aktualisieren.

Dies setzt voraus, dass Sie die ID in der Ausgabe HTML verwenden möchten (zum Beispiel innerhalb eines Links), ich denke, das ist ziemlich üblich.

JavaScript aus dem pathtosharepoint Link Verwendung ich in der folgenden hinzugefügt, um die ID mit einem if-Anweisung für die Sicherheit zu erhalten:

if (HTMLregexp.test(CellContent)) { //original pathtosharepoint line 
    if (NodeSet[i].parentNode.getAttribute("iid")){ 
     var SPID = NodeSet[i].parentNode.getAttribute("iid").split(",")[1]; 
     CellContent = CellContent.replace("SPIDReplace", SPID) 
    } 
NodeSet[i].innerHTML = CellContent; //original pathtosharepoint line 

Diese in der while-Schleife der neuesten pathtosharepoint fix zum Zeitpunkt des Schreibens gesetzt wird . Dies funktioniert für mich bei SharePoint 2010. Hinweis: Fügen Sie die Zeichenfolge "SPIDReplace" in Ihre berechnete Spalte ein, um sie durch die Element-ID zu ersetzen.

pathtosharepoint Seite: http://blog.pathtosharepoint.com/category/calculated-columns/ pathtosharepoint Code: http://pathtosharepoint.com/Downloads

+0

Tatsächlich ältere Informationen mit einer neueren Alternative (für einige Anwendungsfälle), siehe http://stackoverflow.com/questions/28986458/columns-dereferencing-in-sharepoints-calculated-column –