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.




Berechneter Wert auf Spalte mit Mehrfachauswahl

Geprüfte Antwort Dieser Beitrag hat 11 Antworten

Ohne Rang
18 Beiträge
A. Ufer erstellt 24 Jan. 2012 10:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Community,

ich erarbeite gerade ein einfaches "Datenmodell" fuer ein Hard- und Softwarebeschaffungs-Szenario. Dafuer habe ich im Moment 3 Listen angelegt. Aufgeführt sind jeweils die relevanten Spalten:

Software: Titel, Preis (Zahl), ...
Geräte: Titel, Preis(Zahl), ...
Antrag: Titel, Lookup->Geraete, Geraete:Preis, Lookup->Software, Software:Preis

Die Lookup-Felder ermoeglichen eine Mehrfachauswahl. Dadurch habe ich in den Spalten Geraete:Preis und Software:Preis jeweils die Preise der Geraete und Software als Semikolon-getrennte Werte. Fuer die weitere Abwicklung wuerde ich gerne eine Spalte erstellen, in der ich quasi den Gesamtwert aus beiden Spalten errechne. Jedoch fehlt mir da komplett der Ansatz, wie ich das umsetzen soll.

Hat jemand eine Idee oder einen Loesungsansatz fuer mich?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Jan. 2012 13:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das wird mit einer berechneten Spalte nicht funktionieren. Also entweder ein anderes Datenmodell, bei dem nur einfache Lookups verwendet werden, oder ein programmierter EventReceiver, der den Gesamtpreis berechnet.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
18 Beiträge
A. Ufer Als Antwort am 25 Jan. 2012 17:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe mich fuer die Loesung mit dem Evenreceiver (Visual Studio 2010 Eventreceiver-Projektvorlage) entschieden. Jedoch scheint er nach dem Deployment nicht richtig zu wirken. Er wurde als Farmloesung implementiert und ist als Feature in der relevanten Website aktiviert. Beim Debuggen macht er alles richtig. Auch die Zuordnung des berechneten Wertes zur dafure vorgesehenen Spalte wird "ausgefuehrt". Wenn ich mir dann allerdings die Spalte im Browser anschaue, in der eigentlich die Summe stehen sollte, ist diese leer.

Zuweisung:

properties.ListItem["Preis"] = summe

wobei "Preis" der Name der Spalte fuer die Summe ist (Typ: Zahl) und summe ein float ist.

Der gesamte eigene Code steckt dabei in einem try-catchBlock, der jedoch keine Exception abfängt.

 

Hat jemand eine Ahnung, was das Problem sein koennte?

 

 

Gruss,

Andre

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 25 Jan. 2012 17:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Machst Du auch ein Update auf das Item, damit es gespeichert wird?

Beste Grüße,
Christian

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

Ohne Rang
18 Beiträge
A. Ufer Als Antwort am 25 Jan. 2012 17:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich wollte gerade ein Edit machen, genau das war mein Problem (und noch ein paar andere kleine Anfaengerfehler).

Der Eintrag wird jetzt vorgenommen, allerdings erst nach einem erneuten Refresh der Seite im Browser.

Ich habe die ItemAdded-Methode ueberschrieben, falls das relevant sein sollte.

Gruss,

Andre

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 25 Jan. 2012 17:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du kannst entweder das Adding-Event nehmen oder das Added-Event synchron laufen lassen (das muss bei der Registrierung des EventHandler als Attribut übergeben werden).

Wenn sich bestehende Elemente ändern müsstest Du das Updating-Event nehmen.

Edit: Bei den syncrhonen Events (Adding, Updating) muss kein Update durchgeführt werden. ;-)

Beste Grüße,
Christian

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

Ohne Rang
18 Beiträge
A. Ufer Als Antwort am 25 Jan. 2012 17:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Als Neuling in der Sharepoint-Entwicklung stosse ich so langsam ans Ende meines Verstaendnis.

Neuen EventReceiver fuers ItemAdding erzeugt, Code hinzugefügt (der alte, "funktionierende" Code)
Jetzt bekomme ich jedes Mal eine NullReferenceException beim Zugriff auf: properties.ListItem[Gesamt:Preis].

Google sagte mir, dass ein "properties.Cancel = true" nach dem base-Aufruf helfen soll.. tut es bei mir aber nicht.

 

*Verzweifel*

Gruss,

Andre

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 25 Jan. 2012 18:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

:-)

Das Listitem exisitiert noch nicht beim Event "Adding", daher die Exception. Nutze stattdessen "properties.AfterProperties["Spalte"] = "Wert";

Beste Grüße,
Christian

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

Ohne Rang
18 Beiträge
A. Ufer Als Antwort am 26 Jan. 2012 10:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Guten Morgen allerseits,

habs heute morgen getestet... und ich erhalte weiterhin die NullReferenceException bei folgender Zeile:

einzelPreise = properties.AfterProperties["Geräte:Preis"].ToString();

Laut Debugger liegt es daran, dass properties.AfterProperties["Geräte:Preis"] NULL liefert.

 

Nachdem ich jetzt noch etwas recherchiert habe, sollte AfterProperties die einzige Moeglichkeit sein, um auf Felder bei ItemAdding zuzugreifen. Weiterhin habe ich gelesen, dass bei Bibliotheken selbst das nicht geht. In meinem Fall basiert die Liste "Anträge" auf einen selbstdefinierten Inhaltstyp, der von "Element" abgeleitet ist.

Gruss,

Andre

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 26 Jan. 2012 10:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann versuche einmal das Updated-Event synchron laufen zu lassen, dann soltlest Du deinen originalen Code verbauen können.

Beste Grüße,
Christian

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

Ohne Rang
18 Beiträge
A. Ufer Als Antwort am 26 Jan. 2012 11:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So, habe jetzt mein ItemAdded via Elements.xml synchron gemacht und meinen originalen Code verwendet.

Es laeuft!

Danke fuer deine Geduld, Christian :)

Gruss,

Andre

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 26 Jan. 2012 11:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich meinte natürlich oben das Added-Event - da hatte ich die Augen noch nicht ganz auf... ;-)

Schön das es geklappt hat.

Beste Grüße,
Christian

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