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.




Stichwort: Conditional Format > Sharepoint Designer weicht bei Darstellung von der im Browser ab.

Unbeantwortet Dieser Beitrag hat 20 Antworten

Ohne Rang
9 Beiträge
Daniel S erstellt 5 Mai 2011 23:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo in die Runde,

mein "Einstand" beginnt gleich mit einer Frage, auf die ich keine Antwort weiß.

Ich habe eine Liste, mit 2 Spalten.

"Begin" + "Ende"

Jetzt habe ich verschiedene Daten (Datum) eingefügt und möchte diese in der Ansicht farbig kennzeichnen.

Jetzt die Problematik:

Alles, was in 14 Tagen endet soll rot sein.

Was in 30 Tagen endet soll Gelb sein und der Rest egal.

 

Ich habe mir im Sharepoint ne eigene Ansicht erstllt und diese im Sharepoint mittels bedingter Formatierung geändert.

Funktioniert im SPD prima. Leider nicht im Browser. Da ist dann alles z.B. grün.

So in etwa stark vereinfacht sieht meine Syntax bisher aus:

 

D ist das Enddatum und H ist heute ($today).



<xsl:if test="D – H &lt;= 14"> Hintergrundfarbe Rot </xsl:if>

<xsl:if test="(D –H &gt; 14) and (D-H &lt;= 30)">Hintergrundfarbe Gelb</xsl:if>

<xsl:if test="D - H &gt; 30"> Hintergrundfarbe Grün </xsl:if>

Wie gesagt im SPD funktioniert es prima. Aber im Browser nicht.

Woran kann das liegen?

 

Meine Idee wäre jetzt noch eine Spalte einzufügen und ggf. mit berechnenden Feldern zu arbeiten.

 

LG

Daniel

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Mai 2011 08:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schau mal im Code nach. Dein <xsl:if> liegt innerhalb eines <xsl:template>. Bei diesem gibt es ein ddwrt:ghost-Attribut. Wenn man das leer macht (oder ganz löscht), funktioniert alles.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 6 Mai 2011 08:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

danke für den Tipp. Ich werd dann man nachsehen.

P.S. Mir fällt auf, bevor ich hier gelandet bin, stieß ich auch schon auf deinen Blog. Manchmal dreht man eben auf der Lösungssuche im Web seine Kreise ... ;)

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Mai 2011 08:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In meinem Blog gibt es auch einen Beitrag zu genau diesem Thema ;-)
http://blogs.evocom.de/af/archive/2011/03/02/änderungen-am-xslt-einer-datenansicht-werden-nicht-übernommen.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
4614 Beiträge
Michael Greth Als Antwort am 6 Mai 2011 08:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schau doch mal hier rein

http://blogs.msdn.com/b/sharepointdesigner/archive/2008/02/25/filtering-and-formatting-with-date-values.aspx

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Mai 2011 08:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Moin Michael,

na, noch nicht ganz wach? ;-)

Der Artikel bezieht sich auf SharePoint 2007 und gerade in Bezug auf die Datenansichten hat sich da doch einiges geändert. Der OP schreibt ja auch, daß im Designer alles funktioniert, aber im Browser nicht. Das Problem kenne ich gut und die Lösung dazu steht oben.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
4614 Beiträge
Michael Greth Als Antwort am 6 Mai 2011 09:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andy,

>>na, noch nicht ganz wach? ;-)<<

scheint so - vielleicht sollte ich erstmal das ShareCamp weiter vorbereiten und dann Fragen beantworten :-) 

Du hattest ja schon mal geschrieben, dass du  bei SharePoint Designer 2010 und den Datenansichten so einige Probleme gefunden hast - wir müssen dazu auf dem ShareCamp unbedingt mal ein ausführliches Interview machen. 

Dank nochmal für die Korrektur

Michael

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Mai 2011 09:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Michael Greth"]Du hattest ja schon mal geschrieben, dass du  bei SharePoint Designer 2010 und den Datenansichten so einige Probleme gefunden hast - wir müssen dazu auf dem ShareCamp unbedingt mal ein ausführliches Interview machen[/quote]

Gerne. Ich habe auch einen Sessionvorschlag dazu eingereicht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 6 Mai 2011 11:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hmm danke für Eure Tipps.

Aber auf diesen Seiten kreiste ich bereits. ;)

