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.




Probleme mit Data View + Gruppierung + Totals(MAX/MIN)

Unbeantwortet Dieser Beitrag hat 8 Antworten

Ohne Rang
5 Beiträge
BastianB erstellt 18 Juni 2013 17:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen, 

ich habe vor kurzem einen DataView angelegt der von alle Projektseiten (Project Task) eine Übersicht erstellt, was auch 1a funktioniert. Da alle Projekte einen eindeutigen Namen haben, wird anhand diesem die Gruppierung gebildet. Jetzt würden wir aber gerne - bei den Listen ist es kein Problem - wenn die Gruppierung minimiert ist, das min. StartDatum und das max. DueDate direkt in der Spalte anzeigen. 

Das bekomme ich allerdings nicht hin und zwar aus mehreren Gründen. 

Zum einen wenn ich mit dem Befehl ddwrt:Max(@DueDate) versuche bekomme ich einen negativen Integerwert und zum anderen, wenn ich versuche das Datum so zu casten das es in der richtigen Form ist sprich 6/30/13 (US) kann ich den Max Befehl nicht darauf anwenden. 

Komme mir langsam aber sicher auch wenig blöd vor, da in Listen direkt im Sharepoint solche Min/Max - Angaben ne Sache von ner Minute ist, aber im Sharepoint Designer bin ich am verzweifeln :-( 

Habe leider im Moment keine Bilder zur Hand da ich nicht mehr auf der Arbeit bin, aber ich hoffe es geht halbwegs hervor was ich möchte - bin für jeden Tipp extremst dankbar^^ 

 

P.s. hat jemand schon einmal von einer Möglichkeit gehört den vorhandenen Gantt-View auf eine DataView Liste anzuwenden - hier bin ich ebenfalls am verzweifeln^^

 

Vorab vielen Dank & einen sonnigen Abend! 

 

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Juni 2013 08:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du kannst Dir in einer beliebigen Liste eine passende Ansicht anlegen und diese dann in SharePoint Designer ansehen. Dort dann einfach die Ansicht markieren und oben im Reiter "Entwurf" auf "XSLT anpassen" klicken. Jetzt kannst Du Dir das XSLT anschauen, das Microsoft dafür verwendet (und die zugrundeliegende CAML-Abfrage).

Wenn Du für die Liste, die in der Datenansicht angezeigt werden soll, eine passende Ansicht erzeugst (auch eine Gantt-Ansicht) und diese Liste dann als Webpart auf einer Seite einfügst, kannst Du in den Webparteinstellungen jede Ansicht der Liste auswählen (auch die Gantt-Ansicht). Die Ansicht wird dabei sozusagen in das Webpart kopiert und die Originalansicht der Liste kann auch wieder gelöscht werden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
5 Beiträge
BastianB Als Antwort am 19 Juni 2013 09:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

vorab vielen Dank für Deine Tipps, werde ich gleich versuchen.

Bei deinem zweiten Punkt verstehe ich nicht genau wie das funktionieren soll. Zum einen wird mir die gantt-Ansicht im SPD nicht angezeigt und irgendwie verstehe ich nicht wie ich meinem DataView dann tatsächlich einen View einstelle. Hast oder weißt Du ob es irgendwo eine gute Anleitung/Tutorial dazu gibt?

Grüße & guten Start in den Tag

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Juni 2013 10:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist im Grunde ganz einfach: Du gehst einfach im Browser auf eine beliebige Seite, auf der Du Webparts einfügen kannst. Klicke auf "Seite bearbeiten" und bei den webparts steht Dir auch jede Liste der Website zur Verfügung. Bei einem so eingefügten Webpart kann man in den webparteinstellungen eine Ansicht der Quell-Liste auswählen.

Danach kannst Du diese Seite auch in SharePoint Designer öffnen und weiter an der Ansicht frickeln ;-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
5 Beiträge
BastianB Als Antwort am 19 Juni 2013 10:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Oha ich glaub ich stehe auf dem Schlauch^^

Bei den "normalen" WebParts ist mir das klar, aber bist Du sicher dass das auch tatsächlich in einem Dataview Webpart funktioniert.

Nur zum Hintergrund ich hole von allen Subsiten die Project tasks und stelle diese in einer Liste via DataView Webpart da und entweder bin ich blind oder sehe den Wald vor lauter Bäumen nicht :D Dort gibt es jedenfalls für mich nicht die Möglichkeit großartig an dem View zu arbeiten.

vorab Danke für deine Geduld :-)

