Penyelesaian tanpa Kod: memaparkan hari sejak item senarai SharePoint terakhir diubah

Penyelesaian tanpa Kod: memaparkan hari sejak item senarai SharePoint terakhir diubah

Important: Artikel ini diterjemahkan oleh mesin, lihatlah notis penafian. Sila dapatkan versi Bahasa Inggeris artikel ini di sini sebagai rujukan anda

9/20/2011 3:01 PM

dengan Justin Joyce, LANtek

Note: Artikel ini adalah sebahagian daripada koleksi kiriman daripada empat tahun blog mendapatkan titik untuk pengguna akhir SharePoint.

Gambaran keseluruhan: Tersuai penuaan laporan dengan kod tiada

Salah satu bahagian kefungsian laman SharePoint yang sering diminta adalah laporan penuaan untuk tugas atau item senarai. Dengan kata lain, bilangan hari bulan mempunyai ia telah sejak ini item senarai terakhir diubah?

Pada permukaan ini nampaknya permintaan sangat ringkas. Selepas semua, kami mempunyai tarikh bagi item dicipta dan diubah suai, kami mempunyai keupayaan untuk menyimpan tarikh tersuai apabila perubahan tertentu untuk item berlaku melalui penerima peristiwa. Kami mempunyai lajur terhitung yang kita boleh memasukkan Formula seperti Excel untuk berfungsi dengan maklumat kami. Ini kelihatan seperti cadangan cukup terus ke hadapan. Kami pilih medan tarikh, mencipta lajur terhitung dan kemudian lakukan formula sesuatu di sepanjang garis [DateField]-[hari ini]. Ah, tidak begitu cepat walaupun! Sebagai sesiapa yang mempunyai dicuba tugas ini "ringkas" tahu, cuba gunakan seperti [hari ini] dalam masalah sebab lajur terhitung. Cuba menyelitkan [hari ini] anda terhitung kotak formula lajur akan memberikan anda menerima mesej ralat sesuatu seperti ini:

Mesej ralat

Mengapa Adakah ini? Juga, ia mempunyai lakukan dengan cara dikira lajur terhitung.

Mari kita formula ringkas sebagai contoh:

= IF ( [Column1] < = [Column2], "OK", "Not OK")

Semua ini menyatakan adalah yang jika lajur1 adalah kurang daripada atau sama dengan Column2 kemudian paparkan OK, jika tidak memaparkan Not OK. Ini ialah formula asas agak Lazim untuk lajur terhitung dan ia menjadikan anggapan asas tentang item senarai yang mengandungi lajur ini: nilai untuk lajur1 dan Column2 tidak akan dapat mengubah tanpa peristiwa kemas kini pada item senarai.

Benar, lajur terhitung hanya akan mengira apabila senarai dikemas kini (atau cipta) kerana ia menganggap maklumat yang anda mengira terkandung dalam item itu sendiri. Ini mencipta masalah apabila anda cuba menggunakan sesuatu yang berubah berasingan daripada medan item, seperti tarikh hari ini.

Sekarang saya tidak dalam mesyuarat yang mereka membuat keputusan bahawa ini merupakan cara yang dikira lajur akan berfungsi, Walau bagaimanapun, jika saya mempunyai untuk membuat tekaan educated yang saya akan menganggap bahawa mereka fungsi cara ini untuk prestasi. Bayangkan jika anda mempunyai senarai beberapa item seribu, setiap satunya terkandung lajur terhitung yang diperlukan pada kemas kini "langsung". Adakah ini bermakna bahawa mekanisme beberapa, mungkin kerja pemasa, akan perlu lelaran melalui setiap item yang terkandung lajur terhitung tersebut sering kali dan mengemas kini nilai. Ini boleh menjadi amat sukar dari segi prestasi kerana dengan penggunaan lebih besar kerja ini mungkin sentiasa menjalankan dan mengubah perkara. Itu hanya saya tekaan, tetapi yang dibuat agak difahami jika anda berpendapat mengenainya.

Terdapat beberapa cadangan untuk penyelesaian serupa terapung di sana yang melibatkan tricking SharePoint dalam untuk menerima nilai hari ini dengan mencipta pertama lajur yang bernama hari ini, kemudian menambahnya pada formula anda, kemudian padamkannya. Ini adalah semua baik dan baik tetapi mengingati apa yang saya berkata tentang apabila lajur terhitung dikemas kini. Nilai ini hanya akan berubah apabila item dikemas kini yang bermakna nilai anda tidak lama lagi akan salah, terutamanya dalam kes pengiraan hari.

Saya telah melihat orang lain menggunakan pintar JavaScript untuk menulis nilai ke halaman. Ini akan berfungsi juga, tetapi saya cukup banyak kategori terhadap skrip klien apabila ia boleh dielakkan.

Pelaksanaan:

