Arsip bulanan: Agustus 2007

MOSS advanced Cari kustomisasi — Kasus masalah dalam pencarian lanjutan XSLT

Saya tidak mengubah pencarian lanjutan XSLT sangat sering, Jadi sepertinya aku sedang mendaki bukit-bukit kecil setiap kali.

Pelajaran terbaru ini: Kasus penting ketika referensi kolom. Dalam pencarian lanjutan, Saya memiliki kolom yang didefinisikan seperti ini:

<akar xmlns:XSI="http://www.w3.org/2001/XMLSchema-instance">
<
Kolom>
<
Kolom Nama="GafTrainingInvoiceNumber" />
<
Kolom Nama="GafTrainingInvoiceLocation" />
<
Kolom Nama="WorkId"/>
<
Kolom Nama="Peringkat"/>
<
Kolom Nama="Judul"/>
<
Kolom Nama="Penulis"/>
<
Kolom Nama="Ukuran"/>
<
Kolom Nama="Jalan"/>
<
Kolom Nama="Deskripsi"/>
<
Kolom Nama="Menulis"/>
<
Kolom Nama="SiteName"/>
<
Kolom Nama="CollapsingStatus"/>
<
Kolom Nama="HitHighlightedSummary"/>
<
Kolom Nama="HitHighlightedProperties"/>
<
Kolom Nama="ContentClass"/>
<
Kolom Nama="IsDocument"/>
<
Kolom Nama="PictureThumbnailURL"/>
</
Kolom>
</
akar>

XLST yang menampilkan lokasi nomor dan faktur faktur yang telah:

<p>
Pelatihan faktur jumlah: <Extensible Stylesheet Language:nilai dari Pilih="GafTrainingInvoiceNumber"/>
<
br></br>
Lokasi faktur pelatihan: <Extensible Stylesheet Language:nilai dari Pilih="GafTrainingInvoiceLocation"/>
</
p>

Namun, Pilih harus referensi properti dalam semua huruf, seperti dalam:

<p>
Pelatihan faktur jumlah: <Extensible Stylesheet Language:nilai dari Pilih="gaftraininginvoicenumber"/>
<
br></br>
Lokasi faktur pelatihan: <Extensible Stylesheet Language:nilai dari Pilih="gaftraininginvoicelocation"/>
</
p>


Sampai aku mengoreksi yang, hasil pencarian menunjukkan label (yaitu. "Pelatihan faktur nomor") tetapi tidak ada data.

MOSS: Contoh fungsional-jenis Data kustom

Bisnis skenario:

Perusahaan-lebar pelaksanaan MOSS untuk perusahaan manufaktur dengan 30+ situs dan beberapa lusin Departemen.

Tujuan bisnis:

Meskipun banyak kelompok bisnis (Departemen, Lokasi, dll), data tertentu harus dipelihara di tingkat global. Misalnya, Daftar master otoritatif semua lokasi fisik perusahaan (misalnya. Fasilitas manufaktur, lokasi gudang, kantor penjualan) harus dipelihara dalam lokasi.

Masalah teknis:

Taksonomi enterprise dilaksanakan menggunakan situs beberapa koleksi. Kami akan senang untuk membuat daftar otoritatif lokasi fisik di WSS daftar kustom. Kemudian, Ketika kita diperlukan untuk memiliki sebuah kolom di jenis konten (atau kolom yang ditambahkan ke daftar atau doc Perpustakaan) yang berisi lokasi perusahaan, kita akan menciptakan sebuah kolom yang menggunakan "lookup" DataType dan titik ini master daftar.

Sayangnya, lookup datatypes harus mengakses sumber daftar "lokal" berarti bahwa daftar otoritatif kami tidak meliputi koleksi situs.

Solusi teknis:

Menerapkan tipe data kustom baru dilaksanakan berdasarkan SPField dan diwakili sebagai DropDownList di UI ListItems yang mengisi dari daftar WSS master.