Ohne Rang
5 Beiträge
BastianB Als Antwort am 19 Juni 2013 10:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

noch einmal kurz zum ersten Teil meiner Frage.

ich habe mir die Gruppierung nun in einer Beispielliste angeschaut und da besteht die berechnung aus einem ganzen Haufen an Code

=========================================================

<td class="ms-vb2">
       <xsl:variable name="fieldName" select="@Name"/>
       <xsl:if test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]">
         <xsl:variable name="title">
            <xsl:choose>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='COUNT'">
              <xsl:value-of select="'Count'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='SUM'">
              <xsl:value-of select="'Sum'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='AVG'">
              <xsl:value-of select="'Average'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MAX'">
              <xsl:value-of select="'Maximum'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MIN'">
              <xsl:value-of select="'Minimum'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='STDEV'">
              <xsl:value-of select="'Std Deviation'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='VAR'">
              <xsl:value-of select="'Variance'"/>
            </xsl:when>
              <xsl:otherwise>
              <xsl:value-of select="'Count'"/>
            </xsl:otherwise>
            </xsl:choose>
        </xsl:variable>
         <xsl:variable name="aggregateLevel">
            <xsl:choose>
              <xsl:when test="$GroupLevel = 1">.agg</xsl:when>
              <xsl:when test="$GroupLevel = 2">.agg2</xsl:when>
              <xsl:otherwise/>
            </xsl:choose>
        </xsl:variable>
         <xsl:variable name="aggregateName">
            <xsl:choose>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='COUNT'">
              <xsl:value-of select="concat(@Name, '.COUNT', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='SUM'">
              <xsl:value-of select="concat(@Name, '.SUM', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='AVG'">
              <xsl:value-of select="concat(@Name, '.AVG', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MAX'">
              <xsl:value-of select="concat(@Name, '.MAX', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MIN'">
              <xsl:value-of select="concat(@Name, '.MIN', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='STDEV'">
              <xsl:value-of select="concat(@Name, '.STDEV', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='VAR'">
              <xsl:value-of select="concat(@Name, '.VAR', $aggregateLevel)"/>
            </xsl:when>
              <xsl:otherwise>
              <xsl:value-of select="concat(@Name, '.COUNT', $aggregateLevel)"/>
            </xsl:otherwise>
            </xsl:choose>
        </xsl:variable>
         <xsl:if test="not($title='')">
          <nobr>
            <b>
              <xsl:value-of select ="$title"/>= <xsl:value-of select="
$Rows/@*[name()=$aggregateName]"/>
            </b>
          </nobr>
        </xsl:if>
      </xsl:if>
    </td>
<td class="ms-vb2">
       <xsl:variable name="fieldName" select="@Name"/>
       <xsl:if test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]">
         <xsl:variable name="title">
            <xsl:choose>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='COUNT'">
              <xsl:value-of select="'Count'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='SUM'">
              <xsl:value-of select="'Sum'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='AVG'">
              <xsl:value-of select="'Average'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MAX'">
              <xsl:value-of select="'Maximum'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MIN'">
              <xsl:value-of select="'Minimum'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='STDEV'">
              <xsl:value-of select="'Std Deviation'"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='VAR'">
              <xsl:value-of select="'Variance'"/>
            </xsl:when>
              <xsl:otherwise>
              <xsl:value-of select="'Count'"/>
            </xsl:otherwise>
            </xsl:choose>
        </xsl:variable>
         <xsl:variable name="aggregateLevel">
            <xsl:choose>
              <xsl:when test="$GroupLevel = 1">.agg</xsl:when>
              <xsl:when test="$GroupLevel = 2">.agg2</xsl:when>
              <xsl:otherwise/>
            </xsl:choose>
        </xsl:variable>
         <xsl:variable name="aggregateName">
            <xsl:choose>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='COUNT'">
              <xsl:value-of select="concat(@Name, '.COUNT', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='SUM'">
              <xsl:value-of select="concat(@Name, '.SUM', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='AVG'">
              <xsl:value-of select="concat(@Name, '.AVG', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MAX'">
              <xsl:value-of select="concat(@Name, '.MAX', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='MIN'">
              <xsl:value-of select="concat(@Name, '.MIN', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='STDEV'">
              <xsl:value-of select="concat(@Name, '.STDEV', $aggregateLevel)"/>
            </xsl:when>
              <xsl:when test="$XmlDefinition/Aggregations/FieldRef[@Name=$fieldName]/@Type='VAR'">
              <xsl:value-of select="concat(@Name, '.VAR', $aggregateLevel)"/>
            </xsl:when>
              <xsl:otherwise>
              <xsl:value-of select="concat(@Name, '.COUNT', $aggregateLevel)"/>
            </xsl:otherwise>
            </xsl:choose>
        </xsl:variable>
         <xsl:if test="not($title='')">
          <nobr>
            <b>
              <xsl:value-of select ="$title"/>= <xsl:value-of select="