Jadi apa yang perlu dilakukan? Lajur terhitung adalah tiada soalan untuk dipanggil "meruap" fungsi seperti hari ini. Ia adalah berkemungkinan kami boleh membangunkan beberapa kod tersuai untuk menguruskan ini untuk kami seperti lajur dikira, kerja pemasa, atau berjadual proses untuk disertakan bersama-sama dan mengemas kini setiap item tunggal yang memerlukan pengiraan ini dibuat. Yang mengumpulkan kami kembali ke masalah prestasi saya dinyatakan dalam perenggan terakhir walaupun dan Selain itu ia penyelesaian rapuh yang sangat khusus ke laman/senarai/lajur dalam soalan. Di bahagian atas dua pertanyaan, anda juga perlu pergi mencari yang nerdy guy, seperti sendiri, yang mengetahui cara untuk kod dan membangunkan dia membangunkan penyelesaian ini untuk anda. Tetapi terdapat satu cara yang mudah!

Jika anda mempunyai hak untuk mencipta medan dan mengedit halaman pada laman anda, dan mempunyai sedikit pengetahuan tentang XSLT dan mencipta pandangan, anda boleh letakkan templat XSL yang boleh dimasukkan dalam pandangan senarai dan setia akan mengira nilai anda setiap kali halaman diminta bersama-sama. Senario ini mengalih keluar kebimbangan kami melalui prestasi, dan tidak memerlukan kod tersuai untuk dibangunkan dan digunakan melalui penyelesaian.

Sempurna. Jadi Bagaimanakah kami melakukannya?

  1. Mencipta atau memilih medan yang akan bertindak sebagai sumber kami. Ia mesti jenis tarikh.

  2. Mencipta medan kami yang akan bertindak sebagai ruang letak untuk nilai yang dikira.

  3. Tambah kedua-dua medan ini untuk kandungan taipkan dan menambahkan jenis kandungan tersebut pada senarai.

  4. Mencipta pandangan senarai yang mengandungi lajur sumber dan ruang letak.

  5. Memuat naik templat XSL ke pustaka gaya.

  6. Setkan sifat "Pautan XSL" untuk bahagian Web pandangan senarai melalui UI.

  7. Kejayaan!

Mari kita menjelajahi kes penggunaan contoh dan membimbing pelaksanaan. Pelanggan kami ingin pandangan senarai utama mereka yang memberitahu mereka tempoh item senarai tertentu telah duduk di statusnya. Senarai ini terkandung Laman tersuai kandungan jenis diperoleh daripada jenis Item dan ditambahkan pada senarai. Terdapat sudah penerima peristiwa di tempat yang menggambarkan setiap kali medan status tersebut pada item senarai telah berubah dan disimpan tarikh tersebut kepada lajur yang dipanggil "Tarikh Status berubah". Semua pendawaian ini tidak diperlukan dan boleh dilakukan dengan sebarang medan tarikh (ia hanya jadi berlaku ini adalah pelaksanaan tetapi rasa percuma untuk mencuba-cuba). Minimum terdedah yang anda perlukan ialah medan tarikh sumber dan medan Ruang letak untuk menangguhkan pengiraan anda (lebih ini dalam perenggan berikut) ditambahkan pada senarai anda, walaupun saya cadangkan anda menggunakan lajur laman dan jenis kandungan laman sekiranya anda ingin menggunakan semula penyelesaian ini di tempat lain pada laman anda.

Jadi kami mempunyai kami tarikh sumber yang kami boleh gunakan dalam pengiraan kami terhadap tarikh hari ini. Sekarang kita boleh mencipta lajur Laman tersuai untuk digunakan sebagai bekas bagi nilai terhitung kami. Dalam kes ini saya memilih untuk menggunakan lajur terhitung kerana ia tidak akan dapat diubah pada baru atau mengedit item borang, tetapi boleh dipilih untuk dipaparkan dalam pandangan kerana kami tidak mahu pengguna memasukkan arbitrari nilai dalam lajur ini. Ia mungkin mengelirukan sebagai sebab ia tidak sedang dipaparkan dalam pandangan, dll.

Memandangkan kita mempunyai lajur Laman kami, kami boleh menambahkannya kepada kami jenis kandungan yang akan digunakan dalam senarai kami. Seterusnya, kita perlukan untuk mencipta pandangan kami yang kemudiannya boleh disesuaikan dengan XSLT kami. Pastikan anda mencipta pandangan standard yang mengandungi lajur tarikh sumber anda dan anda lajur terhitung baru yang akan bertindak sebagai ruang letak untuk nilai terhitung.

