Arkib Kategori: SharePoint

Bagaimana untuk menyelesaikan kesilapan SharePoint misteri.

Tinjauan:

Penyahpepijatan adalah sukar apabila membangunkan fungsi tersuai untuk Windows SharePoint Services 3.0 (WSS) atau Microsoft Office SharePoint Server (MOSS). Punca utama adalah bahawa SharePoint biasanya surfaces maklumat diagnostik yang sangat sedikit pada penyemak imbas web apabila berlaku ralat. Entri blog ini menerangkan bagaimana untuk mengesan dijana sistem maklumat diagnostik tambahan yang kerap boleh memberikan tambahan itu sedikit detail yang perlu bagi mengenal pasti punca. Ini kemudian boleh membawa kepada penyelesaian masalah.

Saya telah menggunakan teknik ini dengan jayanya untuk menyelesaikan ralat sebaliknya misteri.

Pendekatan:

SharePoint Menyimpan banyak maklumat diagnostik log dalam fail log masuk yang 12 sarang.

"12 sarang" biasanya terletak di "C:\Program FilesCommon FilesMicrosoft SharedWeb Extensions12 pelayan ". (Saya tidak pasti jika ia adalah mustahil untuk pihak 12 sarang untuk hidup di mana-mana lagi, sebenarnya).

Ideanya adalah untuk mencari fail log sekarang, memaksa ralat dan kemudian dengan cepat Buka fail log. Fail log ini dicirikan oleh:

  • Mewah bilangan maklumat yang banyak. SharePoint menjana sejumlah besar maklumat diagnostik dan menulis ke fail log yang sangat cepat. Anda perlu cepat dengan jari untuk menangkap ia.
  • Banyaknya. SharePoint menulis ke fail log tunggal tetapi sebaliknya menjana fail-fail log berbilang dalam turutan.
  • Copy dan paste baik ke dalam MS Excel.

Kaedah kegemaran saya:

  1. Buka explorer windows yang menunjuk ke dalam 12 hivelogs.
  2. Jenis paparan untuk menunjukkan tarikh diubahsuai (yang pertama).
  3. Serlahkan fail log yang terkini.
  4. Dalam tetingkap pelayar web, memaksa ralat yang berlaku.
  5. Cepat Buka fail log sekarang dan menyalin kandungannya ke MS Excel.
  6. Lompat ke hujung dan menganalisis entri berkaitan.

Nota-nota lain:

Secara lalai, log diagnostik terletak di dalam 12 Direktori hiveLOGS.

MS Best amalan (mengikut Mike T. Microsoft) Negeri yang fail log hendaklah disimpan ke cakera keras yang berasingan. Seseorang yang melakukan ini melalui Pentadbiran Pusat. Pentadbir sistem awda mungkin telah melakukan ini, di mana anda akan jelas perlu mencari fail log ada dan bukan lalai 12 lokasi sarang).

Entri ini alamat isu-isu seperti:

  • SharePoint aliran kerja gagal dimulakan kerana ralat dalaman.
  • (banyak lagi yang akan ditambah dari semasa ke semasa)
  • Entri ini telah membantu mendiagnosis ralat aliran kerja (e.g. "Alur kerja gagal dimulakan kerana ralat dalaman").

MOSS: Pengenalan yang berkesan untuk Pertubuhan an