$Rows/@*[name()=$aggregateName]"/>
            </b>
          </nobr>
        </xsl:if>
      </xsl:if>
    </td>

=========================================================

Wenn ich mir nun den CodeAbschnitt vom Footer anschaue bin ich mit meinem Latein schon am Ende, da ich mit XML auch im Moment nicht wirklich viel anfangen kann. Wollte es mir einfach machen und einfach die entsprechenden Klassen austauschen, aber das wäre wohl zu einfach gewesen ;-)

Wie geht man am besten vor um sich in dem Code zurecht zu finden - XML lernen oder kann man sich noch anders behelfen?

 

Hier noch der Code aus dem footer:

=========================================================

<td class="ms-gb" colspan="99">
     <xsl:choose>
      <xsl:when test="$groupid='0' or $groupid='9'"></xsl:when>
      <xsl:when test="$groupid='1'">
       <xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text>
      </xsl:when>
      <xsl:when test="$groupid='2'">
       <xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text>
       <xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text>
       <xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text>
       <xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text>
      </xsl:otherwise>
     </xsl:choose>
     <b>Anzahl : <xsl:value-of select="count($nodeset)" />
     </b>
    </td>
   </tr>

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Juni 2013 12:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="BastianB"]Wie geht man am besten vor um sich in dem Code zurecht zu finden - XML lernen oder kann man sich noch anders behelfen?[/quote]

Wenn Du öfter solche Anpassungen machen möchtest (oder mußt), wirst Du um etwas Lernen nicht herumkommen. Das kann man aber auch an vielen anderen Stellen gebrauchen z.B. für die Anpassung der Suchergebnisse oder für die Rendering Templates in SharePoint 2013 (und natürlich auch außerhalb von SharePoint).

Und wie oben schon angemerkt, solltest Du Dir auch die CAML-Abfrage ansehen. Diese Aggregierungen werden dort schon gemacht und die aggregierten Werte stehen in der Datenquelle zur Verfügung.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
5 Beiträge
BastianB Als Antwort am 19 Juni 2013 14:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielen Dank für Dein bemühen, aber um mal "kurz" einen Anfangstermin & Endtermin zu hinterlegen ist jetzt schon zuviel Zeit drauf gegangen und Land ist immer noch nicht in sicht - fragt sich ob es sinnvoll ist das Ganze weiter zuverfolgen.

Ich kann mir zwar in einer Liste die CAML-Abfrage anschauen, aber wie diese dann im DataView zu nutzen ist habe ich keine Ahnung, so wie ich nun in diversen "Anleitungen" gesehen habe ist der Aufbau des DataView und der ListViews sowas von verschieden ....

Naja werde jetzt noch versuchen eine Stunde rum zu wurschteln, dann ist es aber auch gut

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Juni 2013 14:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn man die notwendige Übung (durch jahrelange Erfahrung) hat, sind solche Anpassungen oft eine Sache von wenigen Klicks. Für einen Anfänger ist das aber nicht zu schaffen, zumal sehr viele Technologien beteiligt sind, von denen man zumindest eine Ahnung haben sollte (HTML, CSS, XSL, JavaSCcipt, .NET, usw.), von daher kann ich Deinen Frust verstehen (ich habe auch mal angefangen). Im Übrigen gilt das natürlich nicht nur für SharePoint, sondern für viele komplexe Systeme...

Viele Grüße
Andi
af @ evocom de
Blog