@Andi. Der Wert ist leer.

 

folgender Link ist zwar auch interessant, bringt mich aber auch nicht weiter nicht weiter.

http://guruj.net/node/180

Denn wenn ich die Spalltentitel auf explizit setze, werden Sie mir nicht mehr angezeigt. Und wenn ich dann die Ansicht ändern will, sind diese ausgegraut.

Mit Text funktioniert es ja. Also kann es ja nur am Datumsformat liegen.  *grml*

 

So sieht es derzeit aus:

<xsl:if test="ddwrt:DateTimeTick(ddwrt:GenDisplayName(string($thisNode/@Enddatum))) - ddwrt:DateTimeTick(ddwrt:GenDisplayName(string($Today))) &gt;= 30" ddwrt:cf_explicit="1" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime">background-color: #61FC28;</xsl:if>

 

LG

Daniel
 

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Mai 2011 12:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ist das in einer deutschen Website? Dann könnte das hier helfen:
http://blogs.evocom.de/af/archive/2011/04/07/datumsvergleiche-für-bedingte-formatierungen-in-datenansichten.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 8 Mai 2011 23:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nein Andi, ist alles Englisch. Sharepoint 2010 EN + SPD 2010 EN. Mittlerweile hab ich wieder den Designer in Deutsch installiert.

Dein Blogbeitrag funktioniert auch nicht. Wie gesagt. Der Designer stellt es richtig dar.

Wenn man über eine berechnende Spalte realisiert, geht es auch. Aber so will ich es nicht. Ich möchte schon gern wissen, warum es über diesen Weg nicht geht. Zumal er ja bei Worten / Text ordnungsgemäß den Background formatiert. Nur eben beim Datum nicht. Also kann es ja nur am Datum liegen.

Irgendwie kann er es nicht richtig verarbeiten...

 

LG

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 9 Mai 2011 08:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wo genau das Problem liegt, kann ich natürlich aus der Ferne nicht sagen. Lasse Dir einfach die einzelnen Werte separat ausgeben (xsl:valu-of), dann siehst Du hoffentlich, wo's klemmt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 19 Mai 2011 16:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So. Nun steige ich ein wenig durch.

Aber ich kapier es trotzdem noch nicht.

Folgendes:

<xsl:value-of select="$thisNode/@Ende"/> ergibt: 05/18/2012

number(ddwrt:FormatDateTime(ddwrt:FormatDate(string($Today),1033,1),1033,'yyyyMMdd')) ergibt: 20110519

ddwrt:TodayIso() ergibt: 2001-05-19T14:23:09Z

Nun aber das Problem:

number(ddwrt:FormatDateTime(ddwrt:FormatDate(string($thisNode/@Ende),1033,1),1033,'yyyyMMdd'))-30 ergibt ein "falsches" Ergebnis.

Rechnerisch ist es richtg. Aber so brauche ich es nicht. =>  20120518 - 30 = 20120488

Jetzt bin ich gerade etwas ratlos. Any tips?

 

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 19 Mai 2011 16:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

vom Aufbau des Codes ist es auch richtig, weil du eine Nummer erzeugst und davon 30 abziehst

number(....) - 30

ohne es getestet oder gesucht zu haben würde ich ins Blaue schiessen und die "- 30" mit in die letzte Klammer nehmen.

Beste Grüße,
Christian

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

