Solusi tanpa kode: Menampilkan hari sejak terakhir kali diubah item daftar SharePoint

Solusi tanpa kode: Menampilkan hari sejak terakhir kali diubah item daftar SharePoint

Penting: Artikel ini adalah terjemahan mesin, lihat penafian. Temukan versi bahasa Inggris artikel di sini sebagai rujukan Anda.

20/9/2011 3:01 PM

dengan Justin Joyce, LANtek

Catatan: Artikel ini adalah bagian dari kumpulan postingan dari empat tahun blog mendapatkan titik untuk pengguna SharePoint.

Gambaran umum: Kustom penuaan laporan dengan kode tidak ada

Salah satu sering diminta fungsional situs SharePoint yang menua laporan untuk tugas atau item daftar. Dengan kata lain, berapa hari/bulan memiliki sejak item daftar terakhir diubah?

Pada permukaan ini tampaknya permintaan sangat sederhana. Setelah semua, kami memiliki tanggal untuk item yang dibuat dan diubah, kami memiliki kemampuan untuk menyimpan tanggal kustom ketika beberapa perubahan pada item terjadi melalui Penerima kejadian. Kami telah menghitung kolom mana kami bisa menyertakan rumus seperti Excel untuk bekerja dengan informasi kami. Ini tampak seperti proposisi cukup lurus ke depan. Kami pilih bidang tanggal, membuat kolom terhitung, dan lalu lakukan rumus sesuatu di sepanjang baris [DateField]-[hari ini]. Yah, tidak jadi cepat melalui! Sebagai siapa saja yang memiliki dicoba tugas ini "sederhana" tahu, coba gunakan sesuatu seperti [hari ini] dalam kolom terhitung penyebab masalah. Mencoba menyisipkan [hari ini] ke Anda terhitung kotak rumus kolom akan memberi Anda pesan kesalahan seperti ini:

Pesan kesalahan

Mengapa hal ini? Baik, ada hubungannya dengan cara terhitung kolom terhitung.

Mari kita rumus sederhana sebagai contoh:

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

Semua ini mengatakan bahwa jika kolom1 kurang dari atau sama dengan Column2, lalu Tampilkan OK, jika tidak menampilkan tidak OK. Ini adalah rumus dasar cukup khas untuk kolom terhitung dan membuat asumsi tentang item daftar yang berisi kolom ini: nilai untuk kolom1 dan Column2 tidak akan dapat mengubah tanpa acara pembaruan pada item daftar.

Benar, kolom terhitung akan hanya menghitung ulang saat daftar diperbarui (atau dibuat) karena mereka menganggap informasi Anda menghitung terdapat dalam item itu sendiri. Ini membuat masalah ketika Anda mencoba menggunakan sesuatu yang berubah terpisah dari bidang item, seperti tanggal hari ini.

Sekarang saya tidak dalam Rapat di mana mereka memutuskan bahwa ini adalah cara yang dihitung kolom akan berfungsi, namun, jika saya harus membuat tebakan saya menganggap bahwa mereka berfungsi dengan cara ini kinerja. Bayangkan jika Anda memiliki daftar ribuan beberapa item, masing-masing berisi kolom terhitung yang diperlukan pembaruan "hidup". Yang berarti bahwa beberapa mekanisme, mungkin pekerjaan pengatur waktu, harus iterasi melalui setiap item yang dimuat kolom terhitung yang sering kali dan memperbarui nilai. Ini bisa menjadi sangat pajak dari segi kinerja karena dengan penempatan yang lebih besar pekerjaan ini mungkin selalu menjalankan dan mengubah hal. Yang baru saja saya perkiraan, tapi membuat sedikit masuk akal jika memikirkan tentang hal itu.

Ada beberapa saran untuk solusi serupa mengambang luar sana yang melibatkan menipu SharePoint di untuk menerima nilai saat ini dengan terlebih dahulu membuat sebuah kolom bernama hari ini, lalu menambahkannya ke rumus Anda, lalu Hapus. Ini semua baik dan bagus, tetapi ingatlah apa yang saya mengatakan tentang saat kolom terhitung diperbarui. Nilai ini hanya akan berubah saat item yang diperbarui yang berarti nilai Anda akan segera tidak benar, khususnya dalam kasus perhitungan hari.

Saya telah melihat orang lain menggunakan pintar JavaScript untuk menulis nilai ke halaman. Ini akan bekerja juga, tapi saya cukup banyak pasti terhadap skrip klien saat bisa dihindari.