Kami membuat kumpulan situs baru yang disebut "http://localhost/EnterpriseData". Ada, kami membuat daftar kustom bernama "Perusahaan lokasi". Daftar ini hanya menggunakan standar "judul" bidang berisi daftar lokasi perusahaan aktual.

Seseorang mengikuti beberapa langkah diskrit untuk membuat kustom data jenis di WSS. Mereka:

  1. Mendefinisikan kelas yang mewarisi SPField (satu mungkin mewarisi dari bidang lain jika diperlukan).

Berikut adalah kode untuk itu:

Umum kelas XYZZYCorporateLocationField : SPFieldText
{
Umum XYZZYCorporateLocationField
(SPFieldCollection bidang, string typeName, string displayName)
: Base(bidang, typeName, displayName) { }

Umum XYZZYCorporateLocationField
(SPFieldCollection bidang, string displayName)
: Base(bidang, displayName) { }

Umum override BaseFieldControl FieldRenderingControl
{
mendapatkan
{
BaseFieldControl kontrol = baru XYZZYCorporateLocationFieldControl();
kontrol. Nama field tidak dikenal = ini.InternalName;
kembali kontrol;
} //mendapatkan
} // fieldrenderingcontrol

Umum override string GetValidatedString(objek nilai)
{
Jika (ini.Diperlukan || nilai. ToString().Sama dengan(String.Kosong))
{
melempar baru SPFieldValidationException ("Departemen tidak diberikan.");
}
kembali Base.GetValidatedString(nilai);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Mendefinisikan kelas lain yang mewarisi dari kontrol dasar bidang, seperti dalam:

Umum kelas XYZZYCorporateLocationFieldControl : BaseFieldControl
{
dilindungi DropDownList XYZZYCorporateLocationSelector;

dilindungi override string DefaultTemplateName
{
mendapatkan
{
kembali "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

Umum override objek Nilai
{
mendapatkan
{
EnsureChildControls();
kembali ini.XYZZYCorporateLocationSelector.SelectedValue;
} // mendapatkan
set
{
EnsureChildControls();
ini.XYZZYCorporateLocationSelector.SelectedValue = (string)ini.ItemFieldValue;
} // set
} // menimpa objek nilai

dilindungi override Batal CreateChildControls()
{

Jika (ini.Bidang == null || ini.ControlMode == SPControlMode.Tampilan)
kembali;

Base.CreateChildControls();

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

Jika (ini.XYZZYCorporateLocationSelector == null)
melempar baru Pengecualian("KESALAHAN: Tidak dapat memuat. ASCX file!");

Jika (!ini.Halaman IsPostBack.)
{

menggunakan (SPSite situs = baru SPSite("http://localhost/enterprisedata"))
{
menggunakan (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Daftar["Lokasi perusahaan"];

foreach (SPItem XYZZYCorporateLocation dalam currentList.Items)
{
Jika (XYZZYCorporateLocation["Judul"] == null) «««;

string theTitle;
theTitle = XYZZYCorporateLocation["Judul"].ToString();

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

} // foreach

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

} // Jika tidak postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Kode di atas pada dasarnya mengimplementasikan logika untuk mempopulasikan DropDownList dengan nilai-nilai dari daftar kustom WSS terletak di http://localhost/enterprisedata dan bernama "Departemen perusahaan".

Aku didefinisikan kedua kelas dalam file tunggal dialokasikan, ini dikompilasi dan memasukkannya ke dalam GAC (kuat diperlukan, Tentu saja).

  1. Menerapkan template kontrol (.ascx) seperti yang ditunjukkan:

<%@ Kontrol Bahasa= "C#" Mewarisi="Microsoft.SharePoint.portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.portal,Versi = 12.0.0.0, Culture = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Selalu" %>
<%
@ Daftar Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Majelis="Microsoft.SharePoint, Versi = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Daftar Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Majelis="Microsoft.SharePoint, Versi = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "server">
<Template>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "server" />
</Template>
</
SharePoint:RenderingTemplate>

Atas disimpan ke c:\Program filescommon program sharedweb server extensions12controltemplates.

  1. Akhirnya, kami menciptakan sebuah file XML untuk menyimpan ke... 12XML direktori. Ini adalah CAML yang mendefinisikan tipe data kustom kami dan sebagai contoh saya, terlihat seperti ini:

<?XML Versi="1.0" encoding="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Bidang Nama="TypeName">CorporateLocations</Bidang>
<
Bidang Nama="ParentType">Teks</Bidang>
<
Bidang Nama="TypeDisplayName">Lokasi perusahaan</Bidang>
<
Bidang Nama="TypeShortDescription">Semua perusahaan tidak ada lokasi termasuk fasilitas manufaktur atau lainnya.</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, Culture = neutral, PublicKeyToken = b0b19e85410990c4</Bidang>
<
RenderPattern Nama="DisplayPattern">
<
Switch>
<
Expr>
<
Kolom />
</
Expr>

<Kasus Nilai=""/>

<Standar>
<
HTML>
<![CDATA[
<span gaya = "warna:Merah"><b>]]>
</
HTML>

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

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

</
Standar>
</
Switch>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
File XML ini menambah tipe data kustom WSS "Perpustakaan" dan pertandingan melawan GAC telah Majelis.

Setelah semua bit ini pindah ke tempatnya, iisreset pada server dan itu harus semua mulai bekerja dengan baik.

WSS: Teknik untuk menciptakan CAML bidang definisi.

Kategori tambahan: CAML

Sini adalah posting besar oleh seorang bernama "craig" pada teknik untuk menemukan CAML definisi untuk bidang jenis konten didasarkan dari hidup nyata definisi dari sebuah situs.

Posting mengatakan itu semua. Secara singkat:

  1. Membuat jenis konten.
  2. Menghubungkannya dengan daftar.
  3. Membuka daftar dengan SharePoint Designer.
  4. Ekspor ke "paket web pribadi".
  5. Mengubah nama untuk .cab.
  6. Ekstrak yang nyata.
  7. Menemukan jenis konten dan CAML terkait.

WSS: Ringkasan langkah untuk mengaktifkan berguna fitur/elemen/etc. Intellisense dalam VS 2005

Kategori tambahan: Visual Studio 2005

Untuk mengaktifkan intellisense berguna untuk fitur, elemen, dll dalam visual studio 2005:

  1. Akses WSS server.
  2. Arahkan ke "c:\Program filescommon program sharedweb server extensions12TEMPLATEXML"
  3. Membuka windows explorer lain menunjuk ke: "C:\Program program Visual Studio 8XmlSchemas"
  4. Menyalin file-file berikut dari WSS server vs Anda 2005 skema direktori:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Restart VS 2005
  6. Menambahkan file XML baru untuk sebuah proyek.
  7. Klik di badan XML file.
  8. Di panel properti, Klik pada "skema" dan memilih "wss.xsd" dari pilihan. (Hal ini tidak perlu untuk memilih xsd lain karena mereka dirujuk dari wss.xsd).

Intellisense sekarang diaktifkan untuk dokumen XML.

Lihat Sini untuk informasi lebih lanjut mengenai hal ini dan petunjuk tentang bagaimana untuk secara otomatis mengaitkan WSS intellisense dengan XML file.

WSS ujian 70-541, Microsoft Windows SharePoint Services 3.0 – Pengembangan aplikasi

Aku mengambil dan lulus uji disebutkan di atas pagi ini. Saya menemukan ujian menjadi sulit dan adil.

Ada kekurangan relatif informasi pada ujian ini di web. Saya tidak yakin mengapa.

Aku jelas tidak akan masuk ke dalam setiap detail tentang saya mengambil ujian, tapi saya pikir saya bisa mengatakan berikut:

  1. Mempercayai link ini: http://www.microsoft.com/learning/exams/70-541.mspx.

    Daftar apa yang Anda perlu tahu untuk lulus ujian dan itu, IMO, sangat akurat.

  2. Link juga merekomendasikan Di dalam Microsoft Windows SharePoint Services 3.0 oleh Ted Sir Alex Ferguson & Daniel Larson. Buku ini mencakup hampir semua mata pelajaran yang tes alamat. Saya menemukan ini untuk menjadi besar dengan sendirinya luar sederhana ujian prep. Menyediakan contoh besar dan benar-benar membuat saya berpikir tentang beberapa hal yang baru dan menarik untuk mencoba. Jika Anda ingin melewatkan beberapa bit dalam buku, hanya lintas-referensi buku TOC dengan item dalam link dari atas.
  3. Tidak ada yang mengalahkan pengalaman aktual. Jika Anda memiliki waktu dan minat, Ikuti bersama dengan contoh-contoh dalam buku dan kemudian bereksperimen dengan mereka. Anda akan memiliki waktu lebih mudah pada ujian serta benar-benar belajar pemrograman aplikasi WSS.

</akhir>Berlangganan ke blog saya!

MOSS / Bentuk InfoPath Server (InfoPath 2007) daftar drop-down kinerja

Kategori tambahan: InfoPath

Ringkasan: InfoPath 2007 Formulir dikirim ke MOSS server menyediakan daftar drop-down vendor yang terikat pada daftar MOSS kustom. Setelah memilih vendor, Peraturan menetapkan nilai bidang segenggam text Field seperti nama perwakilan penjualan, Alamat, Kota, negara, Zip dan telepon. Kinerja mengerikan. Kita perhatikan bahwa kinerja semakin buruk (secara non-linear) untuk setiap kolom tambahan kami memperbarui cara ini. Yaitu, Jika kita hanya memperbarui nama perwakilan penjualan, dibutuhkan [x] jumlah waktu. Jika kami memperbarui perwakilan penjualan, address1, address2, Kota, negara, Zip, dibutuhkan 10 kali lebih lama.

Solusi: Menulis layanan web (contoh kode dapat ditemukan Sini) yang disahkan dalam nama vendor dan kembali kembali rincian Penjual. Kemudian, menetapkan bidang cara ini. Walaupun ini tampak terlalu lambat, ada tidak ada perbedaan kinerja discernable ketika kami ditetapkan 1 bidang versus 8 bidang. Sebagai bonus tambahan, pengguna mendapatkan dingin "menghubungi server" Cylon Efek sementara mereka menunggu untuk formulir untuk memohon dan mengkonsumsi hasil Layanan.

MOSS: Pengecualian terjadi. (Pengecualian dari HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

UPDATE: Kami tidak pernah ditentukan akar penyebab masalah ini dan itu tidak pernah permukaan lagi.

Kita perhatikan selama pelaksanaan pengembangan situs yang tiba-tiba, dua pengguna tidak dapat mengakses situs koleksi. Account tersebut dapat mengotentikasi ke situs utama, Tapi ketika mencoba untuk mengakses koleksi situs tertentu, mereka hanya mendapatkan layar kosong. Tidak ada kesalahan yang ditampilkan, hanya sebuah halaman kosong putih.

Kita login sebagai admin koleksi situs dan mencoba untuk menambahkan satu dari para pengguna sebagai admin situs dan saat ini, Setelah menekan "OK", kita mendapatkan pesan ini:

Pengecualian terjadi. (Pengecualian dari HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Kami menghabiskan beberapa waktu untuk meneliti ini dan sayangnya, tidak datang dengan sesuatu yang berguna. Ada beberapa pesan dalam log diagnostik, tetapi sulit untuk persis berkorelasi dengan masalah ini.

Di ujung, kita menghapus situs koleksi dan kembali itu dan yang dipecahkan itu.

Jika saya mencari tahu apa yang menyebabkan ini di depan, Saya akan update posting ini.