Bar Masih Pretty Tinggi ke Panjangkan MOSS

Hari ini, Saya telah bekerja dengan pelanggan dan menerangkan bagaimana untuk mengubahsuai bahagian pertanyaan kandungan web dan memaparkan cebisan maklumat daripada jenis kandungan tambahan.

"Pertama., anda mengkonfigurasi CQWP untuk menyambung kepada sumber data, maka anda mengeksport ke stesen kerja anda, mengubah suai <CommonViewFields>, memuat naik, mengalih keluar asal dan kini ia lebih ' bersedia’ untuk memaparkan mereka medan lain. Seterusnya, buka SharePoint Reka bentuk, menavigasi ke laman web koleksi akar dan mencari ItemStyle.xsl. Salinan salah satu template sebagai titik permulaan yang berguna. Kembali dan mengubah suai CQWP agar menggunakan template baru ini. Akhirnya, mengubahsuai template yang memberi anda medan baru! (Jangan lupa untuk menyemak kembali dalam sehingga pengguna lain boleh melihat hasil)."

Semuanya cukup jelas kepada saya (dan sebahagian besar daripada kita SharePoint pemaju jenis) apa yang sedang berlaku dan bagaimana ia adalah agak baik, benar-benar, aspek dapatan semula data CQWP itu yang begitu baik-berasingan dari aspek persembahan data. Tetapi, ianya tidak begitu mudah untuk menerangkan, Adakah ia?

<akhir />

Memaparkan Kandungan Web Keputusan Query Bahagian dalam Grid / Jadual

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:

imej

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:

imej

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:

  1. Mengenalpasti komponen grid (baris / lajur).
  2. Menentukan dan mewujudkan ruangan tapak perlu.
  3. Mencipta laman sub bagi projek-projek dan senarai tunggal.
  4. Tambah CQWP untuk laman web dan mengkonfigurasi ia untuk mencari senarai anda.
  5. Ubahsuai XML CQWP untuk mengumpulkan ruangan tambahan.
  6. 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:

imej

Berikut adalah struktur tapak:

imej

2. Tambah CQWP selepas mewujudkan subsites projek saya dan tunggal senarai ringkasan projek:

imej

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:

imej

Melaksanakan perubahan dan di sini adalah hasil:

imej

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:

imej

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"&lt;jadual&gt;" 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" 
pilih="@ Project_x005F_x0020_Budget"></Pemacu:dengan-param> </Pemacu:panggilan template> </td> <td menyelaraskan="betul"> <Pemacu:panggilan template Nama="formatcurrency"> <Pemacu:dengan-param Nama="nilai" pilih="@ Project_x005F_x0020_Expenses">
</Pemacu:dengan-param> </Pemacu:panggilan template> </td> <td> <Pemacu:nilai-of pilih="@ Project_x005F_x0020_Status"/> </td> <!-- Semua yang berikut adalah komen keluar untuk menjelaskan perkara-perkara. Walau bagaimanapun, membawa kembali dan barang-barang ke dalam <td> untuk melihat yang         . --> <!-- <DIV id = "linkitem" Class = "perkara"> <Pemacu:Jika ujian = "tali panjang($SafeImageUrl) != 0"> <DIV class = "imej kawasan-kiri"> <a href = "{$SafeLinkUrl}" target = "{$LinkTarget}"> <IMG class = "imej-fixed-width" SRC = "{$SafeImageUrl}"
Alt = "{@ ImageUrlAltText}"/> </1> </div> </Pemacu:jika> <DIV class = "pautan-barang"> <Pemacu:panggilan template
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href = "{$SafeLinkUrl}"
target = "{$LinkTarget}" Tajuk = "{@ LinkToolTip}"> <Pemacu:nilai daripada pilih = "$DisplayTitle" /> </1> <DIV class = "Perihalan"> <Pemacu:nilai bagi select="@Description" /> </div> </div> </div>
--> </tr> <!-- Mengeluarkan tag jadual penutupan. Jika kita tidak berada di barisan lepas, ini akan menjadi kosong. --> <Pemacu:nilai-of pilih="$tableEnd" melumpuhkan-output-melarikan diri="ya"/> </Pemacu:template> <Pemacu:template Nama="formatcurrency"> <Pemacu:param Nama="nilai" pilih="0" /> <Pemacu:nilai-of pilih='format-nombor($nilai, "$DDD,Ddd,DDD. DD", "kakitangan")' /> </Pemacu:template>

Standard WSS / MOSS Skrin Kemasukan Data Tidak Menyokong Cascading Drop-surut (atau lain-lain intra-dari komunikasi)

UPDATE (04/2008): Ini entry blog yang hebat menunjukkan pendekatan javascript yang baik berasaskan kepada masalah ini: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): Ini blog nampaknya baik: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Beberapa kali seminggu, jika tidak setiap hari, Forum pengguna menerangkan keperluan yang biasanya boleh dicapai melalui penurunan-downs dihasratkan. Sebagai contoh, Saya mempunyai dua kawalan drop-down:

  • Senarai U.S. negeri
  • Senarai U.S. bandar-bandar.