Implementasi:

Jadi apa yang harus dilakukan? Kolom terhitung tidak ada untuk disebut "tidak tetap" fungsi seperti hari ini. Dimungkinkan kami bisa mengembangkan beberapa kode kustom untuk menjaga ini untuk kami seperti kolom dihitung, pekerjaan pengatur waktu, atau jadwalkan proses untuk datang dan memperbarui setiap item tunggal yang memerlukan perhitungan ini dibuat. Yang membawa kita kembali ke masalah kinerja saya disebutkan dalam paragraf terakhir melalui, dan tambahan itu adalah solusi rapuh yang akan sangat tertentu ke situs/daftar/kolom dalam pertanyaan. Bagian atas dua masalah tersebut, Anda juga harus mencari seorang pria kutu buku, seperti sendiri, yang tahu cara kode dan meyakinkan dia untuk mengembangkan solusi ini untuk Anda. Tapi ada cara yang lebih mudah!

Jika Anda memiliki hak untuk membuat bidang dan mengedit halaman pada situs Anda, dan memiliki sedikit pengetahuan tentang XSLT dan membuat tampilan, Anda dapat menempatkan Templat XSL yang akan disertakan di dalam tampilan daftar dan setia akan menghitung nilai Anda setiap kali halaman diminta. Skenario ini akan menghapus perhatian kami melalui kinerja, dan tidak memerlukan kode kustom untuk dikembangkan dan disebarkan melalui solusi.

Tepat. Jadi bagaimana kami lakukan?

  1. Membuat atau memilih bidang yang akan berfungsi sebagai sumber. Harus tipe tanggal.

  2. Membuat bidang yang akan berfungsi sebagai tempat penampung untuk nilai yang dihitung.

  3. Menambahkan kedua bidang ini ke konten ketik dan menambahkan tipe konten tersebut ke daftar.

  4. Membuat tampilan daftar yang berisi kolom sumber dan tempat penampung.

  5. Mengunggah Templat XSL ke pustaka gaya.

  6. Atur properti "XSL Link" untuk komponen Web tampilan daftar melalui UI.

  7. Berhasil!

Mari kita Jelajahi kasus menggunakan contoh dan telusuri penerapan. Pelanggan kami ingin melihat daftar mereka utama yang akan memberitahu mereka berapa lama item daftar tertentu telah duduk di statusnya. Daftar ini berisi konten tipe berasal dari tipe Item dan ditambahkan ke daftar situs kustom. Sudah ada Penerima kejadian di tempat yang mencerminkan setiap kali bidang status itu pada item daftar diubah dan disimpan tanggal tersebut ke kolom disebut "Tanggal Status berubah". Semua kabel ini tidak diperlukan, dan bisa dilakukan dengan bidang tanggal apa pun (kebetulan ini implementasi tapi ragu untuk percobaan). Minimal Anda perlu adalah bidang tanggal sumber dan bidang tempat penampung untuk menangguhkan perhitungan Anda (lebih lanjut mengenai paragraf berikutnya) ditambahkan ke daftar Anda, meskipun sarankan Anda menggunakan kolom situs dan tipe konten situs jika Anda ingin menggunakan kembali solusi ini di tempat lain di situs Anda.

Jadi kami memiliki kami tanggal sumber yang dapat kita gunakan dalam perhitungan kami terhadap tanggal hari ini. Sekarang kita bisa membuat kolom situs kustom untuk digunakan sebagai wadah untuk nilai terhitung. Dalam kasus ini saya memilih untuk menggunakan kolom terhitung karena tidak akan bisa berubah di baru atau mengedit item formulir, tapi bisa dipilih untuk ditampilkan di tampilan karena kami tidak ingin pengguna memasukkan sewenang-wenang nilai dalam kolom ini. Bisa membingungkan untuk mengapa tidak sedang ditampilkan dalam tampilan, dsb.

Kini kami memiliki kolom situs kami, kami bisa menambahkannya ke kami tipe konten yang akan digunakan dalam daftar. Berikutnya, kami perlu membuat kami tampilan yang lebih baru dapat dikustomisasi dengan XSLT kami. Pastikan bahwa Anda membuat tampilan standar yang berisi kolom tanggal sumber Anda dan kolom hitung baru yang akan berfungsi sebagai tempat penampung untuk nilai yang dihitung.

