Gambaran dan Objektif
Keluar dari kotak, MOSS’ Kandungan Pertanyaan Web Bahagian (CQWP) memaparkan keputusan dalam format senarai, serupa dengan hasil carian. Hal ini juga mungkin untuk memaparkan hasil dalam grid format (Dgn kata lain. Format jadual HTML). Format grid adalah lebih baik dalam keadaan sesetengah. Saya menerangkan bagaimana untuk mencapai kesan yang dalam artikel ini.
Senario Perniagaan
Saya telah bekerja dengan klien mengenai pelaksanaan MOSS menyeluruh untuk. Kami telah direka taksonomi mereka supaya projek-projek adalah warga negara kelas pertama dalam hierarki dalam dan mempunyai tapak aras tertinggi mereka sendiri. Pengurus Projek mengekalkan senarai singleton maklumat ringkasan projek, seperti tajuk, bajet, Tarikh dijangka siap, Baki belanjawan dan lain-lain bidang ringkasan jenis. Oleh "singleton" Senarai SharePoint tersuai dijamin mengandungi hanya satu perkara yang saya maksudkan. Dengan mudah, ia kelihatan seperti ini:
Pendekatan teknikal adalah lebih kurang sama seperti yang dinyatakan di sini (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP yang menggunakan untuk mengubah XSL untuk mengeluarkan HTML untuk pelayar untuk memberi.
Saya sentiasa membayangkan hasil sebelum menganalisa XSL tersebut kerana XSL mimpi ngeri. Berikut adalah keputusan yang diingini saya:
HTML seperti ini menjana hasil yang:
<html> <badan> <pusat> <jadual sempadan= 1> <!-- Label -> <tr bgcolor= Biru> <td><font warna= Putih><b>Nama Projek</b></font></td> <td menyelaraskan= Betul><font warna= Putih><b>Tarikh melengkapkan</b></font></td> <td menyelaraskan= Betul><font warna= Putih><b>Bajet</b></font></td> <td menyelaraskan= Betul><font warna= Putih><b>Perbelanjaan sebenar</b></font></td> <td><font warna= Putih><b>Keseluruhan Status</b></font></td> </tr> <tr> <td>Re-wayar bilik komputer.</td> <td menyelaraskan= Betul>02/01/08</td> <td menyelaraskan= Betul>22,500.00</td> <td menyelaraskan= Betul>19,000.00</td> <td>Dalam Kemajuan</td> </tr> <tr> <td>Pelayan SQL Peruntukan Naik Taraf</td> <td menyelaraskan= Betul>04/01/08</td> <td menyelaraskan= Betul>7,500.00</td> <td menyelaraskan= Betul>0.00</td> <td>Dirancang</td> </tr> </jadual> </pusat> </badan> </html> |
Pendekatan
Ikuti langkah-langkah untuk mewujudkan grid:
- Mengenalpasti komponen grid (baris / lajur).
- Menentukan dan mewujudkan ruangan tapak perlu.
- Mencipta laman sub bagi projek-projek dan senarai tunggal.
- Tambah CQWP untuk laman web dan mengkonfigurasi ia untuk mencari senarai anda.
- Ubahsuai XML CQWP untuk mengumpulkan ruangan tambahan.
- Ubah suai XSL untuk menjana jadual.
Saya akan menumpukan perhatian kepada nombor enam. Nombor satu melalui empat adalah lurus ke hadapan dan sesuatu yang telah melakukan mana-mana pengguna CQWP. Nombor lima telah didokumenkan oleh orang lain termasuk menyeluruh tembakan skrin penuh sarat artikel ini daripada MSDN di sini (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) dan blog Heather Sulaiman di sini (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).
Kacang Dan Bolt
Mulakan dan melaksanakan langkah-langkah yang salah melalui lima sebagai satu dokumentasi MSDN dan artikel Heather Sulaiman.
Pada ketika ini, anda telah menambah CQWP anda ke laman dan anda mempunyai anda <CommonViewFields> dikonfigurasi sebagai perlu.
Berikutan langkah-langkah yang biasa, Saya mendapat keputusan ini perantaraan:
1. Membuat jenis kandungan, templatized senarai tersuai untuk jenis kandungan itu dan dua tapak. Inilah jenis kandungan:
Berikut adalah struktur tapak:
2. Tambah CQWP selepas mewujudkan subsites projek saya dan tunggal senarai ringkasan projek:
3. Tambah semua maklumat tambahan yang saya mahu melalui <CommonViewFields>:
<harta Nama="CommonViewFields" Jenis="rentetan">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</harta>
Perhatikan bahawa saya terpaksa terus semua bidang hartanah dalam satu baris atau ia tidak akan bekerja (CQWP akan memberitahu saya bahawa pertanyaan itu kembali ada perkara).
4. Pada ketika ini, Kami sudah bersedia untuk bergerak melampaui artikel MSDN dan flip di atas untuk artikel Heather Solomon. Ikuti langkah-langkah beliau yang bermula berhampiran langkah #5 untuk mewujudkan disesuaikan / versi unghosted ItemStyle.xsl. Saya ikut nasihat Heather's, up melalui langkah 11 dan mendapatkan keputusan ini perantaraan:
4.1: Nama template XSL saya seperti berikut:
<Pemacu:nama templat = "Grid" sepadan dengan = "berturut-turut[@Style = 'Grid']" mod = "itemstyle">
Saya juga sedikit mengubah beliau mencadangkan <Pemacu:untuk setiap …> dengan menambah <br /> tag untuk menyediakan senarai yang lebih bersih:
<Pemacu:untuk setiap pilih="@ *"> P:<Pemacu:nilai-of pilih="Nama()" /><br/> </Pemacu:untuk setiap>
4.2: Saya mengubah suai sebahagian web, pergi ke penampilan dan pilih saya "Grid" gaya:
Melaksanakan perubahan dan di sini adalah hasil:
Kita boleh lihat dari atas bahawa bidang yang kita mahu (Nama projek, perbelanjaan, status, dan sebagainya.) disediakan untuk kita gunakan apabila kita mengeluarkan HTML. Bukan itu sahaja, tetapi kita melihat nama-nama yang kami perlu rujukan kolum tersebut dalam XSL dalam. Sebagai contoh, kami rujukan Status projek sebagai "Project_x005F_x0020_Name".
Pada ketika ini, kami bertolak dari blog Heather dan dari bahu gergasi ini, Saya menambah sedikit saya sendiri sedikit.
ContentQueryMain.xsl
NOTA: Apabila membuat perubahan kepada kedua-dua ContentQueryMain.xsl serta ItemStyle.xsl, anda perlu menyemak fail-fail kembali sebelum anda melihat kesan perubahan.
Bagi tujuan membuat grid, MOSS menggunakan dua fail XSL yang berbeza untuk menghasilkan keputusan yang kita lihat dari CQWP yang. Untuk menjana bit sebelumnya output, kami kali ItemStyle.xsl. MOSS sebenarnya menggunakan fail XSL yang lain, ContentQueryMain.xsl untuk bersama-sama dengan ItemStyle.xsl untuk menghasilkan HTML yang. Seperti namanya, ContentQueryMain.xsl adalah "utama" XSL yang mengawal aliran keseluruhan penterjemahan. Ia iterates melalui semua barang-barang yang dijumpai dan Pas mereka satu per satu untuk template di ItemStyle.xsl. Kami akan ubah suai ItemStyle.xsl untuk menjana terbuka <jadual> tag sebelum mengeluarkan baris pertama data dan penutup <jadual> Tag selepas mengeluarkan baris terakhir. Untuk mencapai matlamat ini, ContentQueryMain.xsl kali meluluskan dua parameter untuk kami "grid" template dalam ItemStyle.xsl, "baris terakhir" dan "semasa baris". ItemStyle.xsl menggunakan ini untuk mengeluarkan tag perlu bersyarat.
Menggunakan teknik Heather Sulaiman, kita mencari ContentQueryMain.xsl. Ia terletak di tempat yang sama sebagai ItemStyle.xsl. Pukulan skrin ini akan membantu:
Kita perlu membuat perubahan berikut:
- Ubahsuai template XSL, "CallItemTemplate" yang benar-benar menggunakan template Grid kami di ItemStyle.xsl. Kita akan melewati dua parameter untuk Grid template supaya ia akan mempunyai data yang diperlukan untuk menjana dengan membuka dan menutup <jadual> tags.
- Ubah suai sedikit lain ContentQueryMain.xsl yang menyeru "CallItemTemplate" meluluskan "LastRow" parameter supaya LastRow boleh disampaikan kepada template Grid kami.
Mencari template yang dinamakan "OuterTemplate.CallItemTemplate" dikenal pasti oleh tali:
<Pemacu:template Nama="OuterTemplate.CallItemTemplate">
Menggantikan template keseluruhan seperti berikut:
<Pemacu:template Nama="OuterTemplate.CallItemTemplate"> <Pemacu:param Nama="CurPosition" /> <!-- Tambah "LastRow" parameter. Kami hanya menggunakannya apabila item gaya Pas dalam "Grid". --> <Pemacu:param Nama="LastRow" /> <Pemacu:memilih> <Pemacu:apabila ujian="@ Gaya = 'NewsRollUpItem'"> <Pemacu:terpakai-template pilih="." mod="itemstyle"> <Pemacu:dengan-param Nama="EditMode" pilih="$cbq_iseditmode" /> </Pemacu:terpakai-template> </Pemacu:apabila> <Pemacu:apabila ujian="@ Gaya = 'NewsBigItem'"> <Pemacu:terpakai-template pilih="." mod="itemstyle"> <Pemacu:dengan-param Nama="CurPos" pilih="$CurPosition" /> </Pemacu:terpakai-template> </Pemacu:apabila> <Pemacu:apabila ujian="@ Gaya = 'NewsCategoryItem'"> <Pemacu:terpakai-template pilih="." mod="itemstyle"> <Pemacu:dengan-param Nama="CurPos" pilih="$CurPosition" /> </Pemacu:terpakai-template> </Pemacu:apabila> <!-- Pas kedudukan semasa dan lastrow kepada template itemstyle.xsl Grid. ItemStyle.xsl akan menggunakannya untuk mengeluarkan terbuka dan tutup <jadual> tags. --> <Pemacu:apabila ujian="@ Gaya = 'Grid'"> <Pemacu:terpakai-template pilih="." mod="itemstyle"> <Pemacu:dengan-param Nama="CurPos" pilih="$CurPosition" /> <Pemacu:dengan-param Nama="Last" pilih="$LastRow" /> </Pemacu:terpakai-template> </Pemacu:apabila> <Pemacu:sebaliknya> <Pemacu:terpakai-template pilih="." mod="itemstyle"> </Pemacu:terpakai-template> </Pemacu:sebaliknya> </Pemacu:memilih> </Pemacu:template> |
Komen-komen yang menerangkan maksud perubahan.
Kursus, "OuterTemplate.CallItemTemplate" dirinya dipanggil dari template lain. Mencari templat tersebut dengan mencari rentetan teks ini:
<Pemacu:template Nama="OuterTemplate.Body">
Tatal melalui manual OuterTemplate.Body dan masukkan parameter LastRow seperti berikut (ditunjukkan sebagai komen dalam italik):
<Pemacu:panggilan template Nama="OuterTemplate.CallItemTemplate"> <Pemacu:dengan-param Nama="CurPosition" pilih="$CurPosition" /> <!-- Memasukkan parameter LastRow yang. --> <Pemacu:dengan-param Nama="LastRow" pilih="$LastRow"/> </Pemacu:panggilan template>
Selepas semua ini, kami akhirnya telah perkara ditubuhkan dengan betul supaya ItemStyle.xsl kita boleh mengeluarkan <jadual> tags di tempat yang betul.
ItemStyle.Xsl
NOTA: Lagi, mendaftar masuk ItemStyle.xsl selepas membuat apa-apa perubahan supaya anda melihat kesan perubahan-perubahan.
Kami mempunyai dua tugas di sini:
- Menggantikan seluruh template Grid. Anda boleh copy/paste dari bawah.
- Tambah beberapa mumbo jumbo di luar definisi template yang membolehkan "formatcurrency" template untuk bekerja. (Anda boleh memberitahu bahawa saya mempunyai mengendalikan lemah pada Pemacu).
Pertama, berhampiran bahagian atas ItemStyle.xsl, tambah baris ini:
<!-- Beberapa jumbo kosong yang membolehkan kita untuk memaparkan U.S. mata wang. --> <Pemacu:perpuluhan-format Nama="kakitangan" digit="D" /> <Pemacu:template Nama="Default" perlawanan="*" mod="itemstyle">
Perhatikan bahawa saya berkata ia secara langsung sebelum <Pemacu:nama templat = "lalai" …> definisi.
Seterusnya, kembali ke template Grid kami. Menggantikan seluruh template Grid dengan kod di bawah. Ia adalah benar-benar mengulas, tetapi tidak teragak-agak untuk e-mel saya atau meninggalkan komen di blog saya jika anda mempunyai soalan.
<Pemacu:template Nama="Grid" perlawanan="Berturut-turut[@ Gaya = 'Grid']" mod="itemstyle"> <!-- ContentMain.xsl pas CurPos dan terakhir. Kami menggunakan ini untuk mengeluarkan bersyarat terbuka dan tutup <jadual> tags. --> <Pemacu:param Nama="CurPos" /> <Pemacu:param Nama="Last" /> <!-- Pembolehubah berikut diubahsuai dari ItemStyle.xsl standard --> <Pemacu:berubah-ubah Nama="SafeImageUrl"> <Pemacu:panggilan template Nama="OuterTemplate.GetSafeStaticUrl"> <Pemacu:dengan-param Nama="UrlColumnName" pilih="'ImageUrl'"/> </Pemacu:panggilan template> </Pemacu:berubah-ubah> <Pemacu:berubah-ubah Nama="SafeLinkUrl"> <Pemacu:panggilan template Nama="OuterTemplate.GetSafeLink"> <Pemacu:dengan-param Nama="UrlColumnName" pilih="'LinkUrl'"/> </Pemacu:panggilan template> </Pemacu:berubah-ubah> <Pemacu:berubah-ubah Nama="Displaytitle"> <Pemacu:panggilan template Nama="OuterTemplate.GetTitle"> <Pemacu:dengan-param Nama="Title" pilih="@ Title"/> <Pemacu:dengan-param Nama="UrlColumnName" pilih="'LinkUrl'"/> </Pemacu:panggilan template> </Pemacu:berubah-ubah> <Pemacu:berubah-ubah Nama="LinkTarget"> <Pemacu:jika ujian="@ OpenInNewWindow = 'Sebenar'" >_blank</Pemacu:jika> </Pemacu:berubah-ubah> <!-- Di sini kita menentukan ubah, "tableStart". Ini mengandungi HTML . Perhatikan bahawa jika CurPos = 1, ia termasuk HTML dalam tag CDATA. Jika tidak, ia akan menjadi kosong. Nilai tableStart adalah emited setiap ItemStyle masa dipanggil melalui . --> <Pemacu:berubah-ubah Nama="tableStart"> <Pemacu:jika ujian="$CurPos = 1"> <![CDATA[ <sempadan meja = 1> <TR bgcolor = "biru"> <td><warna font = "putih"><b>Nama Projek</b></font></td> <TD menyelaraskan = "kanan"><warna font = "putih"><b>Tarikh melengkapkan</b></font></td> <TD menyelaraskan = "kanan"><warna font = "putih"><b>Bajet</b></font></td> <TD menyelaraskan = "kanan"><warna font = "putih"><b>Perbelanjaan sebenar</b></font></td> <td><warna font = "putih"><b>Keseluruhan Status</b></font></td> </tr> ]]> </Pemacu:jika> </Pemacu:berubah-ubah> <!-- Berubah lagi, tableEnd hanya mentakrifkan tag jadual penutupan. Seperti tableStart, ia sentiasa emited. Inilah sebabnya mengapa nilainya . --> <Pemacu:berubah-ubah Nama="tableEnd"> <Pemacu:jika ujian="$CurPos = $ Last"> <![CDATA[ </jadual> ]]> </Pemacu:jika> </Pemacu:berubah-ubah> <!-- Sentiasa mengeluarkan kandungan tableStart. Jika ini bukan yang pertama , maka kita tahu nilai . Melumpuhkan output melarikan diri kerana apabila tableStart ia tidak kosong, ia . Jika , ini akan menghasilkan barangan seperti"<jadual>" bukannya daripada"<jadual>". --> <Pemacu:nilai-of pilih="$tableStart" melumpuhkan-output-melarikan diri="ya"/> <tr> <!-- P:Project_x005F_x0020_Name :Project_x005F_x0020_End_x005F_x0020_Date :Project_x005F_x0020_Budget :Project_x005F_x0020_Expenses :Project_x005F_x0020_Status --> <td> <Pemacu:nilai-of pilih="@ Project_x005F_x0020_Name"/> </td> <td menyelaraskan="betul"> <Pemacu:nilai-of pilih="@ Project_x005F_x0020_End_x005F_x0020_Date"/> </td> <td menyelaraskan="betul"> <Pemacu:panggilan template Nama="formatcurrency"> <Pemacu:dengan-param Nama="nilai" |
Ini telah amat berguna. Terima kasih!
Aah… Ia adalah kerana saya bernama gaya senarai saya berbeza dan tidak sedar bahawa dalam ContentQueryMain.xsl ini ia menyemak "gaya":
<Pemacu:bila test="@Style='NameOfMyStyle'">
Dengan itu dinamakan ia bekerja. 🙂
Ia hampir bekerja untuk saya: Saya berjaya output </jadual> mengakhiri tag dengan betul, tetapi tanda permulaan yang hilang. Ia seolah-olah ujian = "$CurPos = 1" tidak akan kembali benar. Tetapi mengapa?
Great Post. Paul i telah melakukan semua perkara di atas. Saya mempunyai pertanyaan, Bagaimanakah boleh saya gigih jumlah "Expences sebenar jumlah" atau jumlah nilai dua tiang.
Adakah anda melakukan apa-apa kerja dengan mewujudkan adat ContentQueryMain dan ItemStyle Pemacu fail? Tujuan saya bertanya adalah bahawa saya tidak mahu bimbang tentang gaya adat saya yang ditulis ganti dengan mana-mana tompok atau peningkatan. Adakah anda mempunyai contoh-contoh? Saya telah cuba membuat salinan sama daripada ContentQueryMain.xsl dan memuat naik salinan yang baru adat Perpustakaan Gaya. Apabila meletakkan rujukan kepada fail Pemacu ini dalam harta MainXslLink itu. Webpart ini, Saya mendapat 401 tidak dibenarkan. Adat fail Pemacu adalah versi yang diterbitkan dan semua orang telah membaca akses kepada maklumat itu.
terima kasih post hebat! Telah berjuang dengan ini sekarang untuk beberapa hari lalu.
Hi, ini adalah benar-benar membantu posting. Saya telah ia semua bekerja, dan juga melaksanakan perubahan Mike Brown jadi kumpulan
keputusan dalam jadual dengan apa yang saya pilih sebagai Kumpulan Dengan parameter di hartanah CQWB ini.
Saya membuat tajuk pautan juga, supaya ia berfungsi dengan baik. Saya masih mempunyai satu masalah, walaupun. Saya kumpulan keputusan dengan nama tapak. Di dalam jadual, ia kumpulan mereka baik, dan ia kelihatan besar, tetapi ia masih mencetak semua kumpulan
nama-nama(dalam kes saya nama-nama laman web ini) di atas meja. Adakah sesiapa yang tahu bagaimana untuk menghilangkan?
Terima kasih,
Greg
Artikel Nice. Saya berjaya memberikan meja saya rupa Senarai SharePoint lalai dengan menganalisis kod sumber senarai. Berikut adalah blok utama HTML diperlukan untuk dimuatkan dalam ItemStyle:
<Jadual lebar = "100%" Class = "ms-listviewtable" Border = 0 cellspacing = 0 cellpadding = 1 dir = "Tiada">
<!–HEADER–>
<TR class = "ms-viewheadertr" Sewa ruang pejabat = TOP>
<Skop TH nowrap = "Kol" Class = "ms-vh2"><Bhg. gaya = "lebar:100%;kedudukan:relatif;meninggalkan:0;atas:0;">
<Jadual gaya = "lebar:100%;" CtxNum = "1" ketinggian = "100%" cellspacing = 1 cellpadding = kelas 0 = "ms-unselectedtitle">
<TR>
<Lebar TD = "100%" Class = "ms-BB" nowrap>
Texte du titre ici
</TD>
<Gaya TD = "kedudukan:mutlak;">
</TD>
</TR>
</JADUAL></div>
</TH>
<!–Ulang untuk semua sel-sel header–>
</TR>
<!– Data Jadual –>
<TR class = "">
<!–Ruangan Data, menggunakan kod Paul untuk yang pertama dengan hyperlink –>
<TD Class = "ms-vb2">Data di sini</TD>
<!–Ruang kosong–>
<TD Class = "ms-vb2">
<span dir = Tiada></span><
/TD>
<!–Ruangan Tarikh–>
<TD Class = "ms-vb2">
<NOBR>11/12/2008</NOBR>
</TD>
</TR>
<!–***Barisan alternatif – Gunakan ubah XSL baru yang akan memasukkan kelas ganti berdasarkan berturut-turut semasa modulo 2–>
<TR class = "ms-berselang-seli">
…
</TR>
</JADUAL>
Thatz tepat saya sedang mencari .. Anda batu manusia .. Hidup .. Cinta anda untuk jawatan tersebut..
<Pemacu:Pilih template memohon = "." mod = "itemstyle">
<Pemacu:nama dengan param = "CurPos" Pilih "$CurPosition =" />
<Pemacu:nama dengan param = "berlangsung" Pilih "$LastRow =" />
<Pemacu:nama dengan param = "StartNewGroup" Select="@__begingroup" />
</Pemacu:apabila>
<Pemacu:Bilakah ujian = "$StartNewGroup = 'True'">
<tr>
<td >
<Pemacu:name="OuterTemplate.GetGroupName panggilan-template">
<Pemacu:nama dengan param = "GroupName" Select="@*[Nama()= $ Kumpulan]"/>
<Pemacu:nama dengan param = "GroupType" Pilih = "$GroupType" />
</Pemacu:panggilan template>
</td>
</tr>
</Pemacu:apabila>
<Pemacu:sebaliknya>
</Pemacu:sebaliknya>
</Pemacu:memilih>
Hi Paul,
Apabila bekerja dengan xml / XSL dan kandungan query sebahagian web, telah anda menemui apa-apa cara yang baik untuk format xslt anda? Cuba untuk membuat perubahan dan menguji reka bentuk terbukti sakit betul-betul di sebuah ** hanya menggunakan editor teks…
Semua yang terbaik
(e.g. https://myweb.com/Marketing/images/icn-order.gif, )
Sekiranya saya menggunakan imej atau gambar dalam Type Field CommonViewFields? (e.g. InternalColumnName, Imej)
Posting anda adalah tepat apa yang saya Cari. Walau bagaimanapun, Saya tidak boleh mendapatkannya untuk bekerja.
Saya ada dokumen yang disimpan dalam pelbagai doc. Perpustakaan tetapi dikelaskan menggunakan ruangan kelas adat (pilihan: 1 atau 2. Saya ingin menggunakan CQWP untuk menunjukkan dokumen-dokumen yang berdasarkan kelas mereka.
Saya telah dapat menambah CQWP yang, mengeksport ke SPD, Konfigurasi itemStyle.xls untuk menunjukkan bidang adat dalam senarai paparan. Walau bagaimanapun, Saya boleh tidak berjaya melaksanakan apa yang anda Terangkan di sini.
Ini adalah tiang yang saya ingin menunjukkan di CQWP saya:
Jenis fail (untuk menunjukkan ikon)
Tajuk fail
Tarikh Dikemaskini
Diubahsuai oleh yang
Keluar ke
Disemak di komen
Saya kini mempunyai hasil dalam format senarai. Bagaimana saya mengubah itu kepada talble format.
Terima kasih.
Tudong Saji
Maaf untuk missspelling pada nama saya tidak pasti di mana ” datang dari.