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.




Spalten einer benutzerdefinierten Liste auf read-only setzen

Geprüfte Antwort Dieser Beitrag hat 15 Antworten

Ohne Rang
216 Beiträge
Nachtschelm erstellt 31 Juli 2009 15:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Forum,

ich möchte Spalten, die von einem Workflow gefült werden, auf read-only setzen, um einem versehentlichen Verändern vorzubeugen. Bisher habe ich das Problem umgangen, indem ich in den New- und EditForms die entsprechenden Felder auf "Display" gesetzt oder komplett entfernt habe. Allerdings benutzen die Anwender vermehrt die Datenblattansicht, was meine Notlösung unbrauchbar macht. Über Google bin ich auf CAML gestoßen und hier habe ich auch einen Blog-Eintrag gefunden. Leider bin ich aus CAML bisher überhaupt nicht schlau geworden (keine Ahnung, wo und wie das eingesetzt werden soll) und die Tools, auf die der Blog-Eintrag verweist, blenden die Spalten nur aus bzw ich stoße auf tote Links.

Daher hoffe ich, hier Hilfe zu finden. Nocheimal meine Frage:
Wie kann ich in einer benutzerdefinierten Liste Spalten auf read-only (nicht invisible) setzen?

Schon mal vielen Dank für sämtliche Antworten :-)

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 31 Juli 2009 16:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Man kann so etwas über das Objektmodell machen (=programmieren). Jede Spalte hat eine Eigenschaft ReadOnlyField. Allerdings kann Dein Workflow, dann auch nicht mehr in diese Spalte schreiben...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 31 Juli 2009 16:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

dann würde ich den Workflow so gestallten, dass er die Spalten beschreibbar macht, bevor sie gefüllt werden. Danch setzt er sie wieder auf Read-Only.
Dazu müsste ich wohl aus meinem SPListItem das SPField rausziehen.

item.Fields.GetField("fieldname").ReadOnlyField = true;  

Könnte das so funkionieren?

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Aug. 2009 11:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das wird nicht funktionieren, weil das SPField die ganze Spalte darstellt, d.h. es gilt für alle Elemente der Liste und Workflowinstanzen für andere Elemente brauchen vielleicht gerade den nicht-readonly-Status.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
32 Beiträge
Marco Scheel Als Antwort am 3 Aug. 2009 06:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn es u die Technik geht, kann man das mit dem PowerWerkzeug schlecht hin machen:

Sharepoint Manager 2007
http://spm.codeplex.com

Ciao Marco

Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 3 Aug. 2009 09:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

@Marco:

Danke für den Tipp. Leider funktioniert das Programm nicht. Ich bekomme nichts angezeigt und es stürzt immer ab, sobald ich eine Aktion auusführe.

 

@Andi:

Ich habe Deinen Einwand nicht ganz verstanden, sorry :-). Wenn das SPField die ganze Spalte repräsentiert, dann ist es doch genau das, was ich brauche. Die Elemente dieser Spalte werden ausschließlich durch diesen einen Workflow eingetragen.

Wie komme ich denn auf korrekte Weise an das ReadOnly-Attribut?

 

 

Viele Grüße
Nachtschelm

Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 3 Aug. 2009 10:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Marco,

hat jetzt doch funktioniert mit dem Tool. Ich hab's vorhin nicht mit Admin-Rechten ausgeführt, darum hat es mich bestreikt. Mit Admin-Rechten läuft es super.
Nochmal vielen Dank!

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 3 Aug. 2009 17:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Nachtschelm"]

@Andi:

Ich habe Deinen Einwand nicht ganz verstanden, sorry :-). Wenn das SPField die ganze Spalte repräsentiert, dann ist es doch genau das, was ich brauche.

[/quote]

Ich habe Dich so verstanden, daß Du aus einem Workflow heraus den readonly-Status für ein Element verändern willst. Wenn Du ReadOnlyField von SPField setzt, dann gilt das aber immer für alle Elemente einer Liste und nicht für das eine zum Workflow gehörende.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 4 Aug. 2009 11:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