Kami sekarang memiliki semuanya di tempat yang membutuhkan untuk mendukung laporan kustom menua kami. Semua tetap membuat Templat XSL kami, mengunggah ke pustaka gaya situs tersebut, dan menautkan ke tampilan daftar kami. Templat XSL kami akan menggunakan akan berisi beberapa normal SharePoint yang dihasilkan markup untuk menghasilkan tampilan serta kita sendiri markup kustom yang digunakan untuk mengganti bagian tertentu dari hal ini dan menghitung nilai yang diinginkan untuk kami.

Memberikan kredit mana kredit jatuh tempo, Templat XSL untuk melakukan perhitungan aktual yang saya gunakan untuk solusi ini ramah disediakan oleh "swirch" di forum MSDN:
http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Unduh XSL stylesheet (aging.zip) saya telah meletakkan bersama-sama terletak di sini:
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9! 104

Membuka ini dalam editor teks favorit Anda yang Anda akan melihat banyak markup SharePoint XSL normal untuk menyajikan tampilan, jika Anda terus menggulir ke bawah ke jalur 357 Anda akan melihat mulai Templat kustom yang saya tambahkan ke markup, yang pertama yang sedang Templat "DateDiff" yang diikuti "menghitung julian-hari" dan "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Ini adalah tiga template yang akan membuat dan menampilkan penghitungan dalam tampilan kami. Jika Anda akan menggunakan nama bidang yang berbeda dari yang telah ditentukan sebelumnya dalam artikel ini, Anda akan perlu masuk melalui Templat ini dan ganti referensi dengan nama. Ingat, untuk ini Anda akan ingin menggunakan nama INTERNAL bidang tidak nama tampilan.

Setelah Anda puas Templat sudah siap untuk masuk, navigasi ke pustaka gaya dan mengunggah di bawah folder "Lembar gaya XSL" lalu salin link ke file. Ini akan memungkinkan kami untuk dengan mudah membuat perubahan ke dalamnya nanti, atau tambahkan ke bagian yang berbeda dari situs saat kami harap.

Berikutnya, masuk ke daftar Anda dan pilih tampilan yang Anda buat sebelumnya dalam artikel ini. Dari "Tindakan situs" menu klik pada "Mengedit halaman".

Perintah Edit Halaman pada menu Tindakan Situs

Temukan komponen Web tampilan daftar pada halaman dan buka menu komponen Web dengan mengklik panah menghadap ke bawah kecil di sudut kanan atas. Dari menu ini pilih "Edit komponen Web".

Perintah Edit Komponen Web pada menu Komponen Web

Ini akan membuka menu komponen Web di sisi kanan atas jendela browser Anda.

Menu Komponen Web

Klik + untuk "Serba-serbi" bagian dan temukan properti "XSL Link".

Properti Link XSL pada menu Komponen Web

Tempelkan link ke file XSL Anda dalam pustaka gaya yang Anda salin ke bawah (ini bisa absolut atau relatif link).

Link file XSL ditempelkan di

Klik "OK" untuk menyimpan perubahan Anda, lalu klik tombol "Hentikan pengeditan" pada pita "Halaman" bagian atas halaman.

Tombol Hentikan Pengeditan pada tab Halaman

Jika semuanya yang dikonfigurasi dengan benar Anda sekarang akan melihat angka di kolom "Hari pada Status" Anda.

Kolom Hari Pada Status menampilkan angka

Dan akhirnya, inilah apa yang akan terlihat seperti dengan beberapa menguji data dari berbagai tanggal:

Laporan Umur menampilkan data uji

Ringkasan:

Tidak ada: diformat dengan baik, kuat dan lebih baik melakukan cara untuk membuat laporan yang menua di dalam SharePoint, lengkap dengan implementasi tanpa kode sederhana. Ini memiliki cukup beberapa kemungkinan aplikasi selain yang menggunakan huruf kami menjelajahi di sini. Skenario umum lain untuk tipe laporan yang melampirkan ke daftar tugas sehingga Anda bisa melihat berapa lama sudah tugas dibuat secara sekilas.

Menikmati!

--Justin

Justin Joyce, LANtek

Komentar

Langkah-langkah hilang
10/8/2012 3:51 AM
ok saya mengikuti langkah-langkah, tapi harus ada sesuatu yang hilang - bagaimana XSL tahu tanggal yang akan digunakan, atau yang bidang untuk menambahkan hari sejak ke? suka saat langkah-langkah yang tak terjawab.

