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.




Listenfeld per Workflow aktualisieren

Geprüfte Antwort Dieser Beitrag hat 7 Antworten

Ohne Rang
375 Beiträge
YoWoo erstellt 30 Juni 2010 09:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

auf einem Listenelement wird ein Workflow ausgeführt. Während der Workflow läuft will ich per Code eine Zelle im Datensatz ändern, genau genommen den Genehmigungsstatus von Genehmigt auf Austehend. Mein Problem ist folgendes, ich schaffe es nicht der Wert zu ändern, auslesen kein Problem.

Ich habe schon mit SPContext gearbeitet, aber da stürtzt der Workflow ab, sobald der den Punkt SPSite erreicht.Mein Ziel war es mit folgendem Codeausschnitt den Wert zu aktualisieren.

SPLIstItem ListItem = List.Items[ItemID];

ListItem["Genehmigungsstatus"] = 2;

ListItem.Update()

 

Kann mir jemand helfen, wo mein Fehler ist?

 

Alle Antworten

Ohne Rang
375 Beiträge
YoWoo Als Antwort am 30 Juni 2010 10:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

public Guid workflowId = default(System.Guid);
        public Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties workflowProperties = new Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties();

        private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
        {
            //WorkflowID in Variable WorkflowID übertragen
            workflowId = workflowProperties.WorkflowId;
        }

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
        {
 
            workflowProperties.Item["Genehmigungsstatus"] = 2;
            workflowProperties.Item.Update(); 
        }

 

 

Ich seh im Debugger, dass der Wert auf 2 geändert wird, aber das Update fkt. nicht.

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 30 Juni 2010 10:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hmmmm ich hab gerade mal nachgeschaut und ich schreibe in die Felder im folgendermaßen:

WorkflowProperties.Item.Properties["Feld"] = "Wert";

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
375 Beiträge
YoWoo Als Antwort am 2 Juli 2010 11:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich sehe im Debugger das die 2 zugewiesen wird, aber in der Liste selbst wird der Status des Elements nicht wieder auf Ausstehend zurückgesetzt.

Ohne Rang
168 Beiträge
niceoldlady Als Antwort am 2 Juli 2010 11:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Versuch mal: WorkflowProperties.Item.Update()

Ohne Rang
375 Beiträge
YoWoo Als Antwort am 2 Juli 2010 14:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sehr seltsam, folgendes funktioniert:

WorkflowProperties.Item.Properties["Feld"] = 2;

WorkflowProperties.Item.Update()

 

folgendes funktioniert nicht:

workflowProperties.Item["Genehmigungsstatus"] = 2

WorkflowProperties.Item.Update()

Vielen Dank nochmal für die Hilfe - vielleicht haben wir anderen dadurch auch geholfen.

Ohne Rang
194 Beiträge
Florian Lippert Als Antwort am 14 Okt. 2010 11:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi YoWoo,

ich weiß nicht ob sich das Thema inzwischen erledigt hat,

aber evtl trifft noch wer anders auf das Problem ;-)

 

Habe mich eben bei SharePoint 2010 mit dem Blog beschäftigt und bin da auf das Feld "Genehmigungsstatus" gestoßen.

SPListItem myItem = myList.Items[ItemID];

myItem["Genehmigungsstatus"] = "Wert";

myItem.Update();

funktioniert da ebenfalls nicht. SharePoint gibt zwar keinen Fehler aus, aber der Wert wird beim Update nicht übernommen.

 

Bei mir funktioniert es so:

myItem["_ModerationStatus"] = "Wert"; //Wert müsste auch als Int32 übergeben werden können!

myItem.Update();

 

In diesem Fall spreche ich das Feld über den InternalName an.

Ich weiß leider nicht, warum man sonst mit dem "Displaynamen" arbeiten kann und an dieser Stelle den InternalName nehmen muss...

Aber ich hoffe, dass diese Information einigen anderen weiterhilft und es so auch in SharePoint 2007 funktioniert! ;-)

VG

Ohne Rang
375 Beiträge
YoWoo Als Antwort am 14 Okt. 2010 19:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für den Hinweis, werde ich mal testen, aber mit dem Zusatz properties hat es dann auch bei mir fkt.