Sekarang kita segala-galanya di tempat yang kami akan memerlukan sokongan kami laporan penuaan tersuai. Semua kekal mencipta templat XSL kami, memuat naiknya ke pustaka gaya laman dan memaut ke dalam pandangan senarai. Templat XSL yang kami akan menggunakan akan mengandungi penanda SharePoint yang dijana beberapa normal untuk menjana pandangan serta kami sendiri penanda tersuai yang digunakan untuk menulis ganti bahagian tertentu ini dan mengira nilai diinginkan kami untuk kami.

Memberi kredit kredit manakah siap, templat XSL untuk melakukan pengiraan sebenar saya menggunakan penyelesaian ini tangan terbuka telah disediakan oleh "swirch" dalam forum MSDN:
http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Muat turun yang XSL perluas (aging.zip) mempunyai meletakkan bersama-sama terletak di sini:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Membuka ini dalam editor teks kegemaran anda akan melihat banyak penanda SharePoint XSL normal untuk memaparkan pandangan, jika anda mengekalkan skrol ke bawah untuk baris 357 anda akan melihat mulakan templat tersuai yang saya tambahkan ke penanda, yang pertama yang sedang templat "DateDiff" diikuti "mengira Gregory-hari" dan "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Ini ialah templat kami tiga yang akan menjadikan memaparkan pengiraan kami dalam pandangan kami. Jika anda akan menggunakan nama medan yang berbeza daripada yang ditentukan pada awal artikel ini, anda perlu melalui templat ini dan menggantikan sebarang rujukan kepada nama yang lain. Ingat, ini anda akan ingin menggunakan nama dalaman medan tidak nama paparan.

Sebaik sahaja anda telah berpuas templat telah sedia untuk pergi, Navigasi ke pustaka gaya dan muat naik di bawah folder "Helaian gaya XSL" kemudian Salin ke bawah pautan ke fail. Ini akan membenarkan kami dengan mudah membuat perubahan padanya kemudian, atau Tambah ke bahagian laman yang berlainan seperti kami, sila.

Seterusnya, pergi ke senarai anda dan pilih pandangan yang anda cipta pada awal artikel ini. Dari "Tindakan Laman" menu klik pada "Edit halaman".

Perintah Edit Halaman pada menu Tindakan Laman

Cari bahagian Web pandangan senarai anda pada halaman dan buka menu bahagian Web dengan mengklik anak panah menghadapi ke bawah yang kecil di penjuru atas kanan. Daripada menu ini pilih "Edit bahagian Web".

Perintah Edit Bahagian Web pada menu Bahagian Web

Ini akan membuka menu bahagian Web pada sebelah kanan tetingkap pelayar anda.

Menu Bahagian Web

Klik pada seksyen yang + untuk "Pelbagai" dan Cari sifat "Pautan XSL".

Sifat Pautan XSL pada menu Bahagian Web

Tampal pautan fail XSL anda dalam pustaka gaya yang anda salin ke bawah terdahulu (ini mungkin pautan relatif atau mutlak).

Pautan fail XSL ditampalkan dalam

Klik "OK" untuk menyimpan perubahan anda kemudian klik butang "Hentikan pengeditan" pada reben "Halaman" di bahagian atas halaman.

Butang Hentikan Pengeditan pada tab Halaman

Jika segala-galanya telah dikonfigurasi dengan betul sekarang anda sepatutnya melihat nombor dalam lajur "Hari di Status" anda.

Hari Pada lajur Status memaparkan nombor

Dan akhirnya, inilah apa yang ia akan kelihatan seperti dengan beberapa data tarikh pelbagai ujian:

Laporan Penuaan yang memaparkan data ujian

Ringkasan:

Terdapat ia: cara yang diformatkan secara betul, kukuh dan lebih baik persembahan untuk mencipta laporan penuaan dalam SharePoint., lengkap dengan pelaksanaan tanpa kod ringkas. Ini mempunyai agak beberapa kemungkinan aplikasi selain yang menggunakan huruf kami meneroka di sini. Senario biasa yang lain untuk jenis ini laporan adalah melampirkan ia pada senarai tugas supaya anda boleh melihat berapa lama ia telah sejak tugas telah dicipta dengan sekilas pandang.

Menikmati!

--Justin

Justin Joyce, LANtek

Komen

Langkah hilang
10/8/2012 3:51 AM
ok saya mengikuti langkah tersebut, tetapi mesti sesuatu hilang - cara XSL yang akan mengetahui tarikh yang menggunakan atau yang medan untuk menambah hari sejak ke? tidak suka ia apabila langkah terlepas.

Tanpa kod bersetuju!
8/30/2012 12:12 PM
saya setuju - tidak rasanya ini benar-benar dikira sebagai "Tiada kod".
Menariknya, melalui beberapa screwup SharePoint, saya telah bekerja lajur terhitung menggunakan hari ini … tidak pasti cara atau Mengapakah kerana saya tidak dapat pergi untuk melakukannya sekali lagi, tetapi yang masih ada dan bekerja.