Menyetujui tanpa kode!
30/8/2012 12:12 PM
saya setuju - saya tidak berpikir ini benar-benar dihitung sebagai 'tidak ada kode'.
Menariknya, melalui beberapa screwup SharePoint, saya memiliki kolom terhitung bekerja menggunakan hari ini … tidak yakin bagaimana atau mengapa karena saya tidak bisa melakukannya lagi, namun yang masih ada dan berfungsi.

Rumus untuk "Hari pada Status" kolom hitung?
5/2/2012 7:39 di
Justin - apa yang rumus yang Anda gunakan untuk kolom terhitung situs "Hari pada Status" (tempat penampung kolom)? Apakah "= hari ini"?

SharePoint 2007
2/12/2011 11 lalu
saat ini saya tidak mencoba untuk menerapkan solusi ini ke SharePoint 2007, tetapi saya Cari ke dalamnya. Sayangnya ada properti XslLink tidak muncul pada komponen web melalui UI.

Posting
30/11/2011 9:53 pada
Halo,
posting.
Saya menggunakan SharePoint 2007.
saya tidak memiliki bagian lain-lain seperti yang disebutkan di atas.
Apakah Anda memiliki langkah-langkah untuk konfigurasi SP2007?
Terima kasih.

Kembali: Solusi tanpa kode: Menampilkan hari sejak SharePoint item daftar terakhir diubah
10/11/2011 8:24 pada
Hi Chris.
besar temukan!
saya akan melihat apa yang Anda posting hopefully kemudian hari ini dan Lihat jika saya bisa membuat solusi ini sedikit lebih kuat.
senang Anda menyukai postingan, dan senang untuk menemukan solusi untuk format tanggal Eropa. :)
-Justin

Solusi untuk format tanggal Eropa
10/11/2011 6:45 pada
Hi lagi Justin,
FYI, saya menemukan solusi untuk masalah saya disebutkan sebelumnya di Halaman ini;
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Format tanggal Eropa
10/7/2011 3:59 AM
Hi Justin,
ini adalah terima kasih bagus solusi, dan jenis hal saya telah menghabiskan hari terakhir dua mencari! Namun saya mengalami masalah dengan sedikit dan saya berharap Anda bisa membantu saya.
saya telah mengubah kode sedikit untuk calcultate jumlah hari sampai sesuatu terjadi, bukan karena, dengan beralih variabel dalam baris terakhir dari fungsi "DateDiff";

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

namun saya hanya bisa mendapatkan untuk caclulate perbedaan dengan benar setengah dari waktu. Jadi misalnya dengan tanggal ini (format dd/MM/yyyy);

30/12/2011

menghitung dengan benar, tapi dengan tanggal ini (sama format)

12/10/2011

menghitung sebagai jika jika 10-Des-2011 daripada 12-Okt-2011.
saya mencoba cukup beralih posisi nilai hari dan bulan dalam "JulianStartDate" variabel, 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 memperbaiki masalah dengan tanggal kedua, namun itu lalu tidak benar untuk tanggal pertama!
saya juga mencoba mengubah panggilan FormatDateTime menggunakan Eropa LCIDs dan berbagai perubahan terakhir parameter FormatDateTime (misalnya ddMMyyyy, MMddyyyy) dengan penyesuaian yang tepat untuk substring parameter posisional tidak berhasil.
saya akan sangat menghargai saran Anda dapat menawarkan.
Terima kasih,
Chris

Tanpa kode
2011/9/21 4 lalu
saya tidak berpikir bahwa XSL persyaratan untuk solusi "tanpa kode", sebagai memahami XSL bahasa ini bukan untuk semua orang - namun tidak melibatkan pemrograman. Selain itu: solusi bagus, terima kasih!

Catatan: Penafian Terjemahan Mesin: Artikel ini telah diterjemahan oleh sistem komputer tanpa campur tangan manusia. Microsoft menawarkan terjemahan mesin ini untuk membantu pengguna yang bukan penutur bahasa Inggris agar dapat menikmati konten tentang produk, layanan, dan teknologi Microsoft. Karena artikel ini diterjemahkan oleh mesin, mungkin akan terdapat kesalahan kosa kata, sintaksis, atau tata bahasa.

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung ke Office Insiders

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×