wahrscheinlich habe ich mich unklar ausgedrückt, ich probier's einfach nochmal: Ich habe in einer Liste bestimmte Spalten, die ausschließlich durch Workflows (Visual Studio 08) gefüllt werden und möchte diese deswegen auf Read-Only setzen.
Mein Ansatz wäre nun, den Workflow so zu coden, dass er:

  1. die Spalte beschreibbar macht (readonlyfield = false), anschließend
  2. die Spalte befüllt und zum Schluss
  3. die Spalte wieder schreibgeschützt macht (readonlyfield = true).

Diesen Ansatz hätte ich über das SPField versucht. Allerdings wäre eine Möglichkeit, tatsächlich nur das aktuelle Element dieser Spalte zu bearbeiten, noch eleganter. Hast Du da was in petto?

Viele Grüße
Nachtschelm

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 5 Aug. 2009 06:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das bekommst Du nicht synchronisiert. Bedenke, daß später mehrere Workflowinstanzen gleichzeitig laufen können und wenn dann mehrere versuchen ReadOnlyField auf true bzw. false zu setzen....

Setze das Feld einmal auf ReadOnly (z.B. mit SPM) und beschreibe das Feld über RunWithElevatedPriviledges. Der Systemaccount kann nämlich trotzdem hineinschreiben.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
216 Beiträge
Nachtschelm Als Antwort am 5 Aug. 2009 14:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da hast Du natürlich Recht. Auf die Idee, dass mehrere Workflowinstanzen gleichzeitig aktiv sind bin ihc nicht gekommen.

Ich habe es jetzt mit dem SPM und SPSecurity.RunWithElevatedPriviledges(delegate(){/**code**/}); gelöst.

Nochmals vielen Dank an Euch beide!

Viele Grüße
Nachtschelm

Ohne Rang
35 Beiträge
Domsen Als Antwort am 10 Nov. 2009 12:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ich müsste auch ein paar Spalten als ReadOnly setzen! Allerdings werd ich aus dem Thread nicht wirklich schlau werd ich nicht?! :)

Kann mir bitte nocheinmal einer erklären, dass ich es auch verstehe... arbeite mich gerade erst mit SharePoint und Workflows ein :)

Gruß

Liebe Grüße

Domsen

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Nov. 2009 12:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Der Thread besagt, daß es sinnlos ist aus einem Workflow heraus eine Spalte auf ReadOnly zu setzen, weil das immer für alle Elemente der Liste gilt und nicht nur für das eine, auf das sich der Workflow bezieht.

Hilft Dir das? Falls nicht, beschreibe genauer, was Du erreichen möchtest.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
35 Beiträge
Domsen Als Antwort am 10 Nov. 2009 14:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ne ich möchte eigentlich nicht aus einem workflow eine liste auf read only setzen sonder neher im prinzip einzelne spalten auf read only setzen! Im Prinzip => Wenn eine Liste angelegt wird (also auf neu geklickt wird) soll die Liste angelegt werden! Wenn man diese Liste nun bearbeiten (darauf klicken und "Element bearbeiten") will, sollen einige ausgefüllte Spalten auf "ReadOnly" stehen... so dass man diese nicht mehr verändern kann, sondern nur noch sieht :)

Ich hoffe, dass das so verständlich ist :)

Liebe Grüße

Domsen

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Nov. 2009 14:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das geht leider nicht. Wenn eine Spalte ReadOnly ist, dann erscheint sie auch nicht auf der NewForm, so daß auch bei Neuanlage nichts eingegeben werden kann. Man kann diesen Spalten nur per Code einen Wert zuweisen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
35 Beiträge
Domsen Als Antwort am 10 Nov. 2009 15:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schade :( Danke für deine schnelle Antwort... dann kann ich ja aufhören, nach einer Lösung zu suchen :)

Liebe Grüße

Domsen