Formula untuk "Hari di Status" lajur terhitung?
5/2/2012 7:39 AM
Justin - Apakah formula yang anda gunakan untuk lajur terhitung Laman "Hari di Status" (Ruang letak lajur)? Ia "= hari ini"?

SharePoint 2007
12/2/2011 11:29 AM
sekarang saya telah tidak dicuba untuk menggunakan penyelesaian ini SharePoint 2007, namun yang saya Cari padanya. Malangnya terdapat tiada sifat XslLink yang menimbulkan pada bahagian web melalui UI.

Kiriman yang hebat
11/30/2011 9:53 AM
Hello,
kiriman yang hebat.
Saya menggunakan SharePoint 2007.
saya tidak mempunyai Seksyen Misc seperti yang dinyatakan di atas.
Adakah anda mempunyai langkah untuk konfigurasi SP2007?
Terima kasih.

Semula: Penyelesaian tanpa Kod: memaparkan hari sejak item senarai SharePoint terakhir diubah
10/11/2011 8:24 AM
Hi Chris.
Cari hebat!
saya saya akan lihat apa yang anda siarkan Mudah-mudahan lebih baru pada hari ini dan lihat jika saya boleh membuat penyelesaian ini agak lebih kukuh.
saya gembira anda menyukai kiriman, dan saya sangat gembira anda tidak dapat mencari penyelesaian kepada format tarikh Eropah. :)
-Justin

Penyelesaian untuk format tarikh Eropah
10/11/2011 6:45 AM
Hi Justin sekali lagi,
FYI, saya ditemui penyelesaian untuk isu yang saya dinyatakan sebelum ini pada halaman ini;
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Format tarikh Eropah
10/7/2011 3:59 AM
Hi Justin,
ini ialah terima kasih penyelesaian benar-benar baik dan hanya Isih perkara saya telah dihabiskan terakhir dua hari yang mencari! Walau bagaimanapun saya menghadapi sedikit masalah dengannya dan saya berharap anda boleh membantu saya.
saya telah diubah kod anda sedikit calcultate bilangan hari sehingga sesuatu berlaku, dan bukannya sejak, dengan menukar pemboleh ubah dalam baris terakhir fungsi "DateDiff";

< xsl:value-pilih = "$JulianToday - $JulianStartDate" >< / xsl:value-bagi >

Walau bagaimanapun saya hanya dapat menyelesaikan untuk caclulate perbezaan dengan betul separuh masa. Jadi contohnya dengan tarikh ini (format dd/MM/yyyy);

30/12/2011

mengira dengan betul, tetapi dengan tarikh ini (format sama)

12/10/2011

mengira sebagai jika jika 10-Dis-2011 dan bukannya 2011 12 Okt.
saya cuba hanya bertukar posisi nilai hari dan bulan dalam pemboleh ubah "JulianStartDate", seperti ini;

< xsl: nama dengan param = "Bulan" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMMdd'), 7, 2)" / >
< xsl: nama dengan param = "Hari" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMMdd'), 5, 2)" / >

dan ini dibaiki masalah dengan tarikh kedua, namun ia telah kemudian salah untuk tarikh pertama!
saya juga telah cuba mengubah panggilan FormatDateTime menggunakan LCIDs Eropah dan pengubahsuaian pelbagai untuk parameter terakhir FormatDateTime (cth ddMMyyyy, MMddyyyy) dengan pelarasan yang sesuai untuk parameter posisi substring tanpa kejayaan.
saya menghargai nasihat yang anda boleh menawarkan.
Terima kasih,
Chris

Tanpa kod
9/21/2011 4:27 AM
tidak rasanya XSL layak sebagai penyelesaian "tanpa kod", sebagai memahami Bahasa XSL bukan untuk semua orang - namun ia tidak melibatkan pemprograman. Selain itu: penyelesaian yang bagus, terima kasih!

Note: Notis Penafian Penterjemahan Mesin: Artikel ini telah diterjemah oleh sistem komputer tanpa campur tangan manusia. Microsoft menawarkan penterjemahan mesin ini untuk membantu pengguna-pengguna yang tidak bertutur dalam Bahasa Inggeris supaya dapat menikmati kandungan mengenai produk, perkhidmatan dan teknologi Microsoft. Artikel ini mungkin mengandungi ralat perbendaharaan kata, sintaks atau tatabahasa kerana ia diterjemahkan oleh mesin.

Kembangkan kemahiran anda
Jelajahi latihan
Dapatkan ciri baru terlebih dahulu
Sertai Office Insiders

Adakah maklumat ini membantu?

Terima kasih atas maklum balas anda!

Terima kasih atas maklum balas anda! Nampaknya ia mungkin akan membantu untuk menyambungkan anda kepada salah seorang daripada ejen sokongan Office kami.

×