Εμφάνιση περιεχομένου αποτελέσματα τμήμα Web ερωτήματος σε ένα πλέγμα / Πίνακας

Επισκόπηση και στόχος

Από το κουτί, MOSS’ Τμήμα Web ερωτήματος περιεχομένου (CQWP) εμφανίζει τα αποτελέσματα σε μορφή λίστας, παρόμοια με τα αποτελέσματα αναζήτησης. Είναι επίσης δυνατό να εμφανίσετε τα αποτελέσματα σε μια μορφή πλέγματος (ήτοι. Μορφή πίνακα HTML). Πλέγμα μορφές είναι καλύτερα σε ορισμένες περιπτώσεις. Περιγράφει τον τρόπο για να επιτευχθεί αυτό το αποτέλεσμα σε αυτό το άρθρο.

Επιχειρηματικό σενάριο

Έχω εργαστεί με έναν πελάτη για ένα ξεδίπλωμα ΒΡΎΑ ολόκληρη την επιχείρηση. Έχουμε σχεδιάσει το τους ταξονομία όπως ότι έργα είναι πρώτης κατηγορίας πολίτες στην ιεραρχία και έχουν τη δική τους τοποθεσία ανώτατου επιπέδου. Διαχειριστές έργου διατηρεί singleton λίστα πληροφοριών σύνοψης έργου, όπως με τίτλο, προϋπολογισμού, αναμενόμενη ημερομηνία ολοκλήρωσης, υπόλοιπα κονδύλια και άλλα πεδία σύνοψης τύπου. Από τον "Σίνγκλετον" Θέλω να πω μια προσαρμοσμένη λίστα SharePoint εγγυημένη για να περιέχουν μόνο ένα στοιχείο. Απλουστευτικά, μοιάζει με αυτό:

εικόνα

