Arsip Kategori: Pengembangan SharePoint

Berhati-hatilah melanggar perubahan ItemStyle.xsl

Saya bekerja dengan ItemStyle.xsl untuk menyesuaikan tampilan konten permintaan Web dan benar tentang waktu makan siang, Saya membuat melanggar mengubah xsl. Saya tidak menyadari hal itu, Tapi ini mencapai jauh efek seluruh situs koleksi. Aku pergi untuk makan siang dan setelah saya kembali, melihat pesan ini muncul dalam sekelompok tempat:

Mampu menampilkan bagian Web ini. Untuk memecahkan masalah, membuka halaman Web ini di Windows SharePoint Services-kompatibel HTML editor seperti Microsoft Office SharePoint Designer. Jika masalah berlanjut, hubungi administrator server Web Anda.

Aku menyalahkan klien (tidak menyadari belum bahwa itu adalah kesalahan saya saat ini) tapi akhirnya menyadari bahwa intellisense visual studio adalah peringatan saya bahwa saya memiliki kecacatan XSL. Aku mengoreksi itu dan segala sesuatu mulai bekerja.

Menjadi terkutuk berhati-hati ketika bekerja dengan ItemStyle.xsl (dan setiap file XSL global) — melanggar mereka mempengaruhi banyak artefak dalam situs koleksi.

<akhir />

Menampilkan konten permintaan Web bagian hasil dalam Grid / Tabel

Ikhtisar dan tujuan

Keluar dari kotak, MOSS’ Konten permintaan Web bagian (CQWP) Menampilkan hasil dalam format daftar, mirip dengan hasil pencarian. Hal ini juga memungkinkan untuk menampilkan hasil dalam grid format (yaitu. Format tabel HTML). Grid format lebih baik dalam beberapa keadaan. Saya menjelaskan bagaimana untuk mencapai efek dalam artikel ini.

Bisnis skenario

Saya telah bekerja dengan klien pada peluncuran MOSS perusahaan-lebar. Kami telah merancang taksonomi mereka sedemikian rupa sehingga proyek warga negara kelas pertama dalam hirarki dan memiliki situs sendiri tingkat atas. Manajer Proyek menjaga daftar singleton informasi ringkasan proyek, seperti judul, anggaran, tanggal penyelesaian yang diharapkan, anggaran yang tersisa dan bidang ringkasan tipe lainnya. Oleh "singleton" Maksudku daftar SharePoint kustom dijamin mengandung hanya satu item. Mudah, tampak seperti ini:

gambar