Sebagai pembekal yang bertanggungjawab UI, kita mahu ia beroperasi seperti ini:

  • Paul yang memilih U.S. Negeri daripada drop-down.
  • Hal ini menyebabkan bandar-bandar jatuh untuk menapis hanya bandar kepunyaan negeri terpilih.
  • Paul memilih sebuah bandar daripada senarai ini ditapis.

Terdapat tiada sokongan out-of-the-box untuk ciri ini. Malah, Terdapat tiada sokongan OOB untuk apa-apa jenis komunikasi intra-form langsung. Ini termasuklah pengaturcaraan bidang bersembunyi/membolehkan/melumpuhkan sebagai tindak balas kepada perubahan bidang lain di dalam borang.

Objektif sebenar artikel ini untuk menerangkan penyelesaian yang mungkin dan ini adalah pilihan yang saya tahu mereka:

  1. Membangunkan sejenis adat lajur. Sebagai adat-medan-pemaju, anda mempunyai kawalan penuh ke atas dunia"" dari medan adat yang. Anda boleh melaksanakan yang melata jatuh dengan cara.
  2. Pertimbangkan untuk menggunakan aliran kerja. Dalam sesetengah kes, anda hendak peruntukkan nilai secara automatik ke dalam bidang yang berdasarkan nilai bidang lain. Dalam kes ini,, anda biasanya akan cuba menggunakan ruang yang dikira, tetapi beberapa kali, Ia hanya tidak akan mendapatkan pekerjaan yang dilakukan. Aliran Reka bentuk SharePoint adalah alternatif agak mentadbir mesra yang menjatuhkan ke bawah ke dalam kod dan visual studio. Jika anda pergi laluan ini, sedar isu ini ditangani oleh artikel ini (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Pengendali Acara: Seperti aliran kerja, ini adalah satu penyelesaian selepas fakta. Anda pengendali acara adalah perhimpunan .NET (C #, VB.NET) untuk SharePoint yang melepasi kawalan. Objek yang anda membangunkan mempunyai akses kepada data senarai (dan model objek keseluruhan) dan boleh melakukan apa-apa pengiraan diperlukan.
  4. Menggunakan Reka bentuk SharePoint untuk mencipta borang penyertaan adat. Saya tidak mempunyai pengalaman langsung dengan pendekatan ini, tetapi saya dengar mereka melakukan perkara yang baik dengan NewForm.aspx hari ini 🙂
  5. Roll ASP.NET fungsi kemasukan data anda sendiri (sebagai laman web yang berdiri sendiri atau sebagai sebahagian web) dan menggunakan yang bukan.

Jika sesiapa tahu dan / atau pilihan yang lebih baik, sila menghantar komen dan saya akan mengemaskini badan selepas ini.

<akhir />

Technorati Tags:

Ya / Tidak (kotak semak) penapisan dalam Pertanyaan Kandungan Web Bahagian

Untuk menapis untuk pertanyaan itu Ya/tiada kotak bertajuk "Peristiwa penting PG", mengkonfigurasi CQWP seperti ini:

imej

Ini merupakan satu lagi salah seorang daripada mereka yang jelas-sekali-anda-tahu-it tetapi sukar-untuk-mencari-jawapan-untuk soalan: Bagaimana untuk menapis pada kotak No Ya / cek menggunakan kandungan query sebahagian web.

Yang pertama hasil carian Saya dapati menggunakan istilah carian "penapis pertanyaan ya/tidak kandungan web bahagian" adalah rata daripada salah, jadi saya fikir saya akan meletakkan ini di sana dan lihat jika ia boleh menggantikan hasil yang tidak betul dalam hasil carian biasa.

Ia agak mudah: Benar nilai = "1" dan nilai-nilai palsu tidak sama dengan "1" (agak retro, sebenarnya).

Dalam contoh di atas, Saya mencipta Laman web kolum jenis Ya/tidak" (kotak)" dinamakan "PG Milestone". Saya menambah ke sebuah perpustakaan doc, memuat naik dokumen beberapa, menetapkan nilai untuk pasangan dan diuji.

<akhir />

Buat Graf Bar di SharePoint

Tinjauan:

(UPDATE 12/04/07: Ditambah sumber lain yang menarik di hujung menghubungkan ke blog lain yang menangani ini melalui sebahagian web yang sangat menarik)

Entri blog ini menerangkan bagaimana untuk mencipta graf bar dalam SharePoint. Ini bekerja dalam persekitaran WSS dan MOSS kerana ia hanya bergantung kepada bahagian data paparan web.

Pendekatan keseluruhan adalah seperti berikut:

  1. Buat senarai atau perpustakaan dokumen yang mengandungi data yang anda ingin graf.
  2. Meletakkan perpustakaan dokumen yang berkaitan / Senarai adat ke halaman dan menukarkan ia kepada pandangan sebahagian data web (DVWP).
  3. Ubahsuai XSL yang DVWP untuk menjana HTML yang menunjukkan sebagai graf.

Senario Perniagaan / Persediaan:

Saya telah mencipta satu senarai adat dengan ruangan Title standard dan satu ruang tambahan, "Status". Model ini (sangat simplistically) Kebenaran"untuk perbelanjaan" senario di mana tajuk mewakili projek dan Status nilai daripada senarai:

  • Cadangan
  • Dalam Proses
  • Terhenti

Tujuannya adalah untuk menghasilkan graf bar interaktif mendatar yang menunjukkan kod status.

Saya telah penduduk senarai dan ia kelihatan seperti ini:

imej

Membuat Data Lihat laman web Bahagian:

Buat DVWP dengan menambah senarai adat ke halaman (halaman tapak dalam kes saya) dan ikut arahan di sini (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Di samping itu untuk hanya mewujudkan DVWP yang, kita juga perlu menetapkan harta penghalaman untuk menunjukkan semua baris yang ada. Bagi saya, ini kelihatan seperti ini:

imej

Pada ketika ini, Saya sentiasa menutup SPD dan pelayar. Saya kemudian buka semula laman menggunakan pelayar. Ini mengelakkan secara tidak sengaja mucking atas susun atur bahagian web pada halaman.

Ubah suai XSLT:

Ia kini masa untuk mengubah suai XSLT.

Saya sentiasa menggunakan visual studio ini. (Lihat di sini untuk nota penting tentang INTELLISENSE yang akan membantu anda banyak).

Saya buat projek kosong menambah empat fail baru (menggantikan perkataan "asal" dan "New" yang sesuai):

  • Original.xslt
  • New.xslt
  • Params.xml Asal
  • New Params.xml

Dalam kes saya,, ia kelihatan seperti ini:

imej

Ubahsuai bahagian web dan Salin params dan XSL asalnya"" versi dalam Visual Studio.

Objektif di sini ialah untuk menyebabkan XSL untuk mengubah keputusan yang kita kembali dari pertanyaan DVWP ke dalam HTML yang menjadikan sebagai graf.

Untuk tujuan ini, Ia membantu untuk pertama kali mempertimbangkan apa HTML akan terlihat seperti sebelum kami mendapatkan keliru dengan gila yang dikenali sebagai "XSL". (Untuk menjadi jelas, berikut adalah hanya contoh; Jangan menaip atau copy/paste ke dalam visual studio. Saya memberi tamparan hebat penuh titik awal untuk itu kemudian dalam penulisan). Graf contoh berikut diberikan seperti HTML dengan serta-merta berikutan:

Contoh Graf Bar

Sama HTML:

<html>
<badan>
<pusat>
<lebar jadual = 80%>
<tr><td><pusat>Graf Bar mendatar</td></tr>
<tr>
<TD menyelaraskan = "Pusat">
<Jadual border = "1" width = 80%>
<tr>
<td width = 10%>Buka</td>
<td><jadual cellpadding ="0" cellspacing ="0" border = 0 width = 50%><tr bgcolor = red><td>&nbsp;</td></tr></jadual></td>
</tr>
<tr>
<td width = 10%>Ditutup</td>
<td><jadual cellpadding ="0" cellspacing ="0" border = 0 width = 25%><tr bgcolor = red><td>&nbsp;</td></tr></jadual></td>
</tr>
<tr>
<td width = 10%>Terhenti</td>
<td><jadual cellpadding ="0" cellspacing ="0" border = 0 width = 25%><tr bgcolor = red><td>&nbsp;</td></tr></jadual></td>
</tr>
</jadual>
</td>
</tr>
</jadual>
</badan>
</html>

Saya menggunakan satu pendekatan yang mudah mati untuk mewujudkan Bar saya dengan menetapkan warna latarbelakang baris yang "merah".

Pengambilalihan jauh di sini adalah ini: Pada akhir, semua yang kita lakukan adalah mewujudkan HTML dengan baris dan lajur.

Templat XSLT:

Saya telah Salin XSLT yang menjana graf bar melintang. Ianya agak baik komen supaya saya tidak akan menambah banyak di sini kecuali Nota ini:

  • Saya bermula dengan lalai XSL yang SharePoint Designer memberikan saya apabila saya mula-mula dicipta DVWP yang.
  • Saya dapat memotong ini turun dari itu SPD 657 garisan 166 garisan.
  • Saya tidak kucar-kacir di sekitar dengan parameter fail XML (yang berasingan daripada XSL dan anda akan tahu apa yang saya maksudkan apabila anda pergi untuk mengubah suai DVWP itu sendiri; terdapat dua fail yang anda boleh mengubah suai). Walau bagaimanapun, untuk memudahkan ia, Saya pula mengeluarkan hampir semua daripada mereka dari XSL dalam. Ini bermakna bahawa jika anda ingin menggunakan parameter tersebut, anda hanya perlu menambah definisi pembolehubah mereka kembali ke XSL dalam. Yang akan menjadi mudah kerana anda akan mempunyai definisi pembolehubah XSL yang asal projek visual studio anda.
  • Anda sepatutnya mampu untuk copy dan paste ini terus ke dalam projek visual studio anda. Kemudian, panggilan saya Keluarkan dan masukkan sendiri panggilan ke "ShowBar".
  • Gerudi ke bawah kerja-kerja dengan mewujudkan <a href> seperti ini: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Teknik ini mungkin nilai-nilai dalam konteks lain. Pada mulanya, Saya fikir saya akan perlu mematuhi format yang lebih kompleks: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, tetapi dalam persekitaran saya yang tidak perlu. Dalam senarai URL yang dihantar kepada kami oleh SharePoint jadi ini adalah agak mudah untuk umum.

Di sini adalah:

<Pemacu:stylesheet versi="1.0" tidak termasuk-hasil-awalan="rs z o s ddwrt dt msxsl" 
xmlns:msxsl="urn:skema-microsoft-com:xslt" xmlns:Pemacu="http://www.w3.org/1999/XSL/Transform"
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="urn:skema-microsoft-com:pejabat" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:skema-microsoft-com:rowset" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urn:frontpage:dalaman"
> <Pemacu:output kaedah="html" inden="tidak" /> <Pemacu:perpuluhan-format NaN="" /> <Pemacu:param Nama="ListUrlDir"></Pemacu:param> <!-- Saya perlu ini untuk menyokong satu latihan-down. --> <Pemacu:template perlawanan="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <Pemacu:berubah-ubah Nama="dvt_StyleName">Jadual</Pemacu:berubah-ubah> <Pemacu:berubah-ubah Nama="Baris" pilih="/dsQueryResponse / Baris / Row" /> <Pemacu:berubah-ubah Nama="dvt_RowCount" pilih="mengira($Baris)" /> <Pemacu:berubah-ubah Nama="IsEmpty" pilih="$dvt_RowCount = 0" /> <Pemacu:berubah-ubah Nama="dvt_IsEmpty" pilih="$dvt_RowCount = 0" /> <Pemacu:memilih> <Pemacu:apabila ujian="$dvt_IsEmpty"> Tidak ada data untuk graf!<br/> </Pemacu:apabila> <Pemacu:sebaliknya> <!-- Bahan yang menarik bermula di sini. Kita perlu menentukan pemboleh ubah untuk setiap baris dalam graf: jumlah           . --> <Pemacu:berubah-ubah Nama="totalProposed" pilih="mengira(/dsQueryResponse / Baris / Row[menormalkan-ruang(@ Status) = 'Cadangan'])" /> <Pemacu:berubah-ubah Nama="percentProposed" pilih="$totalProposed div $ dvt_RowCount" /> <Pemacu:berubah-ubah Nama="totalInProcess" pilih="mengira(/dsQueryResponse / Baris / Row[menormalkan-ruang(@ Status) = 'Dalam Proses'])" /> <Pemacu:berubah-ubah Nama="percentInProcess" pilih="$totalInProcess div $ dvt_RowCount" /> <Pemacu:berubah-ubah Nama="totalStalled" pilih="mengira(/dsQueryResponse / Baris / Row[menormalkan-ruang(@ Status) = 'Terhenti'])" /> <Pemacu:berubah-ubah Nama="percentStalled" pilih="$div totalStalled $ dvt_RowCount" /> <!-- Kami mentakrifkan jadual HTML kami di sini. Saya meminjam dari beberapa standard           . Saya fikir ia akan menghormati           . --> <jadual lebar="100%" cellspacing="0" cellpadding="2" gaya="sempadan kanan: 1 pepejal # C0C0C0; sempadan-bawah: 1 pepejal # C0C0C0; sempadan-gaya-kiri: pepejal; sempadan-left-lebar: 1; -top gaya sempadan: pepejal; sempadan-top-lebar: 1;"> <tr> <td menyelaraskan="pusat"> <jadual sempadan="1" lebar="100%"> <!-- Bagi setiap status yang kita mahu graf, kita panggil "ShowBar" template. Kami lulus: 1. A label untuk baris. Ini akan berubah menjadi hyperlink. 2. Peratus (berubah-ubah dari atas). 3. Nama medan sebenar kod dari senarai asas. Ini                      . 4. Nilai medan dipadankan #3. 5. Jumlah item kod status ini (bukan jumlah besar sekali                      ). Ia mengeluarkan <tr></tr> dan garis graf bar mendatar. Kami menyeru template ini bagi setiap kod status kita mahu melihat. --> <Pemacu:panggilan template Nama="Showbar"> <Pemacu:dengan-param Nama="BarDisplayLabel" pilih="'Cadangan'"/> <Pemacu:dengan-param Nama="BarPercent" pilih="$percentProposed"/> <Pemacu:dengan-param Nama="QueryFilterFieldName" pilih="'Status'"/> <Pemacu:dengan-param Nama="QueryFilterFieldValue" pilih="'Cadangan'"/> <Pemacu:dengan-param Nama="TotalItems" pilih="$totalProposed"></Pemacu:dengan-param> </Pemacu:panggilan template> <Pemacu:panggilan template Nama="Showbar"> <Pemacu:dengan-param Nama="BarDisplayLabel" pilih="'Terhenti'"/> <Pemacu:dengan-param Nama="BarPercent" pilih="$percentStalled"/> <Pemacu:dengan-param Nama="QueryFilterFieldName" pilih="'Status'"/> <Pemacu:dengan-param Nama="QueryFilterFieldValue" pilih="'Terhenti'"/> <Pemacu:dengan-param Nama="TotalItems" pilih="$totalStalled"></Pemacu:dengan-param> </Pemacu:panggilan template> <Pemacu:panggilan template Nama="Showbar"> <Pemacu:dengan-param Nama="BarDisplayLabel" pilih="'Dalam Proses'"/> <Pemacu:dengan-param Nama="BarPercent" pilih="$percentInProcess"/> <Pemacu:dengan-param Nama="QueryFilterFieldName" pilih="'Status'"/> <Pemacu:dengan-param Nama="QueryFilterFieldValue" pilih="'Dalam Proses'"/> <Pemacu:dengan-param Nama="TotalItems" pilih="$totalInProcess"></Pemacu:dengan-param> </Pemacu:panggilan template> </jadual> </td> </tr> </jadual> </Pemacu:sebaliknya> </Pemacu:memilih> </Pemacu:template> <!-- Template ini berfungsi memaparkan talian individu dalam graf bar. Anda mungkin akan melakukan kebanyakan Tweaker anda di sini. --> <Pemacu:template Nama="Showbar"> <Pemacu:param Nama="BarDisplayLabel" /> <!-- label untuk menunjukkan --> <Pemacu:param Nama="BarPercent"/> <!-- Peratus daripada jumlah. --> <Pemacu:param Nama="QueryFilterFieldName"/> <!-- Digunakan untuk melompat kepada pertanyaan & menapis --> <Pemacu:param Nama="QueryFilterFieldValue"/> <!-- Digunakan untuk melompat kepada pertanyaan & menapis --> <Pemacu:param Nama="TotalItems" /> <!-- jumlah kiraan barlabel ini --> <tr> <!-- Label bar sendiri. --> <td kelas="ms-formbody" lebar="30%"> <!-- Ini set seterusnya penyata membina rentetan pertanyaan yang membolehkan           . Kami menggunakan beberapa perkara di sini: 1. Kami boleh lulus FilterField1 dan FilterValue1 ke senarai untuk menapis lajur. 2. SharePoint berlalu parameter penting bagi kami, ListUrlDir yang menghala ke senarai asas yang DVWP ini "berjalan". Bukankah XSL menyeronokkan? --> <Pemacu:teks melumpuhkan-output-melarikan diri="ya"> <![CDATA[<a href ="]]></Pemacu:teks> <Pemacu:nilai-of pilih="$ListUrlDir"/> <Pemacu:teks melumpuhkan-output-melarikan diri="ya"><![CDATA[?FilterField1 =]]></Pemacu:teks> <Pemacu:nilai-of pilih="$QueryFilterFieldName"/> <Pemacu:teks melumpuhkan-output-melarikan diri="ya"><![CDATA[&= FilterValue1]]></Pemacu:teks> <Pemacu:nilai-of pilih="$QueryFilterFieldValue"/> <Pemacu:teks melumpuhkan-output-melarikan diri="ya"><![CDATA[">]]></Pemacu:teks> <Pemacu:nilai-of pilih="$BarDisplayLabel"/> <Pemacu:teks melumpuhkan-output-melarikan diri="ya"><![CDATA[</1>]]></Pemacu:teks> <!-- Sedikit seterusnya menunjukkan beberapa nombor dalam format: "(jumlah / % daripada jumlah)" --> (<Pemacu:nilai-of pilih="$TotalItems"/> / <!-- Ini mewujudkan label nice peratus untuk kita. Terima kasih, Microsoft! --> <Pemacu:panggilan template Nama="percentformat"> <Pemacu:dengan-param Nama="peratus" pilih="$BarPercent"/> </Pemacu:panggilan template>) </td> <!-- Akhirnya, mengeluarkan <td> tag untuk bar itu sendiri.--> <td> <jadual cellpadding="0" cellspacing="0" sempadan="0" lebar="{pusingan($BarPercent * 100)+1}%"> <tr bgcolor="merah"> <Pemacu:teks melumpuhkan-output-melarikan diri="ya"><![CDATA[&nbsp;]]></Pemacu:teks> </tr> </jadual> </td> </tr> </Pemacu:template> <!-- Ini diambil secara langsung dari beberapa XSL saya dapati dalam template MS. --> <Pemacu:template Nama="percentformat"> <Pemacu:param Nama="peratus"/> <Pemacu:memilih> <Pemacu:apabila ujian="format-nombor($peratus, '#, # # 0%;-#,##0%')= 'NaN'">0%</Pemacu:apabila> <Pemacu:sebaliknya> <Pemacu:nilai-of pilih="format-nombor($peratus, '#, # # 0%;-#,##0%')" /> </Pemacu:sebaliknya> </Pemacu:memilih> </Pemacu:template> </Pemacu:stylesheet>

Keputusan:

The XSL dari atas menjana graf ini:

imej

Mengesan kepada data asas dengan klik pada kod status:

imej

Kesimpulan Pemikiran:

Bolehkah ini Be umum?

Saya suka konsep grafik ini, tapi aku benci hakikat bahawa saya perlu masuk dan melakukan begitu banyak tangan-pengkodan. Saya telah diberi sedikit pemikiran sama ada ia boleh teritlak dan saya yakin, tetapi saya juga berasa sedikit takut mungkin ada dinding batu-bata di suatu tempat di sepanjang laluan yang tidak menawarkan apa-apa kerja-sekitar. Jika sesiapa yang mempunyai beberapa idea yang bernas ini, sila membuat nota dalam komen atau e-mel saya.

Graf menegak:

Ini adalah graf bar melintang. Ini pasti mungkin untuk membuat graf menegak. Kita hanya perlu mengubah HTML. Saya akan memulakan dengan cara yang sama: Mencipta satu perwakilan HTML graf bar menegak dan kemudian mencari jalan bagaimana untuk mendapatkan bahawa melalui XSL. Kalau ada yang berminat untuk yang, Saya dapat dipujuk untuk mencubanya dan bekerja di luar The kinks. Jika seseorang telah melakukan yang, sila beritahu saya dan saya dengan senang hati akan memautkan ke blog anda 🙂

Saya berfikir bahawa cabaran dengan graf tegak bahawa label untuk graf adalah lebih sukar untuk menguruskan, tetapi sudah tentu tidak mustahil.

Nama Field Gotcha:

Terdapat sekurang-kurangnya dua perkara untuk melihat keluar untuk dengan nama-nama bidang anda.

Pertama, nama bidang dengan ruang yang terpaksa melarikan diri dalam XSL dalam. Ini mungkin akan menjadi satu isu di sini:

        <Pemacu:berubah-ubah Nama="totalProposed" 
pilih="mengira(/dsQueryResponse / Baris / Row[menormalkan-ruang(@ Status) = 'Cadangan'])" />

Jika Status"anda" kolum sebenarnya dinamakan "Kod Status" maka anda perlu untuk rujukan sebagai "Status_x0020_Code":

   <Pemacu:berubah-ubah Nama="totalProposed" 
pilih="mengira(/dsQueryResponse / Baris / Row[menormalkan-ruang(@ Status_x0020_Code) = 'Cadangan'])" />

Kedua, dan saya sedikit kabur mengenai perkara ini, tetapi anda juga perlu menjadi amaran bagi Pertukaran nama bidang. Jika anda sebut sahaja bidang anda "Kod Status" dan kemudian pada, menamakannya "AFE status", "dalaman nama" tidak berubah. Nama dalaman masih akan "Kod Status" dan mesti dirujuk sebagai "Status_x0020_Code". "Sumber-sumber lain" link boleh membantu mendiagnosis dan membetulkan jenis ini masalah.

Mengenai Warna yang:

Saya memilih "merah" kerana ia adalah menyenangkan bagi saya buat masa ini. Ia tidak akan menjadi masalah besar untuk menunjukkan warna yang berbeza bagi memberikan lebih daripada sekadar huraian visual beberapa, tetapi juga menyediakan KPI yang berguna. Sebagai contoh, Jika peratusan "terhenti." Ini adalah AFE > 10% kemudian menunjukkan ia merah, Jika tidak menunjukkannya dalam warna hitam. Gunakan <Pemacu:memilih> untuk mencapai ini.

Sumber-sumber Lain:

Happy mengubah!

<akhir />

Langgan ke blog saya!

SharePoint Tidak Memberi “Mempunyai akses yang” Laporan

UPDATE 01/28/08: Projek codeplex menangani isu ini: http://www.codeplex.com/AccessChecker. Saya telah menggunakan ia, tetapi ia kelihatan cerah jika ini adalah satu isu yang anda perlu menangani di persekitaran anda.

UPDATE 11/13/08: Joel Oleson menulis sesuatu jawatan yang sangat baik mengenai isu pengurusan keselamatan yang lebih besar di sini: http://www.sharepointjoel.com / Senarai / Posts / Post.aspx?Senarai = 0cd1a63d% 2D183c% 2D4fc2% 2D8320% 2Dba5369008acb&ID = 113. Ini link kepada beberapa sumber-sumber berguna lain.

Pengguna forum dan pelanggan sering bertanya soalan di sepanjang garisan ini: "Bagaimana Adakah saya menjana senarai semua pengguna dengan capaian ke tapak" atau "Bagaimana boleh saya secara automatik memberi amaran kepada semua pengguna akses kepada senarai mengenai perubahan yang dibuat kepada senarai?"

Terdapat tiada daripada penyelesaian Peti ini. Jika anda berfikir tentang hal itu sebentar, ia tidak sukar untuk memahami mengapa.

SharePoint Keselamatan adalah sangat fleksibel. Terdapat sekurang-kurangnya empat kategori utama pengguna:

  • Pengguna tanpa nama.
  • Pengguna dan Kumpulan SharePoint.
  • Pengguna Active Directory.
  • Borang Pengesahan Berasaskan (FBA) pengguna.

Fleksibiliti bermakna bahawa dari perspektif keselamatan, mana-mana tapak SharePoint yang diberi akan mendadak berbeza dari yang lain. Untuk menghasilkan laporan senarai capaian, satu keperluan untuk menentukan bagaimana laman web dijamin, Tanya beberapa pracetak profil pengguna lain dan kemudiannya menunjukkannya dalam fesyen yang berguna. Itulah masalah yang sukar untuk menyelesaikan generically.

Bagaimana organisasi yang berurusan dengan ini? Saya akan senang mendengar daripada anda di komen atau e-mel.

</akhir>

MOSS menceritakan Me Name Ruangan saya pendiam atau Dalam Penggunaan … Tetapi Ia Tidak

UPDATE 12/04/07: Lihat ini Microsoft KB (http://support.microsoft.com/kb/923589) untuk maklumat berkaitan.

Sebenarnya, ternyata ia adalah, tetapi dpt MOSS terpaksa membuat sukar.

Pelanggan saya tidak beberapa kerja-kerja pembangunan di lokasi MOSS pada hujung minggu. Pendapat ini tidak semestinya daripada jumble tentang apa yang dia benar-benar lakukan, tetapi keputusan akhir adalah ini:

  • Dia cuba untuk menambah ruangan laman web yang dipanggil "kuantiti" dan jawapan MOSS: "Lajur nama yang anda masukkan adalah sudah digunakan atau simpanan. Pilih nama yang lain."
  • Dia cuba untuk menambah satu lagi suasana dan kerja-kerja yang. Oleh itu, "Kuantiti" bukan nama terpelihara.
  • Dia cuba mencari sebuah kolum lokasi sedia ada yang dinamakan "kuantiti" dalam koleksi tapak yang. Beliau tidak dapat mencari.

Saya ada penyelidikan, dan pengekodan Walaupun sebahagian, Wax falsafah dan akhirnya mendapati bahawa ruang dinamakan Kuantiti tidak, sebenarnya, wujud. Di dalam "_Hidden" Kumpulan. Oleh yang demikian, kita tidak dapat mencari ia melalui antara muka pengguna SharePoint.

Bagaimana ia sampai ke sana? saya tidak tahu, tetapi saya mempunyai teori (atau sebagai isteri saya akan memanggilnya, "bla bla bla"). Tempat di sepanjang garisan, 1 template empat puluh hebat ditambah dan mungkin diaktifkan di tapak dalam koleksi laman web. Ia kemudian telah dinyahdayakan (atau laman web yang dikeluarkan). Ruang tapak, Walau bagaimanapun, kekal tetapi dalam "_Hidden" Kumpulan. Jika seseorang tahu lebih baik, sila maklumkan kepada saya melalui e-mel atau pos dalam komen.

SharePoint memberitahu kebenaran. Ianya hampir tidak bernilai menunjukkan bahawa mesej itu adalah tidak berguna kerana ia mungkin. Itu akan menyenangkan untuk melihat fork mesej itu ke dalam dua mesej yang berbeza pada masa akan datang: 1) Mengatakan bahawa nama ruang dikhaskan atau tidak. 2) Jika ia tidak terpelihara, menunjukkan tapak, atau sekurang-kurangnya kumpulan, mana nama ruang ini telah digunakan.

</akhir>

Present Data Melalui OM Custom Senarai (atau, Namun lagi OM Data Displayor [seperti Yacc, tetapi berbeza])

Hari ini, Saya menghabiskan masa selama beberapa jam mengesan punca di sebalik mesej "lajur nama yang anda masukkan sedang digunakan atau disimpan. Pilih nama yang lain."

Ruangan yang berkenaan boleh diwujudkan, dipadam dan dicipta semula dalam persekitaran yang lain, Jadi saya tahu tak nama yang telah ditempah. Walau bagaimanapun, Saya hanya tidak dapat mencari medan di mana-mana melalui antaramuka pengguna SharePoint standard di mana-mana tapak dalam koleksi laman web.

Saya dimasukkan ke MSDN forum di sini dan yang tidak Andrew Woodward menunjuk saya ke arah data model objek yang asas.

Saya pergi ke codeplex untuk mencari beberapa alat yang akan membantu saya rakan data OM yang asas dan membantu saya mengesan masalah.

Saya cuba beberapa alat dan mereka sangat cool dan menarik tetapi di hujung, UI tidak cukup baik untuk tujuan saya. Saya saya tidak mengkritik mereka dengan apa cara, tetapi dengan jelas pembuat alat-tidak mempunyai masalah saya di rumah apabila mereka dicipta UI mereka :). Kebanyakan orang seolah-olah akan melabur jumlah masa dan usaha dalam mewujudkan stesen kerja yang saksama / applikasi pelanggan yang menyediakan pemandangan pokok, klik kanan menu konteks dan sebagainya. Ini adalah bagus dan semua, tapi banyak kerja untuk mewujudkan pengalaman pengguna top-of-the-line yang juga sangat fleksibel.

Saya benar-benar perlukan jawapan kepada masalah ini. Ia telah berlaku kepada saya bahawa jika saya boleh mendapatkan semua lajur yang lokasi dalam koleksi laman web ke senarai tersuai, Saya dapat menapis, menyusun dan mewujudkan pemandangan yang akan membantu saya mencari lajur ini kononnya sedia ada (yang ia tidak, BTW). Aku pergi ke depan dan pula yang dan satu atau dua jam kemudian, Semua Lajur Laman web saya yang telah dimuatkan ke dalam senarai tersuai dengan Kumpulan, menyusun dan sebagainya. Aku menemukan jawapan lima minit kemudian.

Jika dan apabila saya berjaya mengambil alih dunia, Saya fikir saya akan dekri bahawa semua pembekal alat SharePoint mesti serius mempertimbangkan permukaan data model objek mereka dalam senarai tersuai. Dengan cara ini, Saya mempunyai kuasa untuk mencari apa-apa cara nak (dihalang, sudah tentu, oleh ciri-ciri standard sharepoint).

SharePoint Designer workflow Custom Tindakan — Pemerhatian Mengenai <Field Tie Jenis Designer =”StringBuilder” … />

Hanya pemerhatian cepat bahawa terdapat perbezaan yang sangat penting antara kedua-dua definisi:

<FieldBind Field = "InParam1" DesignerType = "StringBuilder" ID = "2" Teks "Input parameter #1" = />

berbanding:

<FieldBind Field = "InParam1" ID = "2" Teks "Input parameter #1" = />

Menunjukkan pertama seperti ini dalam SPD:

imej

manakala menunjukkan seperti ini:

imej

I’m not sure how helpful these screen shots are but I put in the effort to make them so you have to view them 🙂

Pemerhatian ini ialah: StringBuilder membolehkan anda untuk membina rentetan (jelas) bersama-sama dengan mencampurkan literals tali dan data aliran kerja (melalui ini "Tambah Lookup" butang di sudut kiri). Apabila anda menggunakan butang Tambah carian, Ia memasukkan token dalam bentuk"[%token%]". Bilakah SharePoint berkata tindakan tersuai anda, (C # kod dalam kes saya), SharePoint pas tanda itu sendiri, bukan nilai token. Jika anda menggunakan jenis Reka bentuk yang lalai (jenis kedua), SharePoint mengembang tanda dan pas nilai sebenar tanda itu kepada tindakan anda.

StringBuilder = BAD, Jenis pereka lalai = BAIK.

Kursus, Itulah yang tidak apa yang saya benar-benar maksudkan. Hanya Jangan mencuba dan lulus satu parameter untuk tindakan tersuai anda apabila pereka menaip = StringBuilder. Menggunakan jenis Reka bentuk lalai dan di StringBuilder kepadanya dahulu jika anda perlu untuk membina kompleks string dalam aliran kerja anda (yang kebetulan adalah tepat apa yang dilakukan untuk mewujudkan satu perkara yang dinamik bagi tindakan e-mel, tetapi itu adalah satu perkara yang lain blog, mempunyai).

<akhir />

Pramatang Pengaktifan workflow — Penyelesaian bukan perubatan

UPDATE: Lihat perbincangan MSDN ini, terutama kemasukan lepas: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. Ia menerangkan keadaan yang mungkin litar pintas ini semua hal. Secara ringkasnya, ia mungkin semudah membuat sekurang-kurangnya salah satu bidang mandatori.

Saya mempunyai sebuah perpustakaan dokumen yang menyokong lapan jenis kandungan.

Saya mempunyai aliran Reka bentuk SharePoint yang ingin mengira dan peruntukkan "peringatan tarikh" dengan hanya menolak 30 hari dari ruangan lain, "tarikh matang". Ini hanya perlu berlaku untuk satu jenis kandungan, "Insurans". Matlamat perniagaan ialah untuk menghasilkan KPI yang menunjukkan kedua-dua kategori dokumen insurans: "kira-kira hingga tamat" dan "tamat tempoh." (Anda boleh membaca lebih lanjut mengenai jenis ini KPI dan lebih besar menggerudi-down di sini).

Saya telah menkonfigurasi aliran kerja untuk membakar apabila item-item yang baru dicipta dan apabila item diubahsuai. Ideanya adalah bahawa apabila dokumen insurans yang dimuat naik, kami mengira "Amaran tarikh" berdasarkan tarikh tamat tempoh. Sepasang pemandangan bekerja berkaitan dengan senarai KPI untuk menyerlahkan syarat-syarat ini apabila pengguna melanda halaman utama mereka.

Strategi ini tidak berfungsi apabila saya memuat naik dokumen.

Saya muat naik dokumen dan I am ditunjukkan dengan skrin kemasukan data meta. Pada ketika ini, Saya sudah berada dalam kesusahan. SharePoint telah, awal dari perspektif saya, dipecat dalam aliran kerja. Saya tidak punya peluang untuk memilih jenis kandungan yang betul mahupun peruntukkan tarikh kena dibayar. Pada masa yang sama, aliran dalam kebakaran apabila saya menekan butang hantar pada masa ini. Terdapat beberapa logik yang terbina dalam yang "percaya" yang mula-mula menyerahkan sebahagian daripada di "mencipta" acara. Jadi … kerja saya telah dipecat dan apabila ia dilaksanakan, Ia telah diluluskan lalai meta data nilai.

Yang terbaik kerja-sekitar saya tahu adalah untuk memasukkan suatu "tangguh sehingga" aktiviti di dalam aliran kerja. Aku punya tangguh aliran kerja bagi 1 minit. Manakala ia berhenti sejenak, Saya pilih jenis kandungan yang betul, Masukkan meta data. Jeda ini selesai dan alur kerja hasil yang diperlukan. (Perhatikan bahawa dalam persekitaran saya, pemasa aliran kerja aktiviti-aktiviti dari SPD tidak bekerja di luar kotak. Anda mungkin mempunyai masalah sama. Lihat di sini untuk maklumat lanjut).

Saya tidak suka "kelewatan ajaib" kerja-kerja sekitar. Apa akan berlaku jika pengguna upload dokumen dan telefon berdering dan perbualan berikutnya outlasts berhenti seketika dalam? Saya boleh membuat jeda yang lebih panjang, tetapi saya masih tidak suka.

Saya menulis tentang perkara ini di forum MSDN di sini: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1