Η τεχνική προσέγγιση είναι πολύ το ίδιο όπως περιγράφεται Εδώ (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Το CQWP χρησιμοποιεί ένας μετασχηματισμός XSL να εκπέμπουν HTML για το πρόγραμμα περιήγησης για την απόδοση.

Οραματίζομαι πάντα το αποτέλεσμα Βουτήξτε το XSL επειδή XSL είναι ένας εφιάλτης. Εδώ είναι το μου το επιθυμητό αποτέλεσμα:

εικόνα

HTML όπως αυτό δημιουργεί αυτό το αποτέλεσμα:

<HTML>
 <οργανισμός>
 <κέντρο>
 <Πίνακας σύνορα= 1>

<!-- Ετικέτες-->
 <TR χρώμα φόντου= μπλε>
 <TD><γραμματοσειρά χρώμα= λευκό><β>Όνομα έργου</β></γραμματοσειρά></TD>
 <TD Στοίχιση= δεξιά><γραμματοσειρά χρώμα= λευκό><β>Πλήρης ημερομηνία</β></γραμματοσειρά></TD>
 <TD Στοίχιση= δεξιά><γραμματοσειρά χρώμα= λευκό><β>Προϋπολογισμού</β></γραμματοσειρά></TD>
 <TD Στοίχιση= δεξιά><γραμματοσειρά χρώμα= λευκό><β>Πραγματική δαπάνη</β></γραμματοσειρά></TD>
 <TD><γραμματοσειρά χρώμα= λευκό><β>Συνολική κατάσταση</β></γραμματοσειρά></TD>
 </TR>

<TR>
 <TD>Αίθουσα πληροφορικής εκ νέου το σύρμα.</TD>
 <TD Στοίχιση= δεξιά>02/01/08</TD>
 <TD Στοίχιση= δεξιά>22,500.00</TD>
 <TD Στοίχιση= δεξιά>19,000.00</TD>
 <TD>Σε εξέλιξη</TD>
 </TR>

<TR>
 <TD>Παροχή διακομιστές για αναβάθμιση SQL</TD>
 <TD Στοίχιση= δεξιά>04/01/08</TD>
 <TD Στοίχιση= δεξιά>7,500.00</TD>
 <TD Στοίχιση= δεξιά>0.00</TD>
 <TD>Προγραμματιστεί</TD>
 </TR>

</Πίνακας>
 </κέντρο>
 </οργανισμός>
</HTML>

Προσέγγιση

Ακολουθήστε τα παρακάτω βήματα για να δημιουργήσετε το πλέγμα:

  1. Προσδιορίζει τα συστατικά στοιχεία του πλέγματος (σειρές/στήλες).
  2. Καθορίσει και να δημιουργήσετε στήλες τοποθεσίας αναγκαία.
  3. Δημιουργία υποδικτυακοί τόποι για τα έργα και τις λίστες singleton.
  4. Προσθέσετε το CQWP σε μια σελίδα web και να ρυθμίσετε τις παραμέτρους για την αναζήτηση λιστών.
  5. Τροποποίηση της CQWP XML για να συγκεντρώσει τις πρόσθετες στήλες.
  6. Τροποποιήσετε το XSL για τη δημιουργία ενός πίνακα.

Πάω να επικεντρωθεί σε αριθμό έξι. Αριθμοί μία μέσα από τέσσερις είναι απλή και κάτι που κάθε χρήστη της CQWP έχει ήδη γίνει. Αριθμός πέντε έχει καλά τεκμηριωμένο από άλλους συμπεριλαμβανομένου αυτό εξαντλητικό άρθρο εμφόρτου οθόνη-shot από MSDN Εδώ (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) και του Σολομώντα Heather blog Εδώ (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Καρύδια και τα μπουλόνια

Αρχίζουν και να εφαρμόσει τα βήματα ένα έως πέντε σύμφωνα με την τεκμηρίωση του MSDN και του Σολομώντα Heather άρθρο.

Σε αυτό το σημείο, έχετε προσθέσει στη σελίδα σας CQWP και να έχετε σας <CommonViewFields> ρυθμιστεί ανάλογα με τις ανάγκες.

Ακολουθώντας τα συνήθη βήματα, Έχω αυτά τα ενδιάμεσα αποτελέσματα:

1. Δημιουργήστε έναν τύπο περιεχομένου, μια templatized προσαρμοσμένη λίστα για αυτόν τον τύπο περιεχομένου και δύο τοποθεσίες. Εδώ είναι ο τύπος περιεχομένου:

εικόνα

Εδώ είναι η δομή του site:

εικόνα

2. Προσθέστε τα CQWP μετά τη δημιουργία μου έργο δευτερεύουσες τοποθεσίες και οι μονήρεις συνοπτικοί κατάλογοι έργου:

εικόνα

3. Προσθέστε όλες τις πρόσθετες πληροφορίες που θέλω μέσω της <CommonViewFields>:

        <ιδιοκτησίας Όνομα="CommonViewFields" Τύπος="συμβολοσειρά">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</ιδιοκτησίας>

Σημειώστε ότι έπρεπε να κρατήσει όλα τα πεδία ιδιοτήτων σε μία γραμμή, ή αυτό δεν θα μπορούσε να λειτουργήσει (CQWP θα μου πείτε ότι το ερώτημα επιστρέφει κανένα στοιχείο δεν).

4. Σε αυτό το σημείο, είμαστε έτοιμοι να προχωρήσουμε πέρα από το άρθρο του MSDN και κτυπήματος σε άρθρο της Heather του Σολομώντα. Ακολουθήστε τα βήματα που αρχίζουν κοντά στο βήμα #5 για να δημιουργήσετε μια προσαρμοσμένη / unghosted έκδοση του ItemStyle.xsl. Ακολουθώ τις συμβουλές της ερείκης, επάνω μέσω βήμα 11 και να πάρετε αυτά τα ενδιάμεσα αποτελέσματα:

4.1: Όνομα μου πρότυπο XSL ως εξής:

<XSL:πρότυπο όνομα = "πλέγμα" ταιριάζει = "γραμμή[@Style = "Πλέγμα"]" λειτουργία = "itemstyle">

Μπορώ να τροποποιήσω την πρότεινε επίσης ελαφρώς <XSL:για-κάθε …> με την προσθήκη ενός <br /> ετικέτα για να παρέχουν μια λίστα με τα καθαρότερα:

    <XSL:για-κάθε Επιλέξτε="@*">
      P:<XSL:αξία των Επιλέξτε="Όνομα()" /><br/>
    </XSL:για-κάθε>

4.2: Μπορώ να τροποποιήσω το τμήμα web, μεταβείτε στην εμφάνιση και επιλέξτε μου πλέγμα"" στυλ:

εικόνα

Εφαρμόσετε την αλλαγή και ιδού το αποτέλεσμα:

εικόνα

Μπορούμε να δούμε από τα παραπάνω ότι τα πεδία θέλουμε (Όνομα έργου, δαπάνη, κατάσταση, κλπ) είναι διαθέσιμα για να εκπέμπουμε το HTML. Δεν είναι μόνο ότι, αλλά μπορούμε να δούμε τα ονόματα με τα οποία εμείς πρέπει να παραπέμπει σε αυτές τις στήλες στο αμέσως την XSL. Για παράδειγμα, αναφοράς κατάστασης του έργου ως "Project_x005F_x0020_Name".

Σε αυτό το σημείο, θα αναχωρήσουμε από blog ερείκης και από τους ώμους των γιγάντων αυτών, Θα προσθέσω δικό μου μικρό κομμάτι.

ContentQueryMain.xsl

ΣΗΜΕΊΩΣΗ: Όταν κάνετε αλλαγές σε τόσο ContentQueryMain.xsl όσο και ItemStyle.xsl, θα πρέπει να ελέγξετε αυτά τα αρχεία πίσω στο προτού να δείτε το αποτέλεσμα των αλλαγών σας.

Για σκοπούς λήψης πλέγμα, ΒΡΎΑ χρησιμοποιεί δύο διαφορετικά αρχεία XSL για να παράγει τα αποτελέσματα που βλέπουμε από ένα CQWP. Για τη δημιουργία το προηγούμενο κομμάτι της παραγωγής, τροποποιημένη ItemStyle.xsl. MOSS στην πραγματικότητα χρησιμοποιεί ένα άλλο αρχείο XSL, ContentQueryMain.xsl να σε συνδυασμό με ItemStyle.xsl για τη δημιουργία του το HTML. Όπως υποδηλώνει το όνομά, ContentQueryMain.xsl είναι η κύρια"" XSL που ελέγχει τη συνολική ροή της μετάφρασης. Την αναπροσεγγίζει μέσω του όλα τα στοιχεία που βρέθηκαν και τις περνάει μία προς μία για πρότυπα σε ItemStyle.xsl. Θα τροποποιήσουμε ItemStyle.xsl να δημιουργήσει το άνοιγμα <Πίνακας> ετικέτα πριν εκπέμπουν στην πρώτη γραμμή των δεδομένων και το κλείσιμο <Πίνακας> ετικέτα μετά την τελευταία γραμμή που εκπέμπουν. Για να επιτευχθεί αυτό, ContentQueryMain.xsl έχει τροποποιηθεί για να περάσει δύο παραμέτρους μας δίκτυο"" πρότυπο ItemStyle.xsl, «τελευταία γραμμή" και "τρέχουσα γραμμή". ItemStyle.xsl χρησιμοποιεί αυτά να εκπέμπουν υπό όρους την αναγκαία Ετικέτες.

Χρησιμοποιώντας την τεχνική του Σολομώντα Heather, εντοπίζουμε ContentQueryMain.xsl. Βρίσκεται στο ίδιο μέρος με ItemStyle.xsl. Αυτό το πλάνο οθόνη θα πρέπει να βοηθήσει:

εικόνα

Πρέπει να κάνετε τις ακόλουθες αλλαγές:

  • Τροποποιήσετε ένα πρότυπο xsl, "CallItemTemplate" που επικαλείται στην πραγματικότητα μας πρότυπο πλέγμα σε ItemStyle.xsl. Θα περάσουμε δύο παραμέτρους στο πλέγμα πρότυπο έτσι ώστε θα έχει τα στοιχεία που χρειάζεται για την παραγωγή υπό όρους άνοιγμα και κλείσιμο <Πίνακας> Ετικέτες.
  • Τροποποιήσετε ένα άλλο κομμάτι της ContentQueryMain.xsl, που καλεί το CallItemTemplate"" να δώσετε ένα "LastRow" παράμετρος έτσι ότι LastRow μπορεί να περάσει μας πρότυπο πλέγμα.

Εντοπίστε το πρότυπο με το όνομα "OuterTemplate.CallItemTemplate" προσδιορίζονται από τη συμβολοσειρά:

  <XSL:πρότυπο Όνομα="OuterTemplate.CallItemTemplate">

Αντικαταστήσει το σύνολο πρότυπο ως εξής:

  <XSL:πρότυπο Όνομα="OuterTemplate.CallItemTemplate">
    <XSL:Παράμ Όνομα="CurPosition" />

    <!--
      Προσθέστε το "LastRow" παράμετρος.
      Χρησιμοποιούμε μόνο όταν το στοιχείο στυλ πέρασμα σε είναι "Πλέγμα".
    -->
    <XSL:Παράμ Όνομα="LastRow" />

    <XSL:Επιλέξτε>
      <XSL:Όταν δοκιμή="@Style = 'NewsRollUpItem'">
        <XSL:εφαρμογή προτύπων Επιλέξτε="." λειτουργία="itemstyle">
          <XSL:με Παράμ Όνομα="EditMode" Επιλέξτε="$cbq_iseditmode" />
        </XSL:εφαρμογή προτύπων>
      </XSL:Όταν>
      <XSL:Όταν δοκιμή="@Style = 'NewsBigItem'">
        <XSL:εφαρμογή προτύπων Επιλέξτε="." λειτουργία="itemstyle">
          <XSL:με Παράμ Όνομα="CurPos" Επιλέξτε="$CurPosition" />
        </XSL:εφαρμογή προτύπων>
      </XSL:Όταν>
      <XSL:Όταν δοκιμή="@Style = 'NewsCategoryItem'">
        <XSL:εφαρμογή προτύπων Επιλέξτε="." λειτουργία="itemstyle">
          <XSL:με Παράμ Όνομα="CurPos" Επιλέξτε="$CurPosition" />
        </XSL:εφαρμογή προτύπων>
      </XSL:Όταν>

      <!--
              Περάσει την τρέχουσα θέση και lastrow στο πρότυπο itemstyle.xsl πλέγμα.
              ItemStyle.xsl θα χρησιμοποιήσω που να εκπέμπει το άνοιγμα και κλείσιμο <Πίνακας> Ετικέτες.
      -->
      <XSL:Όταν δοκιμή="@Style = "Πλέγμα"">
        <XSL:εφαρμογή προτύπων Επιλέξτε="." λειτουργία="itemstyle">
          <XSL:με Παράμ Όνομα="CurPos" Επιλέξτε="$CurPosition" />
          <XSL:με Παράμ Όνομα="Το τελευταίο" Επιλέξτε="$LastRow" />
        </XSL:εφαρμογή προτύπων>
      </XSL:Όταν>

      <XSL:διαφορετικά>
        <XSL:εφαρμογή προτύπων Επιλέξτε="." λειτουργία="itemstyle">
        </XSL:εφαρμογή προτύπων>
      </XSL:διαφορετικά>
    </XSL:Επιλέξτε>
  </XSL:πρότυπο>

Τα σχόλια που περιγράφουν το σκοπός των αλλαγών.

Φυσικά, το OuterTemplate.CallItemTemplate"" ίδια καλείται από ένα άλλο πρότυπο. Εντοπίστε το πρότυπο από την αναζήτηση αυτή τη συμβολοσειρά κειμένου:

<XSL:πρότυπο Όνομα="OuterTemplate.Body">

Μετακινηθείτε τις οδηγίες στο OuterTemplate.Body και την εισαγωγή της παραμέτρου LastRow ως εξής (εμφανίζεται ως ένα σχόλιο με πλάγια γράμματα):

<XSL:κλήση-πρότυπο Όνομα="OuterTemplate.CallItemTemplate">
  <XSL:με Παράμ Όνομα="CurPosition" Επιλέξτε="$CurPosition" />
  <!-- Εισαγάγετε την παράμετρο LastRow. -->
  <XSL:με Παράμ Όνομα="LastRow" Επιλέξτε="$LastRow"/>
</XSL:κλήση-πρότυπο>

Μετά από όλα αυτά, έχουμε τελικά τα πράγματα που έχει συσταθεί σωστά, έτσι ώστε να μπορεί να εκπέμψει μας ItemStyle.xsl <Πίνακας> Ετικέτες στο σωστό μέρος.

ItemStyle.Xsl

ΣΗΜΕΊΩΣΗ: Και πάλι, Ελέγξτε σε ItemStyle.xsl μετά τη καθιστώντας οποιεσδήποτε αλλαγές, ώστε να μπορείτε να δείτε το αποτέλεσμα αυτών των αλλαγών.

Έχουμε δύο καθήκοντα εδώ:

  • Αντικαταστήσει το ολόκληρο πλέγμα πρότυπο. Μπορείτε αντίγραφο/κόλλα από κάτω.
  • Προσθέστε μερικές mumbo jumbo υπάγονται στον ορισμό του προτύπου που επιτρέπει "formatcurrency" πρότυπο λύνω. (Μπορείτε να πείτε ότι έχω μια αδύναμη λαβή για XSL).

Πρώτη, κοντά στην κορυφή του ItemStyle.xsl, Προσθέστε αυτή τη γραμμή:

  <!-- Μερικές mumbo jumbo που μας επιτρέπει να εμφανίσετε U.S. νόμισμα. -->
  <XSL:δεκαδικό-format Όνομα="προσωπικό" ψηφίο="D" />

  <XSL:πρότυπο Όνομα="Προεπιλογή" αγώνα="*" λειτουργία="itemstyle">

Σημείωση ότι θα προστεθεί άμεσα πριν την <XSL:πρότυπο όνομα = "προεπιλεγμένη" …> Ορισμός.

Επόμενη, πάω πίσω για να μας πρότυπο πλέγμα. Αντικαταστήστε το ολόκληρο πλέγμα πρότυπο με τον παρακάτω κώδικα. Αυτό είναι πολύ καλά σχολίασε, αλλά μην διστάσετε να μου e-mail ή να αφήνουν σχόλια στο blog μου, αν έχετε ερωτήσεις.

  <XSL:πρότυπο Όνομα="Πλέγμα" αγώνα="Σειρά[@Style = "Πλέγμα"]" λειτουργία="itemstyle">

    <!--
      ContentMain.xsl περνάει CurPos και τελευταίο.
      Χρησιμοποιούμε αυτά να εκπέμπουν υπό όρους το άνοιγμα και κλείσιμο <Πίνακας> Ετικέτες.
    -->
    <XSL:Παράμ Όνομα="CurPos" />
    <XSL:Παράμ Όνομα="Το τελευταίο" />

    <!-- Τις ακόλουθες μεταβλητές είναι χωρίς τροποποιήσεις από το πρότυπο ItemStyle.xsl -->
    <XSL:μεταβλητή Όνομα="SafeImageUrl">
      <XSL:κλήση-πρότυπο Όνομα="OuterTemplate.GetSafeStaticUrl">
        <XSL:με Παράμ Όνομα="UrlColumnName" Επιλέξτε="«ImageUrl ενός»"/>
      </XSL:κλήση-πρότυπο>
    </XSL:μεταβλητή>
    <XSL:μεταβλητή Όνομα="SafeLinkUrl">
      <XSL:κλήση-πρότυπο Όνομα="OuterTemplate.GetSafeLink">
        <XSL:με Παράμ Όνομα="UrlColumnName" Επιλέξτε="«LinkUrl»"/>
      </XSL:κλήση-πρότυπο>
    </XSL:μεταβλητή>
    <XSL:μεταβλητή Όνομα="DisplayTitle">
      <XSL:κλήση-πρότυπο Όνομα="OuterTemplate.GetTitle">
        <XSL:με Παράμ Όνομα="Τίτλος" Επιλέξτε="@Title"/>
        <XSL:με Παράμ Όνομα="UrlColumnName" Επιλέξτε="«LinkUrl»"/>
      </XSL:κλήση-πρότυπο>
    </XSL:μεταβλητή>
    <XSL:μεταβλητή Όνομα="LinkTarget">
      <XSL:Αν δοκιμή="@OpenInNewWindow = "True"" >_blank</XSL:Αν>
    </XSL:μεταβλητή>

    <!--
      Εδώ μπορούμε να ορίσουμε μια μεταβλητή, "tableStart".  Αυτό που περιέχει τον κώδικα HTML που χρησιμοποιούμε για να ορίσουμε το άνοιγμα του πίνακα, καθώς και τις ετικέτες στηλών.  Σημειώστε ότι εάν CurPos = 1, περιλαμβάνει το HTML σε μια ετικέτα CDATA.
      Διαφορετικά, θα είναι άδειο.

      Η τιμή του tableStart είναι εκπέμπονται κάθε φορά ItemStyle καλείται μέσω ContentQueryMain.xsl.
    -->
    <XSL:μεταβλητή Όνομα="tableStart">
      <XSL:Αν δοκιμή="$CurPos = 1">
        <![CDATA[
        <τραπέζι σύνορα = 1>
          <χρώμα φόντου TR = "μπλε">
            <TD><χρώμα γραμματοσειράς = "λευκό"><β>Όνομα έργου</β></γραμματοσειρά></TD>
            <Στοίχιση TD = "δεξιά"><χρώμα γραμματοσειράς = "λευκό"><β>Πλήρης ημερομηνία</β></γραμματοσειρά></TD>
            <Στοίχιση TD = "δεξιά"><χρώμα γραμματοσειράς = "λευκό"><β>Προϋπολογισμού</β></γραμματοσειρά></TD>
            <Στοίχιση TD = "δεξιά"><χρώμα γραμματοσειράς = "λευκό"><β>Πραγματική δαπάνη</β></γραμματοσειρά></TD>
            <TD><χρώμα γραμματοσειράς = "λευκό"><β>Συνολική κατάσταση</β></γραμματοσειρά></TD>
          </TR>
        ]]>
      </XSL:Αν>
    </XSL:μεταβλητή>

    <!--
      Μια άλλη μεταβλητή, tableEnd ορίζει απλώς το κλείσιμο πίνακας ετικέτα.

      Όπως και με tableStart, είναι πάντα εκπέμπονται.  Γι ' αυτό και την αξία που αποδίδεται υπό όρους βασίζεται σε αν έχω ήδη περάσαμε την τελευταία γραμμή από ContentQueryMain.xsl.
    -->
    <XSL:μεταβλητή Όνομα="tableEnd">
      <XSL:Αν δοκιμή="$CurPos = $Last">
        <![CDATA[ </Πίνακας> ]]>
      </XSL:Αν>
    </XSL:μεταβλητή>

    <!--
      Πάντα να εκπέμψει το περιεχόμενο του tableStart.  Αν αυτό δεν είναι η πρώτη γραμμή πέρασε σε μας από ContentQueryMain.xsl, κατόπιν ξέρουμε την αξία θα είναι κενό.

      Απενεργοποίηση εξόδου διαφυγή επειδή όταν tableStart αυτό δεν είναι κενό, περιλαμβάνει πραγματική HTML που θέλουμε να καθίστανται από το πρόγραμμα περιήγησης.  Αν δεν λένε το XSL parser να απενεργοποιήσετε εξόδου διαφυγή, θα παραγάγει τα πράγματα όπως"&lt;Πίνακας&gt;" αντί του"<Πίνακας>".
    -->
    <XSL:αξία των Επιλέξτε="$tableStart" Απενεργοποίηση-εξόδου-διαφυγή="Ναι"/>


    <TR>
      <!--
      P:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status
      -->
      <TD>
        <XSL:αξία των Επιλέξτε="@Project_x005F_x0020_Name"/>
      </TD>

      <TD Στοίχιση="δικαίωμα">
        <XSL:αξία των Επιλέξτε="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD Στοίχιση="δικαίωμα">
        <XSL:κλήση-πρότυπο Όνομα="FormatCurrency">
          <XSL:με Παράμ Όνομα="αξία" 
Επιλέξτε="@Project_x005F_x0020_Budget"></XSL:με Παράμ> </XSL:κλήση-πρότυπο> </TD> <TD Στοίχιση="δικαίωμα"> <XSL:κλήση-πρότυπο Όνομα="FormatCurrency"> <XSL:με Παράμ Όνομα="αξία" Επιλέξτε="@Project_x005F_x0020_Expenses">
</XSL:με Παράμ> </XSL:κλήση-πρότυπο> </TD> <TD> <XSL:αξία των Επιλέξτε="@Project_x005F_x0020_Status"/> </TD> <!-- Όλα τα ακόλουθα είναι σχολίασε έξω να διευκρινίσει τα πράγματα. Ωστόσο, φέρει πίσω και ουσία αυτό σε ένα <TD> να δούμε την επίδρασή. --> <!-- <div id = "linkitem" Class = "στοιχείο"> <XSL:Εάν δοκιμή = "-μήκος συμβολοσειράς($SafeImageUrl) != 0"> <div class = "εικόνα-περιοχή-αριστερά"> <ένα href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <img class = "εικόνα-σταθερού πλάτους" src = "{$SafeImageUrl}"
ALT = "{@ImageUrlAltText}"/> </ένα> </div> </XSL:Αν> <div class = "σύνδεση-ΕΙΔΟΣ"> <XSL:κλήση-πρότυπο
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <ένα href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" Τίτλος = "{@LinkToolTip}"> <XSL:αξία της επιλέξτε = "$DisplayTitle" /> </ένα> <div class = "Περιγραφή"> <XSL:select="@Description αξία των" /> </div> </div> </div>
--> </TR> <!-- Εκπέμπουν το κλείσιμο πίνακας ετικέτα. Αν δεν είμαστε στην τελευταία σειρά, αυτό θα είναι κενό. --> <XSL:αξία των Επιλέξτε="$tableEnd" Απενεργοποίηση-εξόδου-διαφυγή="Ναι"/> </XSL:πρότυπο> <XSL:πρότυπο Όνομα="FormatCurrency"> <XSL:Παράμ Όνομα="αξία" Επιλέξτε="0" /> <XSL:αξία των Επιλέξτε='μορφή-αριθμός($αξία, "$DDD,DDD,DDD.DD", "προσωπικό")' /> </XSL:πρότυπο>

22 thoughts on «Εμφάνιση περιεχομένου αποτελέσματα τμήμα Web ερωτήματος σε ένα πλέγμα / Πίνακας

  1. Ανδρέας

    ΑΑΑ… ήταν επειδή όνομα μου στυλ λίστας διαφορετικά και δεν είχα συνειδητοποιήσει ότι η ContentQueryMain.xsl ελέγχει για το "στυλ":

    <XSL:όταν test="@Style='NameOfMyStyle'">

    Με το που μετονομάστηκε σε αυτό έλυσα. 🙂

  2. Ανδρέας

    Σχεδόν ελειτούργησε για με: Κατορθώνω να εξόδου τη </Πίνακας> τελικής ετικέτας σωστά, αλλά το εκκίνησης ετικέτα λείπει. Φαίνεται η δοκιμή = "$CurPos = 1" δεν επιστρέφει true. Αλλά γιατί?

  3. Anand singh Ράβατ

    Μεγάλη θέση. Paul, έχω κάνει όλα τα παραπάνω πράγματα. Έχω ένα ερώτημα, Πώς μπορώ να επιτευχθεί το ποσό των "συνολική πραγματική έξοδα" ή το άθροισμα της αξίας των δύο στηλών.

  4. Lisa

    Έχετε κάνει οποιαδήποτε εργασία με τη δημιουργία προσαρμοσμένα αρχεία xsl ContentQueryMain και ItemStyle? Ο λόγος που ζητώ είναι ότι δεν θέλω να ανησυχείτε για μου προσαρμοσμένα στυλ να αντικαθίστανται με αναβαθμίσεις ή οποιαδήποτε μπαλώματα. Έχετε παραδείγματα? Έχω δοκιμάσει κάνοντας ένα πανομοιότυπο αντίγραφο του το ContentQueryMain.xsl και το φόρτωμα αυτό το νέο προσαρμοσμένο αντίγραφο στη βιβλιοθήκη στυλ. Κατά να υποβάλετε μια αναφορά σε αυτό το αρχείο xsl του .webpart MainXslLink ιδιοκτησία, Παίρνω 401 δεν επιτρέπεται. Το αρχείο xsl συνήθειας είναι μια δημοσιευμένη έκδοση και ο καθένας έχει πρόσβαση ανάγνωσης σε αυτό.

  5. Greg Σέρινταν

    Γεια σου, Αυτό ήταν πραγματικά χρήσιμο απόσπασης. Το έχω όλα εργασίας, και επίσης εφαρμοσμένος Mike Μπράουν αλλαγή έτσι ομαδοποιεί
    τα αποτελέσματα μέσα στον πίνακα, από ό, τι μπορώ να επιλέξω ως παράμετρο Ομαδοποίηση_κατά στις ιδιότητες του CQWB.
    Έκανα τον τίτλο ένα σύνδεσμο επίσης, έτσι λειτουργεί όμορφα. Έχω ακόμα ένα πρόβλημα, Αν και. Εγώ ομαδοποίηση των αποτελεσμάτων κατά όνομα. Μέσα στον πίνακα, ομαδοποιεί τους όμορφα, και φαίνεται μεγάλη, αλλά είναι ακόμα εκτύπωση από ομάδα των
    ονόματα(στην περίπτωσή μου τα ονόματα των τοποθεσιών) πάνω από τον πίνακα. Ξέρει πώς να απαλλαγούμε από αυτά?
    Ευχαριστώ,
    Greg

  6. Χωρίς όνομα

    Ωραίο άρθρο. Πρόλαβα να δώσω στο τραπέζι μου την εμφάνιση της προεπιλεγμένης λίστες Sharepoint αναλύοντας τον πηγαίο κώδικα του καταλόγου. Εδώ είναι τα κύρια μπλοκ HTML για να χωρέσουν σε ItemStyle:

    <ΠΊΝΑΚΑΣ πλάτος = "100%" Class = "ms-listviewtable" σύνορα = 0 cellspacing = 0 cellpadding = 1 dir = "Κανένα">

    <!–ΚΕΦΑΛΊΔΑ–>
    <TR class = "ms-viewheadertr" ΚΑΤΑΚΌΡΥΦΗ = ΚΟΡΥΦΉ>
    <Πεδίο εφαρμογής nowrap ου = «ΣΥΝΤΑΓΜΑΤΑΡΧΗ" Class = "ms-vh2"><div style = "πλάτος:100%;θέση:σχετική;αριστερά:0;κορυφή:0;">
    <Στυλ πίνακα = "πλάτος:100%;" CtxNum = "1" ύψος = "100%" cellspacing = 1 cellpadding = 0 class = "ms-unselectedtitle">
    <TR>
    <TD πλάτος = "100%" Class = "ms vb" χωρίς αναδίπλωση>
    Κείμενο du θέματα ici

    </TD>
    <TD στυλ = "θέση:απόλυτη;">
    </TD>
    </TR>
    </ΠΊΝΑΚΑΣ></div>
    </ΟΥ>

    <!–Επαναλάβετε για όλα τα κελιά επικεφαλίδας–>
    </TR>

    <!– Δεδομένα πίνακα –>
    <TR class = "">
    <!–Στήλη δεδομένων, Χρησιμοποιήστε κώδικα του Παύλου για την πρώτη με την υπερ-σύνδεση –>
    <TD Class = "ms-vb2">Δεδομένων εδώ</TD>

    <!–Κενή στήλη–>
    <TD Class = "ms-vb2">
    <span dir = None></span><
    /TD>

    <!–Στήλης "ημερομηνία"–>
    <TD Class = "ms-vb2">
    <NOBR>11/12/2008</NOBR>
    </TD>
    </TR>

    <!–***Εναλλακτική γραμμή – Χρησιμοποιήστε μια νέα μεταβλητή XSL που θα εισαγάγει την εναλλακτική τάξη με βάση την τρέχουσα γραμμή modulo 2–>
    <TR class = "ms-εναλλασσόμενο">

    </TR>
    </ΠΊΝΑΚΑΣ>

  7. Μάικ Μπράουν
    Zoltan,
    Δούλευα για το ίδιο θέμα όπως εσείς. Θα ήθελα όλα τα στοιχεία μου εμφανίζεται σε ομαδοποιημένα τρόπο και όχι απλά ένα lits. Εδώ είναι πώς το πέτυχα.
    ContentQueryMain.xsl
    <XSL:όταν test="@Style='Grid'">
    <XSL:Επιλέξτε εφαρμογή προτύπων = "." λειτουργία = "itemstyle">
    <XSL:με param όνομα = "CurPos" Επιλέξτε = "$CurPosition" />
    <XSL:με param όνομα = "τελευταία" Επιλέξτε = "$LastRow" />
    <!–Προσθέστε αυτό το νέο τμήμα να περάσει η παράμετρος που δείχνει μια νέα ομάδα έχει αρχίσει–>
    <XSL:με param όνομα = "StartNewGroup" Select="@__begingroup" />
    </XSL:εφαρμογή προτύπων>
    </XSL:Όταν>
    ItemStyle.xsl
    Προσθέστε την παράμετρο
    <XSL:Παράμ όνομα = "StartNewGroup" />
    Προσθέστε αυτό το κείμενο στην πρώτη γραμμή των δεδομένων
    <XSL:Επιλέξτε>
    <XSL:όταν δοκιμαστεί = "$StartNewGroup = 'True'">
    <TR>
    <TD >
    <XSL:name="OuterTemplate.GetGroupName κλήση-πρότυπο">
    <XSL:με param όνομα = «GroupName" Select="@*[Όνομα()= $Group]"/>
    <XSL:με param όνομα = "GroupType" Επιλέξτε = "$GroupType" />
    </XSL:κλήση-πρότυπο>
    </TD>
    </TR>
    </XSL:Όταν>
    <XSL:διαφορετικά>
    </XSL:διαφορετικά>
    </XSL:Επιλέξτε>
    Αυτό θα πρέπει να φροντίσει το πρόβλημά σας ομαδοποίηση στο πλέγμα σας. Κάθε ομάδα θα αρχίσει τώρα με μια νέα γραμμή που δηλώνει το όνομα της ομάδας. Σε λύση μου στην πραγματικότητα προστέθηκε ένα κενό <TD /> στα δεδομένα περίπτωση αυτό καθώς και έτσι ο Όμιλος ξεχώρισαν πολύ καλύτερα.
    Τοποθεσία1
    datacolumn1 datacolumn2 datacolumn3 κλπ

    datacolumn1 datacolumn2 datacolumn3 κλπ
    Τοποθεσία2
    datacolumn1 datacolumn2 datacolumn3 κλπ
    Site3

    datacolumn1 datacolumn2 datacolumn3 κλπ

    datacolumn1 datacolumn2 datacolumn3 κλπ
    κλπ.
  8. Zoltan
    Paul Γεια σας,
    Ευχαριστώ για τη θέση, θα καταφέρει να οργανώσει μου ερώτημα αποτελέσματα σε ένα πλέγμα, που είναι πολύ χρήσιμο. Ωστόσο, Πρέπει να προχωρήσουμε περισσότερο και να ομαδοποιήσετε τα αποτελέσματά μου με βάση τις περιοχές. Αυτή τη στιγμή, τα ονόματα των τοποθεσιών έχουν καταχωριστεί στις πρώτες, και τότε υπάρχει μόνο ένα μεγάλο πλέγμα, συγκεντρώνοντας όλες τις γραμμές από διαφορετικές τοποθεσίες. Κάτι σαν αυτό:
    Όνομα Τοποθεσία1
    Όνομα Τοποθεσία2
    Δεδομένων στο πλέγμα για όλους τους χώρους
    Κάποιες ιδέες για το τι εγώ θα τροποποιώ προκειμένου να πάρετε ως εξής τα στοιχεία μου:
    Όνομα Τοποθεσία1
    Δεδομένων στο πλέγμα για Τοποθεσία1
    Όνομα Τοποθεσία2
    Δεδομένων στο πλέγμα για Τοποθεσία2
    Ευχαριστώ εκ των προτέρων,
    Zoltan
  9. Pierre Joubert
    Φανταστική θέση, λυθεί το πρόβλημά μου, είχα.
    Μόνο πρόβλημα μου εμφανίζει το πεδίο ΕκχωρήθηκεΣε, Μπορώ να το ρυθμίσω με το χρήστη"" Τύπος πεδίου και το εισαγόμενο τμήμα Web, στη συνέχεια, εμφανίζει το ακόλουθο μήνυμα λάθους:
    "Υπήρξε ένα σφάλμα κατά την ανάκτηση δεδομένων για την εμφάνιση σε αυτό το τμήμα Web."
    Έχω δοκιμάσει χρησιμοποιώντας όλους τους τύπους δυνατό επιμέρους τομέα, με κάτι άλλο που ο χρήστης"" δεν εμφανίζει το σφάλμα, αλλά αυτό δεν εμφανίζει τίποτα στο πεδίο. Έτσι και αν υποτεθεί τον τύπο πεδίου του χρήστη είναι σωστή, έτσι θα πρέπει να λείπει μια ρύθμιση κάπου.
    Οποιεσδήποτε ιδέες σχετικά με αυτό?
    Χαιρετισμούς
    Pierre
  10. Charftong
    Μεγάλη θέση!!! Πολύ πολύ χρήσιμη.
    Γρήγορη ερώτηση, έχετε κάνει οποιαδήποτε εργασία στην επίδειξη πεδίο ΕκχωρήθηκεΣε ή ModifiedBy με παρουσία? Για κάποιο λόγο, κάθε φορά που προσπαθώ να εμφανίζει την πεδίο Ανάθεση σε το CQWP, εμφανίζει πάντα με ως παράδειγμα "203;#Charf Tong». Δεν μπορώ να βρω έναν τρόπο γύρω από αυτό.
  11. Jennifer Davis
    Paul
    Μεγάλο άρθρο, Ευχαριστούμε. Κάνω κάτι παρόμοιο, αλλά θέλουν να την εμφάνιση μιας σύνδεσης στον τόπο του έργου αντί για το στοιχείο στη λίστα. Για παράδειγμα, Έχουμε 25 κορυφαία επιπέδου έργου τοποθεσίες και κάθε μία να περιέχει μια λίστα με τύπους περιεχομένου. Αυτά είναι το όνομα του έργου, Διαίρεση, Περιγραφή. Θέλω να χρησιμοποιήσετε το τμήμα web ερωτήματος περιεχομένου να τραβήξει αυτά τα δεδομένα και έχουν καταφέρει, εκτός από το ότι από προεπιλογή το URL μου παίρνει την εγγραφή στη λίστα και εγώ αλήθεια χρειάζομαι αυτό για να με πάρει στον τόπο του έργου. Μπορείτε να μου δώσετε κάποια συμβουλή?
    Ευχαριστούμε
    Jen
  12. Paul Galvin
    Κίερεν,
    Χρησιμοποιώ πάντα το visual studio για να επεξεργαστείτε αμέσως την XSL. Παρέχει η κωδικοποίηση χρώματος και έχει επίσης κάποια υποστήριξη intellisense καλό.
    –Paul
  13. Kieran έγραψε:

    Γεια σου Paul,

    Όταν εργάζεστε με το τμήμα web xml/xsl και περιεχομένου ερωτήματος, έχετε βρει κανένα καλό τρόπους για να διαμορφώσετε σας xslt? Προσπαθεί να κάνει αλλαγές και να δοκιμάσουν το σχέδιο αποδεικνύεται ένα δικαίωμα πόνος στο το ένα ** μόνο χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου…

    Τα Καλύτερα

  14. Μιχαήλ Dipay
    Σχετικά με το θέμα, εγώ was having Τελευταία φορά όπου δεν εμφανίζει τις εικόνες από την προβολή πλέγματος, αλλά αντί για αυτό εμφανίζει το κείμενο (https://myweb.com/Marketing/images/icn-order.gif,). Καταφέρνω να το λύσουμε με τη βοήθεια του SharePoint Designer δημιουργώντας προσαρμοσμένη προβολή και επιλογή προσαρμοσμένο στήλες που θέλω να εμφανίσετε. Εγώ ανακάλυψα ότι ο τύπος της στήλης εικόνες εμφανίζονται ως URL(κόμμα) (π.χ.. https://myweb.com/Marketing/images/icn-order.gif,). Στην τρέχουσα μορφή είναι κείμενο, Έτσι έχω να το μετατρέψετε σε εικόνα από την κοινή xsl:αξία των εργασιών-> Μορφή ως εικόνα. Αυτή η αλλαγή η οθόνη στις προσαρμοσμένες εικόνες που ήθελα να δείξω. Αντέγραψα το κώδικα για να δείτε την εικόνα ( <img σύνορα ="0" src = "{δευτερεύουσα συμβολοσειρά-πριν από(@IcnOrder, ‘, ‘)}" /> ) Και στο αρχείο ItemStyle.xsl πρέπει να αλλάξετε το @PICTURECOLUMNNAME στον κώδικα <img σύνορα ="0" src = "{δευτερεύουσα συμβολοσειρά-πριν από(@IcnOrder, ‘, ‘)}" /> . Στη συνέχεια αποθηκεύστε το. Τώρα μου πίνακα αποτελεσμάτων πλέγμα για να δείξει το κείμενο, καθώς και το προσαρμοσμένο είδωλο πληκτρολογήστε στήλες.
  15. Ελένη
    Γεια σου Paul,
    Ευχαριστώ για το μεγάλο άρθρο!
    Αναφέρατε μορφοποίηση υπό όρους – «Μπορείτε επίσης να βάλετε στην μορφοποίηση υπό όρους, όπως η εμφάνιση έργων, οι οποίοι έχουν υπερβεί τον προϋπολογισμό τους στο κόκκινο." Μήπως τυχαίνει να έχουν ένα παράδειγμα κώδικα για αυτό?
    Ευχαριστώ και πάλι!
    Ελένη
  16. Μιχαήλ Dipay
    Γεια σου Paul,
    Ήταν ένα μεγάλο άρθρο και ήταν σε θέση να παράγουν τα ίδια αποτελέσματα όπως αναμένεται. Έχω την απαίτηση να δείξει μια εικόνα στο πλέγμα, ως μία από τις στήλες. Δεν εμφανίζει την εικόνα του πλέγματος, αλλά αντί για αυτό εμφανίζει τη διεύθυνση url για την εικόνα με ένα (,) κόμμα στο τέλος.
    (π.χ.. https://myweb.com/Marketing/images/icn-order.gif, )
    Πρέπει να χρησιμοποιήσω εικόνα ή μια εικόνα στο πεδίο Τύπος CommonViewFields? (π.χ.. InternalColumnName, Εικόνα)
    Ευχαριστώ,
    Mike
  17. Saji Ijiyemi

    Θέση σας είναι ακριβώς αυτό που έψαχνα. Ωστόσο, Εγώ cant αποκτώ αυτό λύνω.

    Έχω τα έγγραφα που αποθηκεύονται σε διάφορες doc. βιβλιοθήκες αλλά διαβαθμισμένες χρησιμοποιώντας μια προσαρμοσμένη κατηγορία στήλη (επιλογή: 1 ή 2. Θέλω να χρησιμοποιήσω το CQWP να δείτε αυτά τα έγγραφα που βασίζονται σε κλάση τους.
    Ήμουν σε θέση να προσθέσετε το CQWP, εξαγάγετε σε SPD, ρυθμίσετε το itemStyle.xls να δείξει τα προσαρμοσμένα πεδία στην προβολή λίστας. Ωστόσο, Δεν θα μπορούσε επιτυχώς να εφαρμόσει αυτό που περιγράφετε εδώ.

    Αυτές είναι οι στήλες που θέλω να δείξω στην CQWP μου:

    Τύπο αρχείου (να εμφανίσετε εικονίδιο)
    Αρχείο τίτλο
    Ημερομηνία που τροποποιήθηκε τελευταία
    Τροποποιήθηκε από που
    Έλεγξα έξω για να
    Ελέγχονται σε σχόλια

    Έχω σήμερα το αποτέλεσμα σε μορφή λίστας. Πώς μπορώ να την αλλάξω σε μορφή talble.

    Ευχαριστώ.

    Saji

Αφήστε μια απάντηση, να Saji Ijiyemi Ακύρωση απάντησης

Η διεύθυνση email σας δεν θα δημοσιευθεί. τα απαιτούμενα πεδία είναι επισημασμένα *