(entri ini silang posted antara http://paulgalvin.spaces.live.com/blog/ dan http://blogs.conchango.com)

Posting di laman web ini adalah saya sendiri dan tidak semestinya mewakili kedudukan Conchango ini, strategi atau pendapat.

Tinjauan:

Entry ini menerangkan beberapa maklumat latar belakang yang besar (3,000 pengguna) Microsoft Office SharePoint Server (MOSS) pelaksanaan dan apa yang kita lakukan untuk mendapatkan projek yang bergolek dalam apa-apa cara bahawa klien berasa gembira dan tegas menyusuri laluan yang berakhir dengan penuh penggunaan set ciri MOSS. Daripada penulisan entri, kita kira-kira 50% lengkap dengan fasa pertama projek. Sebagai keadaan kemajuan, Saya akan mengemas kini data ini dan / atau menulis entri baru.

Dalam kes ini tertentu, Syarikat telah pun memasang SharePoint Portal Server 2003. Kumpulan IT dipasang produk tersebut dalam "Mari kita lihat jika sesiapa peduli" fesyen. Ia diterima pakai oleh ramai pengguna perniagaan dengan cepat dan menjadi agak popular dan perusahaan yang pada umumnya. Seperti yang anda boleh bayangkan, ini bukanlah strategi pelaksanaan yang terbaik (mana pelanggan sedia mengakui) dan apabila MOSS tiba di tempat kejadian, pelanggan memutuskan untuk "melakukannya dengan betul" dan mengupah kami untuk membantu mereka.

Salah satu soalan yang penting yang kita hadapi apabila kita mula melaksanakan projek ini adalah: Bagaimana kita memperkenalkan MOSS kepada pelanggan ini? Memandangkan klien telahpun mempunyai pengalaman dengan SharePoint, kita tertanya-tanya — Adakah kami perlu melakukan "berbeza" latihan atau kita bermula dari bawah ke atas? Selepas bekerja dengan pengguna utama, kita ditentukan yang merawat ini sebagai projek hijau bidang akal lebih banyak.

Keputusan itu memberikan titik permulaan tetapi masih meninggalkan kami dengan syarat-syarat utama memikirkan strategi yang baik untuk melancarkan MOSS kepada perusahaan. MOSS adalah apa-apa binatang yang besar … Ia merangkumi pengurusan kandungan, pengurusan dokumen, mencari, keselamatan, penonton mensasarkan, pengurusan projek, "hebat empat puluh" template, kerja, perniagaan penyambung data, dan sebagainya.. Pasangan ini dengan hakikat bahawa ia adalah sebuah organisasi yang besar yang boleh benar-benar membuat penggunaan hampir setiap ciri MOSS utama dan anda mempunyai bakat untuk menjadi satu projek besar dengan jangkauan perniagaan dan banyak perkara yang baik berlaku.

Kami berhadapan dengan masa isu ini dan masa lagi … MOSS mempunyai capaian perusahaan dengan perusahaan ciri-set, tetapi juga pelanggan agak canggih mempunyai masa yang sukar mental menyerap ciri-ciri, apatah lagi menggabungkan pecahan ketara daripada mereka ke dalam rutin harian mereka.

Saya tidak mempunyai penyelesaian masalah sihir. Saya bukannya mengalamatkan hanya sangat langkah-langkah pertama yang kita telah diambil dengan pelanggan untuk membawa mereka langkahnya untuk penggunaan jangka panjang yang berjaya.

Skop:

Seberapa banyak yang saya mahu pasukan kraf pelan projek yang merangkumi pencapaian tersebut sebagai "PoepleSoft integrasi melalui BDC siap", "Baru Jabatan silang produk pelancaran aliran kerja lengkap" dan "Eksekutif Pengurusan KPI diterima", Saya terpaksa menjelaskan sesuatu yang kurang. Ini adalah bukan untuk mengatakan bahawa "Kurang" buruk. Malah, "Kurang" kami mengambil keputusan untuk pelaksanaan awal adalah miles hadapan di mana mereka berada sebelum kita mula. Dalam kes kami, "Kurang" bertukar menjadi:

  • Pengurusan dokumen mudah menggunakan perpustakaan dokumen, jenis-jenis kawalan dan kandungan versi.
  • Carian yang berkesan berdasarkan jenis kandungan dan carian terlebih dahulu khas (melalui harta diuruskan, XSLT untuk menghasilkan keputusan yang agak, dan sebagainya.).

Selain di atas ciri-ciri menyeluruh (yang bererti bahawa mereka adalah untuk dilaksanakan di semua jabatan dan pengguna), kami menambah tunggal berikut dalam skop mini projek-projek:

  • Bukti integrasi BDC konsep.
  • Proses aliran kerja Multi-langkah dan pelbagai cawangan diwujudkan melalui SPD.
  • Borang InfoPath Complex.
  • Permukaan KPI untuk beberapa proses perniagaan (mungkin HR perolehan bakat dalam kes kami, walaupun yang mungkin berubah).

Skop di sini bukanlah 100% tepat tetapi mewakili pendekatan kami dan mencukupi untuk tujuan saya di sini, yang itu untuk menjelaskan apa yang saya anggap sebagai "yang efektif" Pengenalan MOSS yang akan menetapkan pelanggan tegas ke jalan keemasan untuk penggunaan MOSS penuh.

Saya tidak akan menulis banyak lagi tentang tunggal dalam entri ini. Saya ingin menyatakan bahawa ini adalah sebahagian daripada strategi yang terlalu arching. Ideanya adalah untuk melaksanakan teras dokumen pengurusan dan Cari ciri-ciri untuk semua pengguna lagi menyediakan sangat praktikal, tinggi contoh kelihatan dan sangat wakil teras MOSS ciri-ciri lain yang di luar kemampuan kebanyakan pengguna untuk menyerap pada peringkat awal ini semata-mata. Walau bagaimanapun, mereka akan "luar sana" dan satu berharap bahawa unit-unit perniagaan yang lain akan tahu atau belajar tentang mereka dan mahu ciri-ciri tersebut untuk diri mereka sendiri, membawa kepada penerimaan yang lebih besar. Kisah-kisah kejayaan singleton juga berfungsi untuk menyediakan pasukan jualan kami "peluru" kerana berjaya memenangi kedua, Projek ketiga dan n-fasa.

Apa Adakah Kami Memperkenalkan dan Mengapa?

Setelah menetap di pengurusan dokumen dan carian sebagai keperluan menyeluruh asas, kita perlu mula mengumpul maklumat. Sebagai satu perkara yang praktikal, ini berkisar memahami dokumen-dokumen mereka dan yang akhirnya dipetakan untuk memahami jenis kandungan.

Saya dapati ia adalah sukar untuk menghuraikan jenis kandungan tanpa visual mati. Rakyat lebih teknikal boleh berjalan dari perbincangan tentang jenis kandungan bila CT yang dinyatakan dalam terma-terma pangkalan data. "A CT adalah serupa dengan satu jadual pangkalan data, ia mempunyai tiang dan tiang adalah ditakrifkan dari segi jenis data, tetapi CT jenis data termasuk lebih daripada integer / tarikh yang mudah, tetapi juga "pilihan" dan "lookup" dan seumpamanya." Kita boleh bercakap tentang "memanjang" jenis kandungan, banyak seperti boleh mewarisi fungsi daripada kelas asas dalam Bahasa berorientasikan objek. Walau bagaimanapun ini adalah jelas tidak berguna bagi orang admin Jabatan pengangkutan yang mempunyai latar belakang teknikal tidak. Iaitu, hampir semua orang yang penting dalam pelaksanaan MOSS.

Menggunakan papan putih adalah iffy. Saya telah menyampaikan idea jenis kandungan yang dilukis brilliant (atau supaya mereka seolah-olah) gambar jenis kandungan dan apa yang mereka lakukan untuk anda dari segi carian dan bagaimana ia boleh berkembang, dan sebagainya.. Pada akhir, ia tidak berasa seperti beberapa mentol lampu telah dihidupkan, tapi gambar papan putih terhasil kacau-bilau.

Ini membawa kita kepada kami sekarang dan setakat ini paling berkesan tempat pendaratan: laman kotak pasir MOSS dikonfigurasikan untuk menunjukkan ciri-ciri.

Menggunakan laman kotak pasir, kita menunjukkan:

  • Jenis kandungan:
    • Mewujudkan CT dengan jenis data berbilang (teks, tarikh, pilihan, boolean, lookup, dan sebagainya.).
    • Melanjutkan CT dengan mewujudkan satu CT baru berdasarkan ibu bapa.
    • Mencari dokumen menggunakan metadata CT.
  • Perpustakaan dokumen:
    • Mengaitkan CT tunggal dengan perpustakaan.
    • Apa yang berlaku apabila kita memuat naik dokumen kepada perpustakaan yang?
    • Mengaitkan pelbagai ini CT dengan perpustakaan pdf.
    • Apa yang berlaku apabila kita memuat naik dokumen kepada perpustakaan yang?
    • Menapis dan menyusun melalui tajuk lajur dalam doc lib.
    • Views perpustakaan dokumen:
      • Menyusun
      • Kumpulan
      • "Masuk cepat" (pandangan lembaran data)
      • "Untagged data" (untuk membantu perpindahan kepada MOSS daripada sumber-sumber kandungan lain; lanjut mengenai perkara ini di bawah).

Tapak Sandbox:

Kami mereka bentuk laman kotak pasir untuk menjadi satu ciri kekal dalam persekitaran pembangunan yang akan digunakan untuk tujuan latihan lama selepas kita menyelesaikan projek dan dimasukkan beberapa artifak seperti yang dinyatakan:

Jenis kandungan:

Kami ditakrifkan jenis kandungan yang berikut: Invois, Pesanan Pembelian, Perkhidmatan Invois.

Kami memilih untuk Invois Beli kerana mereka lebih atau kurang universal di bawah
entiti-entiti berdiri. Semua orang dalam perniagaan memahami bahawa invois adalah permintaan untuk bayaran kepada satu pelanggan untuk jumlah dikeluarkan pada tertentu tarikh akan dibayar seperti beberapa terma pembayaran. Ini membawa kepada suatu takrifan semula jadi CT yang dikenali sebagai "latihan invois" (untuk membezakan ia dari mana-mana jenis lain invois). Tempahan pembelian begitu mudah ditakrifkan. Kami telah juga mewujudkan sebuah "latihan Perkhidmatan invois" dengan mewujudkan satu CT baru berdasarkan "latihan invois" CT dan ditambah hanya satu lajur, "Perkhidmatan yang diberikan".

Dengan di atas, kita boleh menunjukkan beberapa ciri-ciri utama yang CT tanpa buntu cuba untuk menjelaskan suatu konsep yang abstrak pertama; Semua orang sudah memahami apa yang kita maksud dengan "invois" dan "pesanan pembelian" dan sebaliknya dapat memberi tumpuan kepada mekanik CT sendiri.

Senarai Custom:

CT dengan tiang jenis "lookup" menghala ke sebuah Perpustakaan senarai atau dokumen Kastam. Kami menggunakan ini secara meluas dan sandbox, kami mencipta satu sokongan senarai tersuai yang mengandungi pelanggan. Kami memilih pelanggan kerana ia adalah satu konsep yang mudah difahami dan mudah untuk menunjukkan. CT invois mempunyai satu kolum, "pelanggan" itu yang ditakrifkan dari jenis "lookup" yang mata pada senarai ini.

Kami mencipta senarai tersuai untuk menguruskan "vendor" untuk "Tempahan pembelian" CT.

Perpustakaan dokumen:

Kami menciptakan dua perpustakaan dokumen: "Invois" dan "Dicampur dokumen".

Kami dikonfigurasikan Perpustakaan dokumen invois untuk menguruskan dokumen-dokumen hanya jenis CT "Invois".

Kami dikonfigurasikan "bercampur dokumen-dokumen" perpustakaan untuk menguruskan ketiga-tiga ini CT.

Mewujudkan beberapa pemandangan yang menunjukkan sorting, penapisan, lembaran data dan kumpulan.

Carian:

Kami ditakrifkan dua hartanah baru berjaya dan dipeta mereka Nombor Invois dan Pelanggan.

Kami mencipta laman carian tersuai pendahuluan baru dan diubahsuai bagi membolehkan pengguna untuk mencari "invois" menggunakan kedua-dua ciri-ciri dipetakan.

Ubah suai XSLT supaya invois dan nombor pelanggan, apabila hadir, kelihatan dalam jadual HTML yang warna terang. Objektif di sini adalah untuk menunjukkan bahawa format tersebut adalah mungkin.

Meletakkan semua bersama-sama:

Kami menguruskan pengguna utama untuk mengambil bahagian dalam demo.

Kami mengikuti skrip ini mudah:

  1. Jelaskan maksud dan tujuan CT, menggunakan invois dan pesanan pembelian sebagai contoh.
  2. Menunjukkan definisi CT invois pada masa yang sama meyakinkan mereka bahawa mereka tidak perlu menggunakan skrin mereka sendiri, hanya mengambil konsep-konsep.
  3. Pergi ke perpustakaan dokumen invois.
  4. Muat naik dokumen.
  5. Menunjukkan bahawa pelanggan drop-down adalah benar-benar diperolehi daripada senarai adat.
  6. Menambah pelanggan baru ke dalam senarai pelanggan dan kemudian mengemas kini data meta invois baru-baru ini yang dimuat naik dengan pelanggan yang baru diwujudkan.
  7. Tukar ke "bercampur dokumen-dokumen" Perpustakaan dan muat naik dokumen. Terangkan bagaimana sistem meminta sejenis dokumen.
  8. Pergi kembali ke Perpustakaan dokumen invois dan menunjukkan bagaimana klik pada nama kolum perubahan Susun mengikut.
  9. Menunjukkan penapisan ruangan peringkat.
  10. Menunjukkan pandangan yang berbeza yang menunjukkan pengasingan pelbagai peringkat, penapisan dan kumpulan.
  11. Menunjukkan pandangan lembaran data.
  12. Menerangkan tujuan yang "untagged dokumen" melihat.
  13. Tukar ke carian maju khas.
  14. Pada masa, dokumen yang dimuat naik baru-baru ini sepatutnya telah merangkak dan diindeks, supaya melakukan carian yang menunjukkan keupayaan untuk mengesan invois yang melalui harta dipetakan.
  15. Kami menunjukkan perbezaan antara mencari melalui sifat dipetakan vs. hanya carian teks.

Pada ketika ini, kita akan lebih dilakukan dengan demo. Ia seolah-olah mengambil kira-kira 30 kepada 45 minit, bergantung kepada berapa banyak soalan orang bertanya.

Kami kemudian menghantar mereka kembali ke Meja mereka dengan "kerja rumah". Ini terdiri daripada mudah excel hamparan di mana kami meminta mereka untuk menetapkan bagi kita apa yang mereka fikirkan perlu dari segi CT's, kedua-duanya pada tahap yang tinggi (hanya nama dan tujuan perniagaan) Selain tiang dan jenis data mereka akan menyimpan dalam lajur. Kami tidak meminta mereka untuk menentukan jenis data ruangan segi MOSS, tetapi syarat-syarat perniagaan.

Dalam Ringkasan:

Kami telah mencipta suasana sandbox yang kita boleh menggunakan untuk menunjukkan beberapa ciri MOSS teras yang rayuan yang akan menyeluruh.

Kami telah dimodelkan entiti perniagaan yang mudah difahami dan umum supaya pengguna boleh menumpukan perhatian pada MOSS dan tidak mendapat bogged atas entiti / contoh diri.

Pengguna perniagaan berjalan kaki dari tesis sesi dengan "PR" dalam bentuk dokumen yang cemerlang yang mereka kini berwibawa untuk mengisi dan digunakan untuk mereka bentuk jenis kandungan pertama-cut mereka sendiri.

Akhirnya, seperti yang kita melaksanakan demo dari masa ke masa, ahli pasukan pelanggan sendiri menjadi lebih mampu untuk membawa ke hadapan, melakukan demo itu sendiri dan secara amnya percuma sehingga yang lain daripada kita untuk bekerja dalam isu-isu yang lebih kompleks, seperti taksonomi global, aliran kerja yang kompleks, BDC dan sebagainya.

MOSS: Contoh fungsi - Custom Jenis Data

Senario Perniagaan:

Pelaksanaan menyeluruh MOSS syarikat perkilangan dengan 30+ tapak dan terdapat beberapa dozen Jabatan korporat.

Objektif perniagaan:

Meskipun pelbagai Kumpulan Perniagaan (Jabatan-Jabatan, lokasi, dan sebagainya.), Sesetengah data perlu dikekalkan pada tahap global. Sebagai contoh, Senarai induk yang berwibawa di semua lokasi fizikal Syarikat (e.g. Kemudahan perkilangan, lokasi gudang, pejabat jualan) hendaklah dikekalkan di lokasi berpusat.

Masalah teknikal:

Taksonomi enterprise telah dilaksanakan menggunakan pelbagai koleksi tapak. Kami akan senang untuk mencipta senarai lokasi fizikal yang berwibawa dalam senarai WSS tersuai. Kemudian, Bilakah kita perlu mempunyai satu kolum dalam jenis kandungan (atau satu lajur yang ditambah ke senarai atau doc Perpustakaan) yang terkandung di lokasi-lokasi korporat, kami akan membuat satu kolum yang menggunakan "lookup" lansung dan titik ke senarai Induk ini.

Malangnya, lookup datatypes mesti mengakses sumber senarai "tempatan" bermaksud bahawa senarai berwibawa tidak rentang koleksi tapak.

Penyelesaian teknikal:

Melaksanakan jenis data adat baru dilaksanakan berdasarkan SPField dan diwakili sebagai DropDownList di UI ListItems yang mengisi daripada senarai WSS induk.

Kami mencipta koleksi tapak baru dipanggil "http://localhost/EnterpriseData". Tiada, kami mencipta senarai tersuai yang dinamakan "Lokasi-lokasi korporat". Senarai ini hanya menggunakan standard "tajuk" medan kepada mengandungi senarai lokasi korporat yang sebenar.

Salah satu berikut beberapa langkah yang diskret untuk mencipta jenis data adat dalam WSS. Mereka adalah:

  1. Menentukan kelas yang mewarisi dari SPField (salah satu boleh mewarisi daripada bidang-bidang lain jika diperlukan).

Berikut adalah kod yang:

awam kelas XYZZYCorporateLocationField : SPFieldText
{
awam XYZZYCorporateLocationField
(SPFieldCollection bidang, rentetan typeName, rentetan displayName)
: asas(bidang, typeName, displayName) { }

awam XYZZYCorporateLocationField
(SPFieldCollection bidang, rentetan displayName)
: asas(bidang, displayName) { }

awam mengatasi BaseFieldControl FieldRenderingControl
{
mendapatkan
{
BaseFieldControl kawalan = baru XYZZYCorporateLocationFieldControl();
kawalan. FieldName = ini.InternalName;
kembali kawalan;
} //mendapatkan
} // fieldrenderingcontrol

awam mengatasi rentetan GetValidatedString(objek nilai)
{
jika (ini.Diperlukan || nilai. ToString().Adalah sama dengan(Rentetan.Kosong))
{
membuang baru SPFieldValidationException ("Jabatan tidak diperuntukkan.");
}
kembali asas.GetValidatedString(nilai);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Menentukan kelas lain yang mewarisi daripada kawalan bidang asas, seperti dalam:

awam kelas XYZZYCorporateLocationFieldControl : BaseFieldControl
{
dilindungi DropDownList XYZZYCorporateLocationSelector;

dilindungi mengatasi rentetan DefaultTemplateName
{
mendapatkan
{
kembali "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

awam mengatasi objek Nilai
{
mendapatkan
{
EnsureChildControls();
kembali ini.XYZZYCorporateLocationSelector.SelectedValue;
} // mendapatkan
set
{
EnsureChildControls();
ini.XYZZYCorporateLocationSelector.SelectedValue = (rentetan)ini.ItemFieldValue;
} // set
} // mengatasi objek nilai

dilindungi mengatasi membatalkan CreateChildControls()
{

jika (ini.Bidang == Batal || ini.ControlMode == SPControlMode.Paparan)
kembali;

asas.CreateChildControls();

ini.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

jika (ini.XYZZYCorporateLocationSelector == Batal)
membuang baru Pengecualian("RALAT: Tidak dapat memuatkan. Fail ASCX!");

jika (!ini.Page.IsPostBack)
{

menggunakan (SPSite lokasi = baru SPSite("http://localhost/enterprisedata"))
{
menggunakan (SPWeb web = halaman. OpenWeb())
{

SPList currentList = web. Senarai["Lokasi korporat"];

foreach (SPItem XYZZYCorporateLocation dalam currentList.Items)
{
jika (XYZZYCorporateLocation["Tajuk"] == Batal) terus;

rentetan theTitle;
theTitle = XYZZYCorporateLocation["Tajuk"].ToString();

ini.XYZZYCorporateLocationSelector.Items.Add
(baru ListItem(theTitle, theTitle));

} // foreach

} // menggunakan spweb web = site.openweb()
} // menggunakan laman web spsite = baru spsite("http://localhost/enterprisedata")

} // Jika tidak postback yang

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Kod di atas pada dasarnya melaksanakan logik untuk menyiapkan DropDownList dengan nilai-nilai daripada senarai tersuai WSS terletak di http://localhost/enterprisedata dan dinamakan "Jabatan korporat".

I kedua-dua kelas yang ditakrif dalam fail tunggal .cs, Ia disusun dan memasukkannya ke dalam GAC dalam (kuat diperlukan, sudah tentu).

  1. Melaksanakan kawalan template (.ascx) seperti yang ditunjukkan:

<%@ Kawalan Bahasa= "C#" Mewarisi="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Versi = 12.0.0.0, budaya = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Sentiasa" %>
<%
@ Mendaftar Tagprefix= "wssawc" Ruang nama="Microsoft.SharePoint.WebControls" Perhimpunan="Microsoft.SharePoint, Versi = 12.0.0.0, Budaya = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Mendaftar Tagprefix= "SharePoint" Ruang nama="Microsoft.SharePoint.WebControls" Perhimpunan="Microsoft.SharePoint, Versi = 12.0.0.0, Budaya = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "pelayan">
<Template>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "pelayan" />
</Template>
</
SharePoint:RenderingTemplate>

Di atas akan disimpan ke dalam c:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Akhirnya, kami mencipta fail XML untuk menyimpan ke dalam... direktori 12XML. Inilah CAML yang mentakrifkan jenis data Kastam kami dan sebagai contoh saya, kelihatan seperti ini:

<?xml versi="1.0" pengekodan="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Bidang Nama="TypeName">CorporateLocations</Bidang>
<
Bidang Nama="ParentType">Text</Bidang>
<
Bidang Nama="TypeDisplayName">Lokasi-lokasi korporat</Bidang>
<
Bidang Nama="TypeShortDescription">Semua lokasi XYZZY korporat termasuk kemudahan perkilangan atau lain-lain.</Bidang>
<
Bidang Nama="UserCreatable">BENAR</Bidang>
<
Bidang Nama="ShowInListCreate">BENAR</Bidang>
<
Bidang Nama="ShowInDocumentLibraryCreate">BENAR</Bidang>
<
Bidang Nama="ShowInSurveyCreate">BENAR</Bidang>
<
Bidang Nama="ShowInColumnTemplateCreate">BENAR</Bidang>
<
Bidang Nama="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versi = 1.0.0.0, Budaya = neutral, PublicKeyToken = b0b19e85410990c4</Bidang>
<
RenderPattern Nama="DisplayPattern">
<
Suis>
<
Nyata>
<
Ruangan />
</
Nyata>

<Kes Nilai=""/>

<Default>
<
HTML>
<![CDATA[
<rentang gaya = "warna:Merah"><b>]]>
</
HTML>

<
Ruangan SubColumnNumber="0" HTMLEncode="BENAR"/>

<HTML><![CDATA[</b></span>]]></HTML>

</
Default>
</
Suis>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Fail XML ini menambah jenis data adat WSS "Perpustakaan" dan perlawanan terhadap GAC itu mempunyai Dewan Undangan.

Setelah semua bit ini berpindah ke tempat, iisreset pada pelayan dan ia harus semua mula bekerja.

MOSS: Mengemaskini senarai tersuai

Terdapat banyak contoh baik mengemas kini senarai tersuai melalui SDK dalam. Inilah satu lagi.

Masalah perniagaan: Borang InfoPath telah direka yang membolehkan pengguna untuk memasukkan online membeli requisitions. Rekuisisi PO nombor perlu urutan tradisional berasaskan nilai-nilai integer dan dikira secara automatik.

Penyelesaian perniagaan yang: Mencipta senarai MOSS tersuai yang mengandungi kedua-dua Ruang: "ControlField" dan "ControlValue". Lajur nilai yang mengandungi jumlah permintaan pembelian seterusnya. Ambil perhatian bahawa generik "mengawal" konvensyen penamaan menyediakan bidang kawalan masa depan yang boleh digunakan apabila diperlukan.

Penyelesaian teknikal: Mewujudkan sebuah perkhidmatan web yang dilayari pelanggan InfoPath. Perkhidmatan web pulangan semula jumlah permintaan pembelian seterusnya dan mengemaskini nilai senarai.

Pengajaran yang dipelajari:

  • Apabila menambah perkhidmatan web ini sebagai sumber data untuk membentuk InfoPath, Saya mendapati ia perlu untuk mengubahnya menjadi sebuah udc dan menyimpannya ke dalam Perpustakaan sambungan data.
  • Saya juga mendapati ia perlu untuk membolehkan domain salib skrip melalui Perkhidmatan Pusat Pentadbiran // Pengurusan permohonan // Borang konfigurasi pelayan.
  • Pertama borang cuba untuk mengakses perkhidmatan web, Ia mengambil masa dan kadang-kadang, Ia akan keluar masa. Saya fiddled dengan seting dalam konfigurasi pelayan borang memperluaskan seting tamat dan yang seolah-olah membantu.

Kod:

menggunakan Sistem;
menggunakan System.Web;
menggunakan System.Web.Services;
menggunakan System.Web.Services.Protocols;
menggunakan Microsoft.SharePoint;
menggunakan System.Configuration;

[WebService(Ruang nama = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
awam kelas PoService : System.Web.Services.WebService
{
awam PoService () {

//Tanda komentar baris berikut jika menggunakan direka komponen
//InitializeComponent();
}

/// <Ringkasan>
/// Mendapatkan nombor PO seterusnya daripada senarai kawalan nombor sharepoint po.
/// Kenaikan jumlah PO dalam senarai itu.
/// </Ringkasan>
/// <pulangan yang></pulangan yang>
[WebMethod]
awam rentetan GetNextPoNumber()
{
rentetan SpPoControlSiteName; // Nama sebenar tapak MOSS yang menghoskan senarai kawalan PO.
rentetan SpPoControlListName; // Nama sebenar senarai MOSS yang mengandungi kawalan itu Po.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

rentetan nextPoReqNumber = "xyzzy";

menggunakan (SPSite lokasi = baru SPSite(SpPoControlSiteName))
{
menggunakan (SPWeb web = halaman. OpenWeb())
{

SPList currentList = web. Senarai[SpPoControlListName];

foreach (SPItem controlItem dalam currentList.Items)
{

jika (((rentetan)controlItem["ControlField"]).Adalah sama dengan("NextPoNumber"))
{
nextPoReqNumber = (rentetan)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Menukar.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Mengesan, membaca dan mengemaskini jumlah PO dalam senarai.


} // menggunakan spweb web = site.openweb()
} // menggunakan laman web spsite = baru spsite("http://localhost/mizuho")

kembali nextPoReqNumber;

}
}