Verwenden des ItemAdding-Ereignisempfängers, um mehrere Felder auf der Grundlage von Werten von einem Feld zu aktualisieren

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/53731

Frage

Ich habe ein benutzerdefiniertes SharePoint 2010-Spffield von Typ Spfieldmulticolumn. Die Daten in dieser Spalte werden in einer getrennten Zeichenfolge gespeichert, die in den meisten Bereichen in einem lesbaren Format analysiert und in einem lesbaren Format gerendert ist (Listenansicht, 'Anzeigeneigenschaften' usw. anzeigen). Die Rohdaten sehen so aus (Wortlaut geändert):

; # 0; label1; #true; #gUID; #description_of_label; #; #; # 1; # label2; #true; #Guid; # Beschreibung_of_label2; # ...

usw. Die Beschreibungen sind ziemlich lang und machen diese Saite Hunderte von Charakteren lang und wirklich hässlich, wenn sie nicht herausgefunden und gerendert werden. Das Problem damit ist, dass wir in bestimmten Teilen des Systems das Rendern des Feldes nicht steuern können. Das häufigste Problem, das wir sehen, ist in der Datenblattansicht, in der die Rohdaten angezeigt werden und einfach schrecklich aussehen, und das Datenblatt macht für Benutzer nahezu unbrauchbar. Die Daten werden auch in Alert-E-Mails und Suchergebnissen angezeigt.

Ich wurde beauftragt, dieses "hübscher" zu machen, und meine Lösung sollte eine Sekundar-, 'Display-Spalte hinzufügen und die Spalte "Daten" ausblenden. Wenn ein Element aktualisiert oder hinzugefügt wird, habe ich Event-Empfänger, die die Daten in das Anzeigefeld umwandeln und verschieben, was in der Datenblattansicht nett aussieht und so weiter.

Dies funktioniert großartig, mit Ausnahme der Tatsache, dass es 2 Update () auf jeden Artikel erfordert, der diese Metadaten bekommt. Wenn das Feld "Daten" besiedelt ist, und ein anderes, wenn der Ereignisempfänger die Daten in das Display kopiert.

unsere produktion (und qas, aber nicht test- oder entwicklung) arms nutzen den Remote-Blob-Speicher (RBS), und unser Operations-Team hat festgestellt, dass, wenn diese Spalte (oder ich denke, jede Spalte) in einem Office-Dokument (Doc, docx usw.) Es verursacht einen neuen Blob im Dateisystem. Wenn die Lösung heute ist, generiert eine neue hochgeladene Datei 2 Blobs (eine für den Upload, eine für die Anwendung dieser Metadaten). Mit diesem neuen EventReceiver generieren wir jetzt 3 Blobs, was für unser Operations-Team nicht akzeptabel ist (wir verfügen über keinen 50% mehr Speicherplatz, um dies zu unterstützen).

'Fixing' RBS ist nicht in der Frage - also muss ich irgendwie beide diese Säulen gleichzeitig aktualisieren, anstatt eines zu aktualisieren, der einen Ereignisempfänger abfeuert, um den anderen zu aktualisieren.

Gibt es eine Möglichkeit, 2 benutzerdefinierte Spffields mit einem Anruf zum Update () zu aktualisieren ()?

tl; DR: Benutzerdefinierte Lösung mit 2 benutzerdefinierten spffields - eine über das Formular "Bearbeiten" aktualisiert, der andere über einen Ereignisempfänger (Sekunden lang ist der erste vollständig für seine Daten). Wie kann ich beide ohne Verwendung eines Ereignisempfängers aktualisieren (mit nur einem Update-Anruf ()?)

War es hilfreich?

Lösung

Es klingt so, als ob Sie das Ereignis des generationspflichtigen Ereignisses verwenden.Wenn Sie generakodicetagcode verwendet haben, glaube ich, dass Sie die Nachprozellen ändern können, anstatt ein zweites Update auszuführen.

Dies kann für Sie von Nutzen sein: nbsp: Event-Empfänger

Andere Tipps

Wenn Sie eine Lookup-Spalte erstellen, können Sie zusätzliche Spalten aus Ihrer Suchliste anzeigen.

Es sieht aus, als würden Sie hier eine Liste mit Ihrem Label / Beschreibung und dann eine Lookup-Spalte in die Etikettenspalte sind und die Beschreibung als zusätzliches Feld aufweisen.Ich weiß nicht, ob es in der Datenblattansicht perfekt sauber wäre, aber es wäre eine Verbesserung.

Eine andere Potentiallösung für diese Art von Problem ist eine berechnete Spalte, aber aus dem, was ich von Ihrem Szenario sehe, passt es nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top