Ohne Rang
9 Beiträge
Daniel S Als Antwort am 19 Mai 2011 16:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Christian. Da passiert das selbe. :(

Ich meine Du hast recht. Ist ja ne Nummer. Aber wie könnte ich 2 Datumsangaben sonst vergleichen?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Mai 2011 17:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut
Es gibt eine Funktion ddwrt:DateTimeTicks(), die die Anzahl Tage seit 1.1.1900 liefert. Das ist also eine Zahl und von der kannst Du 30 abziehen. Achtung: die Funktion funktioniert nur mit englisch formatiertem Datum korrekt.
Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 20 Mai 2011 08:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hmm danke Andy. Jetzt stehe ich vorm nächsten Rästel.

Ich finde keine Möglichkeit, den Zeitstempel wieder in ein reguläres Datum zu konvertieren und auszugeben. Derzeit gibt er mir z.B. folgendes aus:

634466304000000000
634728960000000000

Bei meiner Suche im Netz komme ich immer auf alle Möglichen Seiten. z.B. asp Foren, Net Foren etc.

Auf dieser Seite habe ich im Grunde das gefunden, was ich suche:

http://www.epochconverter.com/

Leider scheint das Datum falsch zu sein. Für o.g. Zeitstempel konverti er folgendes Datum....

Assuming that this timestamp is in milliseconds:
GMT
: Wed, 20 Feb 2171 00:00:00 UTC

Als Basis hatte ich folgenden Link genutzt:

http://social.technet.microsoft.com/Forums/en/sharepoint2010customization/thread/109ae6f2-ea16-464f-978e-b565a69721a5

Zitat:

"

...

[(number(ddwrt:DateTimeTick(ddwrt:GenDisplayName(string(@End_x0020_Date)))) <= number(ddwrt:DateTimeTick(ddwrt:GenDisplayName(string($Today))))) and (number(ddwrt:DateTimeTick(ddwrt:GenDisplayName(string(@End_x0020_Date)))) >= number(ddwrt:DateTimeTick(ddwrt:GenDisplayName(string($Today))))-12096000000000)]

That number, 12096000000000, is the number of ticks in 14 days. Here's why it wasn't working for you - Ticks are different in SPD than they are in the browser. In SPD, as in Excel, a Tick is the number of days since Jan 1, 1900. In the browser, a single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond. Here's how I calculated 14 days:

Time

Ticks

millisecond

10000

second

10000000

minute

600000000

hour

36000000000

day

864000000000

14 days

12096000000000

...

" Zitat Ende

 

P.S.

Kann es ausserdem sein, das der Designer die Ticks anders rechnet als Sharepoint selber?

Denn im Sharepoint sehe ich o.g. Wert. 634728960000000000

Im Designer sehe ich: 41047

Daher wahrscheinlich auch die verschiedenen Ansichten. Das nur mal am Rande mit eingeworfen.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 20 Mai 2011 09:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich verstehe leider nicht ganz, wo jetzt genau das Problem liegt. DateTimeTick gibt wie gesagt, die Anzahl Tage zurück. Man kann also einfach z.B. 30 abziehen und erhält dann einen Wert, der dem Datum 30 Tage zurück entspricht. Mit diesen Werten kann man dann Vergleiche anstellen und entsprechende Formatierungen setzen. Den Wert selbst braucht man nicht ausgeben zu lassen, weil ohnehin niemand etwas damit anfängt.

Übrigens sollte der Designer immer dasselbe anzeigen wie der Browser. Der DEsigner enthält keinen eigenen XSLT-Prozessor. Er läßt das auch vom Server machen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 20 Mai 2011 09:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Guten Morgen Andy,

Der Designer zeigt aber nicht das selbe an. Das Problem habe aber nicht nur ich. ;)

Meine Frage konkret. ziehe ich nun, wie Du schreibst 30 Tage ab oder den umgerechneten Wert?  864000000000 * 30 = 25920000000000

number(ddwrt:DateTimeTick(ddwrt:GenDisplayName(string($Today))))-30) oder

number(ddwrt:DateTimeTick(ddwrt:GenDisplayName(string($Today))))-25920000000000)

Der Hintergrund der Ausgabe war ja nur, das ich nachvollziehen kann, obs Datum überhaupt stimmt. Sorry, wenn ich mich schwer tue und ihr soviel Geduld aufbringen müsst. Aber ich bin kein Entwickler/ Coder und habe mit Code, und sei es "nur" XML, so meine Verständnisschwierigkeiten.

Will genau heissen: Im Grunde stehe ich mit Quellcode auf Kriegsfuss. ;)

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 20 Mai 2011 10:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du ziehst einfach nur 30 ab. Wie oben geschrieben liefert DateTimeTick eine Anzahl Tage, d.h. 1 entspricht einem Tag.

[quote user="Daniel S"]Der Designer zeigt aber nicht das selbe an[/quote]

Dann schaue mal beim <xsl:template> in dem Dein Code liegt. Falls es ein ddwrt:ghost Attribut hat, lösche das.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Daniel S Als Antwort am 20 Mai 2011 12:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Folgenden Tag gelöscht: ddwrt:ghost=""

Immernoch die unterschiedlichen Angaben. :(