Pendekatan teknis adalah sama seperti yang dijelaskan Sini (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP menggunakan XSL mengubah untuk memancarkan HTML untuk browser untuk membuat.

Saya selalu membayangkan hasil sebelum menyelam ke dalam XSL karena XSL adalah mimpi buruk. Berikut adalah hasil yang saya inginkan:

gambar

HTML seperti ini menghasilkan hasil yang:

<HTML>
 <bodyHTMLan >><  kuat >  pesan yang kuat.</strong>  </body>  </html> ">
 <Pusat>
 <Meja perbatasan= 1>

<!-- Label-->
 <TR bgcolor= biru>
 <TD><font warna= putih><b>Nama proyek</b></font></TD>
 <TD menyelaraskan= kanan><font warna= putih><b>Tanggal lengkap</b></font></TD>
 <TD menyelaraskan= kanan><font warna= putih><b>Anggaran</b></font></TD>
 <TD menyelaraskan= kanan><font warna= putih><b>Biaya sebenarnya</b></font></TD>
 <TD><font warna= putih><b>Keseluruhan Status</b></font></TD>
 </TR>

<TR>
 <TD>Re-kawat ruang komputer.</TD>
 <TD menyelaraskan= kanan>02/01/08</TD>
 <TD menyelaraskan= kanan>22,500.00</TD>
 <TD menyelaraskan= kanan>19,000.00</TD>
 <TD>Berlangsung</TD>
 </TR>

<TR>
 <TD>Penyediaan server untuk meng-Upgrade SQL</TD>
 <TD menyelaraskan= kanan>04/01/08</TD>
 <TD menyelaraskan= kanan>7,500.00</TD>
 <TD menyelaraskan= kanan>0.00</TD>
 <TD>Direncanakan</TD>
 </TR>

</Meja>
 </Pusat>
 </bodyHTMLan >><  kuat >  pesan yang kuat.</strong>  </body>  </html> ">
</HTML>

Pendekatan

Ikuti langkah-langkah untuk membuat grid:

  1. Mengidentifikasi komponen grid (baris kolom).
  2. Mendefinisikan dan menciptakan situs diperlukan kolom.
  3. Membuat sub situs untuk proyek dan daftar singleton.
  4. Tambahkan CQWP ke halaman web dan mengkonfigurasinya untuk mencari daftar Anda.
  5. Memodifikasi CQWP XML untuk mengumpulkan kolom tambahan.
  6. Memodifikasi XSL untuk menghasilkan daftar.

Aku akan berkonsentrasi pada nomor enam. Nomor satu sampai empat adalah lurus ke depan dan sesuatu yang setiap pengguna CQWP telah dilakukan. Nomor lima telah didokumentasikan dengan baik oleh orang lain termasuk layar-shot sarat artikel ini lengkap dari MSDN Sini (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) dan Heather Salomo blog Sini (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Mur dan baut

Memulai dan menerapkan langkah-langkah satu melalui lima per dokumentasi MSDN dan Heather Salomo artikel.

Pada titik ini, Anda telah menambahkan CQWP Anda ke halaman dan Anda memiliki Anda <CommonViewFields> dikonfigurasi sebagai diperlukan.

Mengikuti langkah-langkah biasa, Saya mendapatkan hasil menengah ini:

1. Membuat jenis konten, daftar kustom templatized untuk tipe konten dan dua situs. Berikut adalah jenis konten:

gambar

Berikut adalah struktur situs:

gambar

2. Tambahkan CQWP setelah membuat saya subsites proyek dan singleton Daftar ringkasan proyek:

gambar

3. Menambahkan semua informasi tambahan yang saya ingin melalui <CommonViewFields>:

        <properti Nama="CommonViewFields" jenis="string">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</properti>

Perhatikan bahwa aku harus menjaga semua bidang properti pada satu baris atau itu tidak akan bekerja (CQWP akan memberitahu saya bahwa query kembali tidak ada item).

4. Pada titik ini, kita sudah siap untuk bergerak melampaui artikel MSDN dan sandal di atas untuk Heather Salomo artikel. Ikuti langkah-langkah yang mulai dekat langkah #5 untuk membuat disesuaikan / unghosted versi ItemStyle.xsl. Saya mengikuti saran Heather, melalui langkah 11 dan mendapatkan hasil menengah ini:

4.1: Nama template XSL saya sebagai berikut:

<Extensible Stylesheet Language:Nama template = "Grid" cocok = "Row[@Style = 'Grid']" mode = "itemstyle">

Juga sedikit mengubah dia menyarankan <Extensible Stylesheet Language:untuk setiap …> dengan menambahkan <br /> Tag untuk menyediakan daftar cleaner:

    <Extensible Stylesheet Language:untuk setiap Pilih="@*">
      P:<Extensible Stylesheet Language:nilai dari Pilih="Nama()" /><br/>
    </Extensible Stylesheet Language:untuk setiap>

4.2: Cara mengubah bagian web, pergi ke tampilan dan pilih "Grid" gaya:

gambar

Menerapkan perubahan dan inilah hasilnya:

gambar

Kita bisa melihat dari atas bahwa bidang yang kita ingin (Nama proyek, biaya, status, dll) tersedia bagi kita untuk digunakan ketika kita memancarkan HTML. Tidak hanya itu, Tapi kita melihat nama-nama yang kita harus referensi kolom dalam XSL. Misalnya, kita referensi Status proyek sebagai "Project_x005F_x0020_Name".

Pada titik ini, kami berangkat dari Heather's blog dan dari atas bahu raksasa ini, Saya menambahkan sedikit saya sendiri.

ContentQueryMain.xsl

CATATAN: Ketika membuat perubahan baik ContentQueryMain.xsl maupun ItemStyle.xsl, Anda perlu memeriksa berkas tersebut kembali sebelum Anda melihat efek dari perubahan Anda.

Untuk membuat grid tujuan, MOSS menggunakan dua file XSL yang berbeda untuk menghasilkan hasil yang kita lihat dari CQWP. Untuk menghasilkan sedikit sebelumnya output, kami diubah ItemStyle.xsl. MOSS benar-benar menggunakan file XSL lain, ContentQueryMain.xsl ke dalam hubungannya dengan ItemStyle.xsl untuk menghasilkan HTML yang. Seperti namanya, ContentQueryMain.xsl adalah "utama" XSL yang mengontrol aliran keseluruhan terjemahan. Iterates semua item yang ditemukan dan melewati mereka satu per satu untuk template ItemStyle.xsl. Kami akan mengubah ItemStyle.xsl untuk menghasilkan terbuka <Meja> Tag sebelum memancarkan baris pertama dari data dan penutupan <Meja> Tag setelah memancarkan baris terakhir. Untuk mencapai hal ini, ContentQueryMain.xsl yang dimodifikasi untuk memberikan dua parameter untuk kami "grid" template di ItemStyle.xsl, "baris terakhir" dan "baris saat ini". ItemStyle.xsl menggunakan ini untuk kondisional memancarkan Tag diperlukan.

Menggunakan teknik Heather Salomo, Kami mencari ContentQueryMain.xsl. Terletak di tempat yang sama seperti ItemStyle.xsl. Tembakan layar harus membantu:

gambar

Kita perlu untuk membuat perubahan berikut:

  • Memodifikasi sebuah template xsl, "CallItemTemplate" yang benar-benar memanggil template Grid kami di ItemStyle.xsl. Kami akan menyampaikan dua parameter ke Grid template sehingga akan memiliki data yang dibutuhkan untuk menghasilkan kondisional pembukaan dan penutupan <Meja> Tags.
  • Memodifikasi sedikit lain dari ContentQueryMain.xsl bahwa panggilan "CallItemTemplate" untuk lulus "LastRow" parameter jadi LastRow yang akan diteruskan ke template Grid kami.

Menemukan template bernama "OuterTemplate.CallItemTemplate" diidentifikasi oleh string:

  <Extensible Stylesheet Language:template Nama="OuterTemplate.CallItemTemplate">

Mengganti seluruh template sebagai berikut:

  <Extensible Stylesheet Language:template Nama="OuterTemplate.CallItemTemplate">
    <Extensible Stylesheet Language:Param Nama="CurPosition" />

    <!--
      Tambahkan "LastRow" parameter.
      Kami hanya menggunakannya ketika lulus gaya item dalam "Grid".
    -->
    <Extensible Stylesheet Language:Param Nama="LastRow" />

    <Extensible Stylesheet Language:memilih>
      <Extensible Stylesheet Language:Kapan tes="@Style = 'NewsRollUpItem'">
        <Extensible Stylesheet Language:menerapkan template Pilih="." mode="itemstyle">
          <Extensible Stylesheet Language:dengan param Nama="EditMode" Pilih="$cbq_iseditmode" />
        </Extensible Stylesheet Language:menerapkan template>
      </Extensible Stylesheet Language:Kapan>
      <Extensible Stylesheet Language:Kapan tes="@Style = 'NewsBigItem'">
        <Extensible Stylesheet Language:menerapkan template Pilih="." mode="itemstyle">
          <Extensible Stylesheet Language:dengan param Nama="CurPos" Pilih="$CurPosition" />
        </Extensible Stylesheet Language:menerapkan template>
      </Extensible Stylesheet Language:Kapan>
      <Extensible Stylesheet Language:Kapan tes="@Style = 'NewsCategoryItem'">
        <Extensible Stylesheet Language:menerapkan template Pilih="." mode="itemstyle">
          <Extensible Stylesheet Language:dengan param Nama="CurPos" Pilih="$CurPosition" />
        </Extensible Stylesheet Language:menerapkan template>
      </Extensible Stylesheet Language:Kapan>

      <!--
              Melewati posisi saat ini dan lastrow ke Grid itemstyle.xsl template.
              ItemStyle.xsl akan menggunakannya untuk memancarkan terbuka dan menutup <Meja> Tags.
      -->
      <Extensible Stylesheet Language:Kapan tes="@Style = 'Grid'">
        <Extensible Stylesheet Language:menerapkan template Pilih="." mode="itemstyle">
          <Extensible Stylesheet Language:dengan param Nama="CurPos" Pilih="$CurPosition" />
          <Extensible Stylesheet Language:dengan param Nama="Terakhir" Pilih="$LastRow" />
        </Extensible Stylesheet Language:menerapkan template>
      </Extensible Stylesheet Language:Kapan>

      <Extensible Stylesheet Language:Jika tidak>
        <Extensible Stylesheet Language:menerapkan template Pilih="." mode="itemstyle">
        </Extensible Stylesheet Language:menerapkan template>
      </Extensible Stylesheet Language:Jika tidak>
    </Extensible Stylesheet Language:memilih>
  </Extensible Stylesheet Language:template>

Komentar menggambarkan tujuan perubahan.

Tentu saja, "OuterTemplate.CallItemTemplate" itu sendiri disebut dari template lain. Menemukan template itu dengan mencari string teks ini:

<Extensible Stylesheet Language:template Nama="OuterTemplate.Body">

Gulir melalui petunjuk di OuterTemplate.Body dan masukkan LastRow parameter sebagai berikut (ditampilkan sebagai komentar dalam huruf miring):

<Extensible Stylesheet Language:panggilan-template Nama="OuterTemplate.CallItemTemplate">
  <Extensible Stylesheet Language:dengan param Nama="CurPosition" Pilih="$CurPosition" />
  <!-- Masukkan LastRow parameter. -->
  <Extensible Stylesheet Language:dengan param Nama="LastRow" Pilih="$LastRow"/>
</Extensible Stylesheet Language:panggilan-template>

Setelah semua ini, kami akhirnya memiliki hal-hal yang diatur dengan benar sehingga dapat memancarkan ItemStyle.xsl kami <Meja> Tag di tempat yang tepat.

ItemStyle.Xsl

CATATAN: Lagi, Check in ItemStyle.xsl setelah membuat perubahan sehingga Anda melihat efek dari perubahan.

Kami memiliki dua tugas di sini:

  • Mengganti seluruh Grid template. Anda dapat menyalin/paste dari bawah.
  • Tambahkan beberapa omong kosong di luar definisi template yang memungkinkan "formatcurrency" template untuk bekerja. (Anda dapat memberitahu bahwa saya memiliki pegangan lemah XSL).

Pertama, di dekat bagian atas ItemStyle.xsl, Tambahkan baris ini:

  <!-- Beberapa omong kosong yang memungkinkan kita untuk menampilkan AS. mata uang. -->
  <Extensible Stylesheet Language:desimal-format Nama="Staf" digit="D" />

  <Extensible Stylesheet Language:template Nama="Standar" pertandingan="*" mode="itemstyle">

Catatan bahwa saya menambahkan langsung sebelum <Extensible Stylesheet Language:Nama template = "bawaan" …> definisi.

Berikutnya, kembali ke template Grid kami. Mengganti seluruh Grid template dengan kode di bawah ini. Itu adalah benar-benar berkomentar, Tapi jangan ragu untuk email saya atau meninggalkan komentar di blog saya jika Anda memiliki pertanyaan.

  <Extensible Stylesheet Language:template Nama="Grid" pertandingan="Baris[@Style = 'Grid']" mode="itemstyle">

    <!--
      ContentMain.xsl melewati CurPos dan terakhir.
      Kami menggunakan ini untuk kondisional memancarkan terbuka dan menutup <Meja> Tags.
    -->
    <Extensible Stylesheet Language:Param Nama="CurPos" />
    <Extensible Stylesheet Language:Param Nama="Terakhir" />

    <!-- Variabel berikut dimodifikasi dari ItemStyle.xsl standar -->
    <Extensible Stylesheet Language:variabel Nama="SafeImageUrl">
      <Extensible Stylesheet Language:panggilan-template Nama="OuterTemplate.GetSafeStaticUrl">
        <Extensible Stylesheet Language:dengan param Nama="UrlColumnName" Pilih="'ImageUrl'"/>
      </Extensible Stylesheet Language:panggilan-template>
    </Extensible Stylesheet Language:variabel>
    <Extensible Stylesheet Language:variabel Nama="SafeLinkUrl">
      <Extensible Stylesheet Language:panggilan-template Nama="OuterTemplate.GetSafeLink">
        <Extensible Stylesheet Language:dengan param Nama="UrlColumnName" Pilih="'LinkUrl'"/>
      </Extensible Stylesheet Language:panggilan-template>
    </Extensible Stylesheet Language:variabel>
    <Extensible Stylesheet Language:variabel Nama="DisplayTitle">
      <Extensible Stylesheet Language:panggilan-template Nama="OuterTemplate.GetTitle">
        <Extensible Stylesheet Language:dengan param Nama="Judul" Pilih="@Title"/>
        <Extensible Stylesheet Language:dengan param Nama="UrlColumnName" Pilih="'LinkUrl'"/>
      </Extensible Stylesheet Language:panggilan-template>
    </Extensible Stylesheet Language:variabel>
    <Extensible Stylesheet Language:variabel Nama="LinkTarget">
      <Extensible Stylesheet Language:Jika tes="@OpenInNewWindow = 'Benar'" >_blank</Extensible Stylesheet Language:Jika>
    </Extensible Stylesheet Language:variabel>

    <!--
      Di sini kita mendefinisikan variabel, "tableStart".  Ini berisi HTML yang kita gunakan untuk mendefinisikan pembukaan tabel serta label kolom.  Perhatikan bahwa jika CurPos = 1, ini termasuk HTML dalam CDATA tag.
      Jika tidak, ini akan menjadi kosong.

      Nilai tableStart adalah emited setiap kali ItemStyle disebut melalui ContentQueryMain.xsl.
    -->
    <Extensible Stylesheet Language:variabel Nama="tableStart">
      <Extensible Stylesheet Language:Jika tes="$CurPos = 1">
        <![CDATA[
        <perbatasan tabel = 1>
          <TR bgcolor = "biru">
            <TD><warna font = "putih"><b>Nama proyek</b></font></TD>
            <TD align = "kanan"><warna font = "putih"><b>Tanggal lengkap</b></font></TD>
            <TD align = "kanan"><warna font = "putih"><b>Anggaran</b></font></TD>
            <TD align = "kanan"><warna font = "putih"><b>Biaya sebenarnya</b></font></TD>
            <TD><warna font = "putih"><b>Keseluruhan Status</b></font></TD>
          </TR>
        ]]>
      </Extensible Stylesheet Language:Jika>
    </Extensible Stylesheet Language:variabel>

    <!--
      Variabel lain, tableEnd hanya mendefinisikan menutup meja tag.

      Seperti dengan tableStart, Hal ini selalu emited.  Inilah sebabnya mengapa nilainya ditetapkan kondisional didasarkan pada apakah kita telah telah lulus baris terakhir oleh ContentQueryMain.xsl.
    -->
    <Extensible Stylesheet Language:variabel Nama="tableEnd">
      <Extensible Stylesheet Language:Jika tes="$CurPos = $Last">
        <![CDATA[ </Meja> ]]>
      </Extensible Stylesheet Language:Jika>
    </Extensible Stylesheet Language:variabel>

    <!--
      Selalu mengeluarkan isi tableStart.  Jika hal ini tidak baris pertama yang diberikan kepada kita oleh ContentQueryMain.xsl, kemudian kami tahu nilai akan kosong.

      Menonaktifkan output melarikan diri karena ketika tableStart itu tidak kosong, ini termasuk HTML sebenarnya yang kita inginkan yang akan diberikan oleh browser.  Jika kami tidak meminta XSL parser untuk menonaktifkan output melarikan diri, ini akan menghasilkan hal-hal seperti"&lt;Meja&gt;" daripada"<Meja>".
    -->
    <Extensible Stylesheet Language:nilai dari Pilih="$tableStart" melarikan diri menonaktifkan output="Ya"/>


    <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>
        <Extensible Stylesheet Language:nilai dari Pilih="@Project_x005F_x0020_Name"/>
      </TD>

      <TD menyelaraskan="kanan">
        <Extensible Stylesheet Language:nilai dari Pilih="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD menyelaraskan="kanan">
        <Extensible Stylesheet Language:panggilan-template Nama="formatcurrency">
          <Extensible Stylesheet Language:dengan param Nama="nilai" 
Pilih="@Project_x005F_x0020_Budget"></Extensible Stylesheet Language:dengan param> </Extensible Stylesheet Language:panggilan-template> </TD> <TD menyelaraskan="kanan"> <Extensible Stylesheet Language:panggilan-template Nama="formatcurrency"> <Extensible Stylesheet Language:dengan param Nama="nilai" Pilih="@Project_x005F_x0020_Expenses">
</Extensible Stylesheet Language:dengan param> </Extensible Stylesheet Language:panggilan-template> </TD> <TD> <Extensible Stylesheet Language:nilai dari Pilih="@Project_x005F_x0020_Status"/> </TD> <!-- Semua berikut adalah komentar untuk memperjelas hal. Namun, membawa kembali dan hal itu menjadi <TD> untuk melihat efek. --> <!-- <div id = "linkitem" class = "barang"> <Extensible Stylesheet Language:Jika tes = "panjang string($SafeImageUrl) != 0"> <div kelas = "gambar-daerah-kiri"> <href = "{$SafeLinkUrl}" target = "{$LinkTarget}"> <img kelas = "gambar-fixed-width" src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </a> </div> </Extensible Stylesheet Language:Jika> <div kelas = "item tautan"> <Extensible Stylesheet Language:panggilan-template
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <href = "{$SafeLinkUrl}"
target = "{$LinkTarget}" title = "{@LinkToolTip}"> <Extensible Stylesheet Language:nilai dari pilih = "$DisExtensible Stylesheet LanguageyTitle" /> </a> <div kelas = "Deskripsi"> <Extensible Stylesheet Language:nilai-dari select="@Description" /> </div> </div> </div>
--> </TR> <!-- Memancarkan menutup meja tag. Jika kami tidak berada pada baris terakhir, ini akan menjadi kosong. --> <Extensible Stylesheet Language:nilai dari Pilih="$tableEnd" melarikan diri menonaktifkan output="Ya"/> </Extensible Stylesheet Language:template> <Extensible Stylesheet Language:template Nama="formatcurrency"> <Extensible Stylesheet Language:Param Nama="nilai" Pilih="0" /> <Extensible Stylesheet Language:nilai dari Pilih='format nomor($nilai, "$DDD,DDD,DDD.DD", "staf")' /> </Extensible Stylesheet Language:template>

Standar WSS/MOSS Data Entry layar tidak mendukung Cascading Drop-Down (atau lain intra-dari komunikasi)

UPDATE (04/2008): Besar blog entry ini menunjukkan pendekatan baik berbasis javascript untuk masalah ini: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): Blog entry ini tampak menjanjikan juga: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Beberapa kali dalam seminggu, Jika tidak setiap hari, Forum pengguna menjelaskan persyaratan yang biasanya akan bertemu melalui drop-down cascading. Misalnya, Aku punya dua drop-down kontrol:

  • Daftar AS. Serikat
  • Daftar AS. Kota-kota.

Sebagai penyedia UI bertanggung jawab, kita ingin beroperasi seperti ini:

  • Paul memilih AS. negara dari drop-down.
  • Hal ini menyebabkan kota tarik-turun untuk menyaring hanya kota-kota yang milik negara dipilih.
  • Paul memilih kota dari daftar ini disaring.

Ada tidak ada dukungan out-of-the-box untuk fitur ini. Sebenarnya, ada tidak ada OOB dukungan untuk setiap jenis komunikasi intra-bentuk langsung. Ini meliputi pemrograman menyembunyikan/memungkinkan/menonaktifkan bidang dalam menanggapi perubahan lapangan di tempat lain pada formulir.

Tujuan nyata dari artikel ini untuk menggambarkan solusi yang mungkin dan ini adalah pilihan yang saya tahu mereka:

  1. Mengembangkan jenis kolom kustom. Sebagai adat-kolom-pengembang, Anda memiliki kontrol penuh atas "dunia" dari kolom kustom. Anda dapat menerapkan cascading tarik-turun itu.
  2. Pertimbangkan untuk menggunakan alur kerja. Dalam beberapa kasus, Anda ingin secara otomatis menetapkan nilai bidang berdasarkan nilai bidang lain. Dalam hal ini, Anda biasanya akan mencoba menggunakan kolom dihitung, tetapi beberapa kali, ini hanya tidak akan mendapatkan pekerjaan yang dilakukan. SharePoint Designer alur kerja adalah relatif mengelola ramah alternatif untuk menjatuhkan ke dalam kode, dan visual studio. Jika Anda pergi rute ini, menjadi sadar akan masalah yang ditangani oleh Artikel ini (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Event handler: Seperti alur kerja, ini adalah solusi setelah-the-fakta. Anda event handler adalah Majelis .NET (C#, VB.NET) untuk SharePoint yang melewati kontrol. Objek yang Anda mengembangkan memiliki akses ke data daftar (dan seluruh object model) dan dapat melakukan perhitungan apapun dibutuhkan.
  4. Menggunakan SharePoint Designer untuk menciptakan bentuk-bentuk kustom masuk. Saya tidak memiliki pengalaman langsung dengan pendekatan ini, tapi aku mendengar mereka melakukan hal-hal yang baik dengan NewForm.aspx hari ini 🙂
  5. Roll Anda sendiri ASP.NET data entri fungsi (sebagai halaman web berdiri sendiri atau sebagai bagian web) dan menggunakannya.

Jika ada yang tahu pilihan lain dan/atau lebih baik, Silakan kirim komentar dan saya akan memperbarui tubuh posting ini.

<akhir />

Technorati Tags:

Membuat grafik Bar di SharePoint

Sekilas pandang:

(UPDATE 12/04/07: Ditambahkan lain sumber daya yang menarik pada akhir yang menghubungkan ke blog lain bahwa alamat ini melalui bagian web yang sangat menarik)

Blog entry ini menjelaskan cara membuat grafik dalam SharePoint. Ini bekerja di WSS dan MOSS lingkungan seperti itu hanya tergantung pada bagian web Lihat data.

Keseluruhan pendekatan adalah sebagai berikut:

  1. Membuat daftar atau dokumen perpustakaan yang berisi data yang Anda ingin membuat grafik.
  2. Tempat terkait dokumen Perpustakaan / kustom daftar ke halaman dan mengubahnya menjadi data tampilan web bagian (DVWP).
  3. Memodifikasi DVWP XSL untuk menghasilkan HTML yang menunjukkan sebagai grafik.

Bisnis skenario / Setup:

Saya telah membuat daftar kustom dengan kolom judul standar dan satu kolom tambahan, "Status". Model ini (sangat mudah) "otorisasi untuk biaya" skenario yang mana judul mewakili proyek dan Status nilai dari daftar:

  • Diusulkan
  • Dalam proses
  • Terhenti

Tujuannya adalah untuk menghasilkan grafik batang horizontal interaktif yang menunjukkan kode status ini.

Saya telah dihuni daftar dan tampak seperti ini:

gambar

Membuat bagian Web Lihat Data:

Membuat DVWP dengan menambahkan daftar kustom ke halaman (Halaman situs dalam kasus saya) dan ikuti petunjuk Sini (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Selain hanya membuat DVWP, kita juga perlu untuk mengatur properti paging untuk menunjukkan semua baris yang tersedia. Bagi saya, ini terlihat seperti ini:

gambar

Pada titik ini, Saya selalu menutup SPD dan browser. Saya kemudian kembali membuka halaman menggunakan browser. Hal ini untuk menghindari sengaja mucking tata letak bagian web di Halaman.

Memodifikasi XSLT:

Sekarang saatnya untuk mengubah XSLT.

Saya selalu menggunakan visual studio untuk ini. (Lihat Sini untuk catatan penting tentang intellisense yang akan membantu Anda banyak).

Cara membuat sebuah proyek kosong menambahkan empat file baru (mengganti kata-kata "asli" dan "New" sebagaimana mestinya):

  • Original.XSLT
  • New.XSLT
  • Params.xml asli
  • Baru Params.xml

Dalam kasus saya, tampak seperti ini:

gambar

Memodifikasi bagian web dan menyalin params dan XSL aslinya"" Versi dalam Visual Studio.

Tujuan di sini adalah untuk menyebabkan XSL untuk mengubah hasil kami kembali dari DVWP query ke HTML yang menuliskan sebagai grafik.

Untuk tujuan ini, Hal ini membantu untuk pertama-tama mempertimbangkan apa HTML akan terlihat seperti sebelum kita mendapatkan bingung dengan kegilaan yang dikenal sebagai "XSL". (Untuk menjadi jelas, Berikut ini adalah hanya sebuah contoh; jangan ketik atau copy/paste ke visual studio. Saya memberikan pukulan penuh titik awal untuk itu kemudian dalam menulis-up). Berikut contoh grafik dituliskan sesuai HTML segera setelah:

Contoh Grafik Batang

HTML yang sesuai:

<HTML>
<bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">
<Pusat>
<Tabel lebar = 80%>
<TR><TD><Pusat>Grafik batang horizontal</TD></TR>
<TR>
<TD align = "pusat">
<Tabel perbatasan = "1" lebar = 80%>
<TR>
<lebar TD = 10%>Buka</TD>
<TD><Tabel cellpadding ="0" cellspacing ="0" perbatasan = 0 width = 50%><TR bgcolor = merah><TD>&nbsp;</TD></TR></Meja></TD>
</TR>
<TR>
<lebar TD = 10%>Ditutup</TD>
<TD><Tabel cellpadding ="0" cellspacing ="0" perbatasan = 0 lebar = 25%><TR bgcolor = merah><TD>&nbsp;</TD></TR></Meja></TD>
</TR>
<TR>
<lebar TD = 10%>Terhenti</TD>
<TD><Tabel cellpadding ="0" cellspacing ="0" perbatasan = 0 lebar = 25%><TR bgcolor = merah><TD>&nbsp;</TD></TR></Meja></TD>
</TR>
</Meja>
</TD>
</TR>
</Meja>
</bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">
</HTML>

Saya menggunakan pendekatan mati sederhana untuk menciptakan Bar saya dengan menetapkan warna latar belakang satu baris untuk "merah".

Sini dibawa pulang ini: Di ujung, Semua kita lakukan adalah membuat HTML dengan baris dan kolom.

Template XSLT:

Saya telah disalin XSLT yang menghasilkan grafik bar horisontal. Hal ini cukup baik komentar sehingga saya tidak akan menambahkan banyak di sini kecuali catatan ini:

  • Saya mulai dengan default XSL yang SharePoint Designer memberi saya ketika saya pertama kali membuat DVWP.
  • Saya mampu mengurangi ini dari SPD 657 garis untuk 166 garis.
  • Saya tidak main-main dengan parameter XML file (yang terpisah dari XSL dan Anda akan tahu apa yang saya maksud ketika Anda pergi untuk memodifikasi DVWP sendiri; ada dua file, Anda dapat memodifikasi). Namun, untuk menyederhanakan, Apakah menghapus hampir semua dari mereka dari XSL. Ini berarti bahwa jika Anda ingin membuat menggunakan parameter-parameter, Anda hanya perlu menambahkan variabel definisi mereka kembali ke XSL. Yang akan mudah karena Anda akan memiliki definisi variabel XSL asli dalam proyek visual studio.
  • Anda seharusnya mampu untuk copy dan paste ini langsung ke proyek visual studio. Kemudian, menghapus panggilan saya dan masukkan panggilan Anda sendiri untuk "ShowBar".
  • Bor turun karya menciptakan <a href> Seperti ini: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Teknik ini mungkin bernilai dalam konteks lain. Pada awalnya, Saya pikir saya perlu untuk menyesuaikan diri dengan format yang lebih kompleks: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, Tapi di lingkungan saya itu tidak diperlukan. Daftar URL dikirimkan kepada kami dengan SharePoint jadi ini cukup mudah untuk generalisasi.

Di sini adalah:

<Extensible Stylesheet Language:stylesheet Versi="1.0" pengecualian-hasilnya-awalan="RS z o s ddwrt dt msxsl" 
xmlns:msxsl="guci:skema-microsoft-com:XSLT" xmlns:Extensible Stylesheet Language="http://www.w3.org/ 1999/XSL/mengubah"
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:ASP="http://schemas.microsoft.com/ASPNET/20" xmlns:DDWRT="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:o="guci:skema-microsoft-com:Kantor" xmlns:s="UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:RS="guci:skema-microsoft-com:rowset" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="guci:frontpage:internal"
> <Extensible Stylesheet Language:output metode="HTML" indentasi="Tidak" /> <Extensible Stylesheet Language:desimal-format NaN="" /> <Extensible Stylesheet Language:Param Nama="ListUrlDir"></Extensible Stylesheet Language:Param> <!-- Saya perlu ini untuk mendukung melacak. --> <Extensible Stylesheet Language:template pertandingan="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <Extensible Stylesheet Language:variabel Nama="dvt_StyleName">Tabel</Extensible Stylesheet Language:variabel> <Extensible Stylesheet Language:variabel Nama="Baris" Pilih="/dsQueryResponse/baris/baris" /> <Extensible Stylesheet Language:variabel Nama="dvt_RowCount" Pilih="Hitung($Baris)" /> <Extensible Stylesheet Language:variabel Nama="IsEmpty" Pilih="$dvt_RowCount = 0" /> <Extensible Stylesheet Language:variabel Nama="dvt_IsEmpty" Pilih="$dvt_RowCount = 0" /> <Extensible Stylesheet Language:memilih> <Extensible Stylesheet Language:Kapan tes="$dvt_IsEmpty"> Ada tidak ada data grafik!<br/> </Extensible Stylesheet Language:Kapan> <Extensible Stylesheet Language:Jika tidak> <!-- Hal menarik dimulai di sini. Kita perlu mendefinisikan sepasang variabel untuk setiap baris dalam grafik: Jumlah total item dan persen dari total. --> <Extensible Stylesheet Language:variabel Nama="totalProposed" Pilih="Hitung(/dsQueryResponse/baris/baris[menormalkan-Ruang(@Status) = 'Mengusulkan'])" /> <Extensible Stylesheet Language:variabel Nama="percentProposed" Pilih="$totalProposed div $dvt_RowCount" /> <Extensible Stylesheet Language:variabel Nama="totalInProcess" Pilih="Hitung(/dsQueryResponse/baris/baris[menormalkan-Ruang(@Status) = 'Dalam proses'])" /> <Extensible Stylesheet Language:variabel Nama="percentInProcess" Pilih="$totalInProcess div $dvt_RowCount" /> <Extensible Stylesheet Language:variabel Nama="totalStalled" Pilih="Hitung(/dsQueryResponse/baris/baris[menormalkan-Ruang(@Status) = 'Macet'])" /> <Extensible Stylesheet Language:variabel Nama="percentStalled" Pilih="$totalStalled div $dvt_RowCount" /> <!-- Kita mendefinisikan tabel HTML kami di sini. Aku meminjam dari beberapa standar SharePoint gaya di sini untuk membuat konsisten. Saya pikir itu akan menghormati perubahan ke file global css serta tema mengabaikan. --> <Meja lebar="100%" cellspacing="0" cellpadding="2" gaya="perbatasan-kanan: 1 #C0C0C0 padat; perbatasan-bottom: 1 #C0C0C0 padat; perbatasan-kiri-gaya: padat; Border-kiri-lebar: 1; perbatasan-atas-gaya: padat; Border-top-lebar: 1;"> <TR> <TD menyelaraskan="Pusat"> <Meja perbatasan="1" lebar="100%"> <!-- Untuk setiap status yang kita inginkan untuk grafik, kita sebut "ShowBar" template. Kami melewati itu: 1. Label untuk baris. Ini berubah menjadi hyperlink. 2. Persen (variabel dari atas). 3. Nama field yang sebenarnya kode dari daftar mendasari. Ini tidak perlu untuk menyesuaikan tampilan label. 4. Nilai bidang cocok untuk #3. 5. Total item dari kode status ini (tidak grand total semua kode status). Ia memancarkan <TR></TR> dan garis horisontal grafik batang. Kita sebut template ini untuk setiap kode status yang kita ingin lihat. --> <Extensible Stylesheet Language:panggilan-template Nama="ShowBar"> <Extensible Stylesheet Language:dengan param Nama="BarDisplayLabel" Pilih="'Mengusulkan'"/> <Extensible Stylesheet Language:dengan param Nama="BarPercent" Pilih="$percentProposed"/> <Extensible Stylesheet Language:dengan param Nama="QueryFilterFieldName" Pilih="'Status'"/> <Extensible Stylesheet Language:dengan param Nama="QueryFilterFieldValue" Pilih="'Mengusulkan'"/> <Extensible Stylesheet Language:dengan param Nama="TotalItems" Pilih="$totalProposed"></Extensible Stylesheet Language:dengan param> </Extensible Stylesheet Language:panggilan-template> <Extensible Stylesheet Language:panggilan-template Nama="ShowBar"> <Extensible Stylesheet Language:dengan param Nama="BarDisplayLabel" Pilih="'Macet'"/> <Extensible Stylesheet Language:dengan param Nama="BarPercent" Pilih="$percentStalled"/> <Extensible Stylesheet Language:dengan param Nama="QueryFilterFieldName" Pilih="'Status'"/> <Extensible Stylesheet Language:dengan param Nama="QueryFilterFieldValue" Pilih="'Macet'"/> <Extensible Stylesheet Language:dengan param Nama="TotalItems" Pilih="$totalStalled"></Extensible Stylesheet Language:dengan param> </Extensible Stylesheet Language:panggilan-template> <Extensible Stylesheet Language:panggilan-template Nama="ShowBar"> <Extensible Stylesheet Language:dengan param Nama="BarDisplayLabel" Pilih="'Dalam proses'"/> <Extensible Stylesheet Language:dengan param Nama="BarPercent" Pilih="$percentInProcess"/> <Extensible Stylesheet Language:dengan param Nama="QueryFilterFieldName" Pilih="'Status'"/> <Extensible Stylesheet Language:dengan param Nama="QueryFilterFieldValue" Pilih="'Dalam proses'"/> <Extensible Stylesheet Language:dengan param Nama="TotalItems" Pilih="$totalInProcess"></Extensible Stylesheet Language:dengan param> </Extensible Stylesheet Language:panggilan-template> </Meja> </TD> </TR> </Meja> </Extensible Stylesheet Language:Jika tidak> </Extensible Stylesheet Language:memilih> </Extensible Stylesheet Language:template> <!-- Template ini melakukan pekerjaan menampilkan setiap baris dalam grafik batang. Anda mungkin akan melakukan sebagian besar tweaker Anda di sini. --> <Extensible Stylesheet Language:template Nama="ShowBar"> <Extensible Stylesheet Language:Param Nama="BarDisplayLabel" /> <!-- Label menunjukkan --> <Extensible Stylesheet Language:Param Nama="BarPercent"/> <!-- Persen dari total. --> <Extensible Stylesheet Language:Param Nama="QueryFilterFieldName"/> <!-- Digunakan untuk melompat ke query & Filter --> <Extensible Stylesheet Language:Param Nama="QueryFilterFieldValue"/> <!-- Digunakan untuk melompat ke query & Filter --> <Extensible Stylesheet Language:Param Nama="TotalItems" /> <!-- Jumlah total dari barlabel ini --> <TR> <!-- Bar label sendiri. --> <TD kelas="MS-formbody" lebar="30%"> <!-- Set berikutnya pernyataan membangun string kueri yang memungkinkan kita untuk melacak lebih jauh untuk pemandangan disaring data yang mendasarinya. Kami membuat penggunaan beberapa hal di sini: 1. Kami dapat melewati FilterField1 dan FilterValue1 ke daftar untuk menyaring pada kolom. 2. SharePoint adalah melewati parameter kunci kepada kami, ListUrlDir yang menunjuk ke daftar mendasari terhadap DVWP ini "berjalan". Tidak menyenangkan XSL? --> <Extensible Stylesheet Language:teks melarikan diri menonaktifkan output="Ya"> <![CDATA[<href ="]]></Extensible Stylesheet Language:teks> <Extensible Stylesheet Language:nilai dari Pilih="$ListUrlDir"/> <Extensible Stylesheet Language:teks melarikan diri menonaktifkan output="Ya"><![CDATA[?FilterField1 =]]></Extensible Stylesheet Language:teks> <Extensible Stylesheet Language:nilai dari Pilih="$QueryFilterFieldName"/> <Extensible Stylesheet Language:teks melarikan diri menonaktifkan output="Ya"><![CDATA[&FilterValue1 =]]></Extensible Stylesheet Language:teks> <Extensible Stylesheet Language:nilai dari Pilih="$QueryFilterFieldValue"/> <Extensible Stylesheet Language:teks melarikan diri menonaktifkan output="Ya"><![CDATA[">]]></Extensible Stylesheet Language:teks> <Extensible Stylesheet Language:nilai dari Pilih="$BarDisplayLabel"/> <Extensible Stylesheet Language:teks melarikan diri menonaktifkan output="Ya"><![CDATA[</a>]]></Extensible Stylesheet Language:teks> <!-- Bit berikutnya menunjukkan beberapa angka dalam format: "(Total / % dari total)" --> (<Extensible Stylesheet Language:nilai dari Pilih="$TotalItems"/> / <!-- Hal ini menciptakan sebuah label persen yang bagus bagi kita. Terima kasih, Microsoft! --> <Extensible Stylesheet Language:panggilan-template Nama="percentformat"> <Extensible Stylesheet Language:dengan param Nama="persen" Pilih="$BarPercent"/> </Extensible Stylesheet Language:panggilan-template>) </TD> <!-- Akhirnya, memancarkan <TD> Tag untuk bar sendiri.--> <TD> <Meja cellpadding="0" cellspacing="0" perbatasan="0" lebar="{putaran($BarPercent * 100)+1}%"> <TR bgcolor="merah"> <Extensible Stylesheet Language:teks melarikan diri menonaktifkan output="Ya"><![CDATA[&nbsp;]]></Extensible Stylesheet Language:teks> </TR> </Meja> </TD> </TR> </Extensible Stylesheet Language:template> <!-- Ini diambil langsung dari beberapa XSL yang saya ditemukan dalam template MS. --> <Extensible Stylesheet Language:template Nama="percentformat"> <Extensible Stylesheet Language:Param Nama="persen"/> <Extensible Stylesheet Language:memilih> <Extensible Stylesheet Language:Kapan tes="format nomor($persen, '#,##0%;-#,##0%')= 'NaN'">0%</Extensible Stylesheet Language:Kapan> <Extensible Stylesheet Language:Jika tidak> <Extensible Stylesheet Language:nilai dari Pilih="format nomor($persen, '#,##0%;-#,##0%')" /> </Extensible Stylesheet Language:Jika tidak> </Extensible Stylesheet Language:memilih> </Extensible Stylesheet Language:template> </Extensible Stylesheet Language:stylesheet>

Hasil:

XSL dari atas menghasilkan grafik ini:

gambar

Telusuri data yang mendasarinya dengan mengklik pada kode status:

gambar

Pikiran penutup:

Dapat menjadi umum ini?

Saya suka konsep ini grafik, tapi aku benci kenyataan bahwa saya harus pergi dan melakukan begitu banyak tangan-coding. Aku sudah memberikan sedikit pemikiran untuk Apakah itu dapat generalized dan aku optimis, tapi aku juga sedikit takut bahwa mungkin ada dinding batu bata di suatu tempat di sepanjang jalan yang tidak akan menawarkan apapun kerja-sekitar. Jika seseorang memiliki beberapa ide yang baik ini, Harap membuat catatan di komentar atau email saya.

Grafik vertikal:

Ini adalah grafik bar horisontal. Memang mungkin untuk membuat grafik vertikal. Kita hanya perlu untuk mengubah HTML. Saya akan mulai dengan cara yang sama: Membuat HTML representasi grafik bar vertikal dan kemudian mencari cara untuk mendapatkan melalui XSL. Jika ada tertarik dalam, Saya dapat dibujuk untuk mencobanya dan berolahraga di kinks. Jika seseorang telah dilakukan yang, tolong beritahu saya dan saya dengan senang hati akan link ke blog Anda 🙂

Saya berpikir bahwa tantangan dengan grafik vertikal adalah label untuk grafik lebih sulit untuk mengelola, tetapi tentu saja tidak mustahil.

Bidang nama Gotcha:

Ada setidaknya dua hal untuk melihat keluar untuk dengan nama bidang.

Pertama, nama field dengan ruang harus melarikan diri dalam XSL. Ini mungkin akan menjadi masalah di sini:

        <Extensible Stylesheet Language:variabel Nama="totalProposed" 
Pilih="Hitung(/dsQueryResponse/baris/baris[menormalkan-Ruang(@Status) = 'Mengusulkan'])" />

Jika "Status" kolom sebenarnya bernama "kode Status" kemudian Anda perlu referensi sebagai "Status_x0020_Code":

   <Extensible Stylesheet Language:variabel Nama="totalProposed" 
Pilih="Hitung(/dsQueryResponse/baris/baris[menormalkan-Ruang(@Status_x0020_Code) = 'Mengusulkan'])" />

Kedua, dan aku agak kabur ini, Tapi Anda juga harus waspada untuk perubahan nama bidang. Jika Anda nama bidang Anda "kode Status" dan kemudian pada, mengubah nama itu untuk "AFE Status", "nama internal" tidak berubah. Nama internal masih akan "kode Status" dan harus dirujuk sebagai "Status_x0020_Code". "Sumber-sumber lain" link dapat membantu mendiagnosa dan memperbaiki masalah seperti ini.

Tentang warna:

Saya memilih "merah" karena hal ini menyenangkan bagi saya pada saat. Itu tidak akan besar untuk menunjukkan warna yang berbeda untuk memberikan lebih dari sekedar gambaran visual dari sejumlah, tetapi juga menyediakan berguna KPI. Misalnya, Jika persentase "terhenti" AFE di > 10% kemudian menunjukkan merah, Jika tidak menunjukkannya hitam. Penggunaan <Extensible Stylesheet Language:memilih> untuk mencapai hal ini.

Sumber daya lainnya:

Transformasi bahagia!

<akhir />

Berlangganan ke blog saya!

Menyajikan OM Data melalui daftar kustom (atau, Namun lain OM Data Displayor [seperti YACC, tapi berbeda])

Hari ini, Saya menghabiskan beberapa jam melacak akar penyebab di balik pesan "nama kolom yang Anda masukkan sudah digunakan atau milik. Memilih nama lain."

Kolom yang bersangkutan dapat dibuat, dihapus dan kembali di lingkungan lain, Jadi aku tahu itu bukan nama reserved. Namun, Aku hanya tidak bisa menemukan kolom di mana saja melalui antarmuka pengguna SharePoint standar situs dalam situs koleksi.

Saya diposting ke Forum MSDN berikut dan tangguh Andrew Woodward menunjuk saya di arah objek model data yang mendasarinya.

Aku pergi ke CodePlex untuk menemukan beberapa alat yang akan membantu saya mengintip ke OM data yang mendasarinya dan membantu saya menemukan kesulitan.

Aku mencoba beberapa alat dan mereka sangat keren dan menarik tetapi pada akhirnya, UI tidak cukup baik untuk tujuan saya. Aku tidak mengkritik mereka dengan cara apapun, tapi jelas alat pembuat tidak memiliki masalah saya dalam pikiran ketika mereka menciptakan UI :). Kebanyakan orang tampaknya menjadi investasi cukup banyak waktu dan usaha dalam menciptakan workstation / aplikasi klien yang menyediakan pemandangan pohon, Klik kanan menu konteks dan sebagainya. Ini baik dan semua, tetapi banyak pekerjaan untuk menciptakan pengalaman pengguna top-of-the-line yang juga sangat fleksibel.

Aku benar-benar membutuhkan jawaban untuk masalah ini. Itu terjadi kepada saya bahwa jika saya bisa mendapatkan semua kolom situs dalam situs koleksi ke daftar kustom, Saya dapat menyaring, menyortir dan membuat pemandangan yang akan membantu saya menemukan kolom ini seharusnya sudah ada (yang sebenarnya, BTW). Aku pergi ke depan dan melakukan itu dan satu atau dua jam kemudian, memiliki semua kolom situs saya dimuat ke daftar kustom dengan pengelompokan, penyortiran dan sebagainya. Saya menemukan jawaban saya lima menit kemudian.

Jika dan ketika saya berhasil mengambil alih dunia, Saya pikir saya akan SK bahwa semua SharePoint alat penyedia harus secara serius mempertimbangkan permukaan objek model data di daftar kustom. Cara itu, Aku punya kekuatan untuk mencari apapun cara yang saya inginkan (dibatasi, Tentu saja, oleh standar sharepoint fitur).