Aylık Arşivler: Ağustos 2007

Gelişmiş Arama özelleştirme yosun — Durum gelişmiş aramada XSLT fark etmez

Ben çok sık gelişmiş arama XSLT değiştirmeyin, Ben her zaman küçük tepeleri tırmanma gibi görünüyor bu yüzden.

Bu benim yeni derstir: Bir sütuna başvururken durumda önemli. Gelişmiş arama, I-si olmak bu kadar tanımlanmış sütunlar:

<kök xmlns:XSI="http://www.w3.org/2001/XMLSchema-instance">
<
Sütunlar>
<
Sütun Adı="GafTrainingInvoiceNumber" />
<
Sütun Adı="GafTrainingInvoiceLocation" />
<
Sütun Adı="Çalışma kimliği"/>
<
Sütun Adı="Sırası"/>
<
Sütun Adı="Başlık"/>
<
Sütun Adı="Yazar"/>
<
Sütun Adı="Boyutu"/>
<
Sütun Adı="Yolu"/>
<
Sütun Adı="Açıklama"/>
<
Sütun Adı="Yazma"/>
<
Sütun Adı="Siteadı"/>
<
Sütun Adı="CollapsingStatus"/>
<
Sütun Adı="HitHighlightedSummary"/>
<
Sütun Adı="HitHighlightedProperties"/>
<
Sütun Adı="ContentClass"/>
<
Sütun Adı="IsDocument"/>
<
Sütun Adı="PictureThumbnailURL"/>
</
Sütunlar>
</
kök>

Fatura numarası ve fatura konumu görüntüler XLST olmuştu:

<p>
Eğitim fatura numarası: <XSL:value-of seçin="GafTrainingInvoiceNumber"/>
<
br></br>
Eğitim fatura yeri: <XSL:value-of seçin="GafTrainingInvoiceLocation"/>
</
p>

Ancak, Hepsi küçük harf özelliğinde başvurmak Seç vardır, olarak:

<p>
Eğitim fatura numarası: <XSL:value-of seçin="gaftraininginvoicenumber"/>
<
br></br>
Eğitim fatura yeri: <XSL:value-of seçin="gaftraininginvoicelocation"/>
</
p>


Bu düzeltilmiş kadar, Arama sonuçları etiketleri gösterdi (Yani. "Eğitim fatura numarası") veri yok ama.

YOSUN: İşlevsel örneği – özel veri türü

İş senaryosu:

MOSS kurumsal çapta uygulanması için üretim şirketi ile 30+ siteler ve birkaç düzine şirket bölümler.

İş hedefi:

Çok sayıda iş grupları rağmen (bölümler, Mekanlar, vb), belirli verileri genel bir düzeyde muhafaza edilmelidir. Örneğin, şirketin tüm fiziksel konumlar bir yetkili ana listesi (e.g. üretim tesisleri, ambar konumunuz, satış ofisleri) Merkezi bir konumda muhafaza edilmelidir.

Teknik bir sorun:

Kurumsal sınıflandırma kullanarak birden çok site koleksiyonlarındaki uygulanmıştır. Biz isterdi özel WSS liste içinde fiziksel konumlar yetkili listesi oluşturmak için. O zaman, Ne zaman biz bir içerik türüne sahip bir sütun için gerekli (veya bir liste veya doktor kütüphanesine eklenir sütun) Bu kurumsal yerlerde bulunan, "arama kullanarak bir sütun oluşturmak" veri türü ve nokta bu ana listesi.

Ne yazık ki, Arama veri türleri bir kaynak listesi "yerel olarak erişmeniz gerekir" yetkili listemize site koleksiyonları dağıtılamaz anlamı.

Teknik çözüm:

Yeni bir özel veri türü temel alınarak SPField hayata ve temsil edilen bir DropDownList kimin ListItems ana WSS listeden doldurmak UI alet.

Adı verilen yeni bir site koleksiyonu hazırlandı "http://localhost/EnterpriseData". Orada, "Kurumsal yerlerde" adında özel bir liste oluşturdu. Bu liste, sadece standart "başlığını kullanır" gerçek şirket konumların listesini içeren alan.

Bir WSS içindeki özel veri türü oluşturmak için birkaç ayrı adımları takip. Onlar:

  1. SPField devralan bir sınıf tanımlayın (bir ihtiyaç halinde diğer alanlardan miras).

İşte bunun için kod:

Genel sınıf XYZZYCorporateLocationField : SPFieldText
{
Genel XYZZYCorporateLocationField
(SPFieldCollection alanları, dize typeName, dize displayName)
: Bankası(alanları, typeName, displayName) { }

Genel XYZZYCorporateLocationField
(SPFieldCollection alanları, dize displayName)
: Bankası(alanları, displayName) { }

Genel geçersiz kılma BaseFieldControl FieldRenderingControl
{
Al
{
BaseFieldControl kontrol = Yeni XYZZYCorporateLocationFieldControl();
Denetim. FieldName = Bu.InternalName;
geri dönmek Denetim;
} //Al
} // fieldrenderingcontrol

Genel geçersiz kılma dize GetValidatedString(Nesne değer)
{
Eğer (Bu.Gerekli || değeri. ToString().Eşittir(Dize.Boş))
{
atmak Yeni SPFieldValidationException ("Bölümü atanmış değil.");
}
geri dönmek Bankası.GetValidatedString(değer);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Temel alan denetiminden devralan bir sınıf tanımlayın, olarak:

Genel sınıf XYZZYCorporateLocationFieldControl : BaseFieldControl
{
korumalı DropDownList XYZZYCorporateLocationSelector;

korumalı geçersiz kılma dize DefaultTemplateName
{
Al
{
geri dönmek "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

Genel geçersiz kılma Nesne Değer
{
Al
{
EnsureChildControls();
geri dönmek Bu.SelectedValue XYZZYCorporateLocationSelector.;
} // Al
ayarla
{
EnsureChildControls();
Bu.XYZZYCorporateLocationSelector.SelectedValue = (dize)Bu.ItemFieldValue;
} // ayarla
} // nesne değeri geçersiz

korumalı geçersiz kılma geçersiz CreateChildControls()
{

Eğer (Bu.Alan == NULL || Bu.ControlMode == SPControlMode.Görüntüleme)
geri dönmek;

Bankası.CreateChildControls();

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

Eğer (Bu.XYZZYCorporateLocationSelector == NULL)
atmak Yeni Özel durum("HATASI: Yüklenemiyor. ASCX dosya!");

Eğer (!Bu.IsPostBack sayfa.)
{

kullanma (SPSite Site = Yeni SPSite("http://localhost/enterprisedata"))
{
kullanma (SPWeb Web sitesi =. OpenWeb())
{

SPList.Update() currentList web =. Listeler["Kurumsal yerlerde"];

foreach (SPItem XYZZYCorporateLocation içinde currentList.Items)
{
Eğer (XYZZYCorporateLocation["Başlığı"] == NULL) devam etmek;

dize Title;
Title = XYZZYCorporateLocation["Başlığı"].ToString();

Bu.XYZZYCorporateLocationSelector.Items.Add
(Yeni ListItem(Title, Title));

} // foreach

} // SPWeb web kullanarak site.openweb =()
} // SPSite sitesini kullanarak yeni spsite =("http://localhost/enterprisedata")

} // Eğer değilse geri gönderme

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Yukarıdaki kod, temelde DropDownList WSS özel listesinde yer alan değer ile yerleştirmek için mantığını uygular http://localhost/enterprisedata ve adlandırılmış "Kurumsal bölümler".

Bir tek .cs dosyası her iki sınıf tanımlanan, Bu derlenmiş ve GAC içine koy (güçlü gerekli, Elbette).

  1. Denetim şablonu uygulamak (.ascx) görüldüğü gibi:

<%@ Denetim Dil"C# =" Devralır="Microsoft.SharePoint.Portal.serveradmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Sürüm 12.0.0.0, kültür = bağımsız =,PublicKeyToken = 71e9bce111e9429c" compilationMode"Her zaman =" %>
<%
@ Üye ol Tagprefix"wssawc =" Namespace="Microsoft.SharePoint.WebControls" Derleme="Microsoft.SharePoint, Sürüm 12.0.0.0 =, Kültür tarafsız =, PublicKeyToken = 71e9bce111e9429c" %> <%@ Üye ol Tagprefix"SharePoint =" Namespace="Microsoft.SharePoint.WebControls" Derleme="Microsoft.SharePoint, Sürüm 12.0.0.0 =, Kültür tarafsız =, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate KİMLİĞİ"XYZZYCorporateLocationFieldControl =" runat= "sunucu">
<Şablon>
<ASP:DropDownList KİMLİĞİ"XYZZYCorporateLocationSelector =" runat= "sunucu" />
</Şablon>
</
SharePoint:RenderingTemplate>

Yukarıda c kaydedilir:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Nihayet, Biz içine kaydetmek için bir XML dosyası oluşturmak..... 12XML dizini. Bu bizim özel veri türü tanımlar CAML olduğunu ve benim gibi, Bu gibi görünüyor:

<?XML Sürüm="1.0" kodlama="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Alan Adı="TypeName">CorporateLocations</Alan>
<
Alan Adı="ParentType">Metin</Alan>
<
Alan Adı="TypeDisplayName">Kurumsal yerlerde</Alan>
<
Alan Adı="TypeShortDescription">Üretim veya diğer özellikleri de dahil olmak üzere tüm XYZZY kurumsal yerlerde.</Alan>
<
Alan Adı="UserCreatable">GERÇEK</Alan>
<
Alan Adı="ShowInListCreate">GERÇEK</Alan>
<
Alan Adı="ShowInDocumentLibraryCreate">GERÇEK</Alan>
<
Alan Adı="ShowInSurveyCreate">GERÇEK</Alan>
<
Alan Adı="ShowInColumnTemplateCreate">GERÇEK</Alan>
<
Alan Adı="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Sürüm 1. 0 =, Kültür tarafsız =, PublicKeyToken = b0b19e85410990c4</Alan>
<
RenderPattern Adı="DisplayPattern">
<
Anahtarı>
<
İfade>
<
Sütun />
</
İfade>

<Dava Değer=""/>

<Varsayılan>
<
HTML>
<![CDATA[
<Stil span = "renk:Kırmızı"><b>]]>
</
HTML>

<
Sütun SubColumnNumber="0" HTMLEncode="GERÇEK"/>

<HTML><![CDATA[</b></yayılma>]]></HTML>

</
Varsayılan>
</
Anahtarı>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Bu XML dosyası özel veri türü WSS "kütüphane ekler." ve GAC karşı eşleşen derleme vardı.

Bu bitler yerine taşıdıktan sonra, iisreset server ve bu güzel çalışma tüm başlamak gerekir.

WSS: CAML alan tanımlarını oluşturmak için yöntem.

Ek Kategori: CAML

Burada "craig adında bir adam tarafından büyük bir gönderme" kapalı bir siteden canlı tanımları dayalı alan içerik türleri için CAML tanımlarını bulmak için bir teknik.

Onun nakil bütün olduğunu anlatıyor.. Kısaca:

  1. İçerik türü oluştur.
  2. Bir listeyle ilişkilendirme.
  3. SharePoint Designer ile listeyi aç.
  4. "Kişisel web paketi" için dışa aktarma.
  5. Bir .cab dosyası için yeniden adlandırma.
  6. Bildirim ekstresi.
  7. İçerik türü ve ilişkili CAML bulmak.

WSS: Yararlı özellikleri/elemanları/etc etkinleştirmek için Özet adımları. IntelliSense içinde VS 2005

Ek kategoriler: Visual Studio 2005

Yararlı IntelliSense özelliklerini etkinleştirmek için, öğeleri, Visual studio, vb 2005:

  1. WSS sunucu erişim.
  2. "C-gidin:\Program filescommon filesmicrosoft sharedweb server extensions12TEMPLATEXML"
  3. Görev çubuğunu başka bir windows Gezgini'ni açın: "C:\Program FilesMicrosoft Visual Studio 8XmlSchemas"
  4. Aşağıdaki dosyaları WSS sunucu, VS için kopyalayın. 2005 şema dizini:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. VS dinlenme 2005
  6. Projeye yeni bir XML dosyası ekleme.
  7. XML dosyasının gövdesinde tıklatın.
  8. Özellikler bölmesinde, Şemaları"tıklayın" ve "wss.xsd al" Bu seçenekler arasından. (Wss.xsd başvurulan bu yana diğer xsd's seçmek gerekli değildir).

IntelliSense Şimdi bu XML belgesi için etkinleştirildi.

Bkz: Burada daha fazla bu konuda ve talimatlar için nasıl yönergeler için otomatik olarak WSS IntelliSense herhangi bir XML dosyası ile ilişkilendirmek için.

WSS sınavı 70-541, Microsoft Windows SharePoint Services 3.0 – Uygulama geliştirme

Aldı ve yukarıda belirtilen test bu sabah geçti. Sınav zor ve adil olmak bulundu.

Bu sınav Web'de modülleri göreli bir eksiklik olduğunu. Im'değil emin niçin.

Açıkçası ben sınavı hakkında herhangi bir ayrıntılı almazsınız, Ama şunları söyleyebiliriz düşünüyorum:

  1. Bu bağlantı güven: http://www.microsoft.com/learning/exams/70-541.mspx.

    Sınav ve onun geçmek için bilmeniz gerekenler listelenmiştir, IMO, çok doğru.

  2. Ayrıca, bağlantı önerir İç Microsoft Windows SharePoint Services 3.0 Ted Pattison tarafından & Daniel Larson. Bu kitap test adresleri neredeyse tüm konuları kapsar.. Büyük basit sınavı hazırlık kendi başına olmak bulduk. Bu harika örnekler sunar ve gerçekten denemek için bazı yeni ve ilginç şeyler hakkında düşünme beni var.. Kitap birkaç bit atlamak istiyorsanız, Sadece kitabın içindekiler içinde belgili tanımlık bağlantı yukarıda maddelerin çapraz referans.
  3. Hiçbir şey gerçek deneyimi yendi. Zaman ve ilgi varsa, Kitaptaki örnekler ile birlikte izleyin ve onlarla deney. Seni sınavda daha kolay bir zaman var gibi WSS'yi uygulaması programlama öğrenmek.

</sonunda>Benim blog abone!

YOSUN / InfoPath Forms Server (InfoPath 2007) aşağı açılan liste performansı

Ek Kategori: InfoPath

Özet: InfoPath 2007 MOSS sunucuya dağıtmak için form özel yosun listeye bağlı satıcılar aþaðý açýlan listesini sağlar. Satıcı seçme üzerine, kurallar, metin alanları satış temsilcisi adı gibi bir avuç alan değerlerini atayın., Adres, Şehir, Devlet, zip ve telefon. Performans korkunç. Biz fark performans kötüleşiyor (Doğrusal olmayan bir biçimde) her ek alan için biz bu şekilde güncelleyin.. Yani, Eğer sadece satış temsilcisi adı güncelleştirin, o alır [x] bir süre. Satış temsilcisi güncelleştirirseniz, Adres1, Adres2, Şehir, Devlet, ZIP, o alır 10 kat uzun.

Çözüm: Bir web servisi yazma (örnek kodu bulabilirsiniz Burada) bir satıcı adına geçti ve satıcı tafsilât geri döndürür. O zaman, Bu şekilde alanları atama. Bu da görünse de yavaş, Biz atanmış hiçbir discernable fark performans vardı 1 alan karşı 8 alanları. Ek olarak, kullanıcılar "sunucusuna bağlanılıyor serin olsun" Cylon formu çağırmak ve hizmet sonuçları beklerken etkisi.

YOSUN: Özel durum oluştu. (HRESULT özel durum: 0x 80020009 (DISP_E_EXCEPTION))

GÜNCELLEŞTİRME: Tekrar bu sorunu ve bu asla yüzey kök neden hiç düşünmedik.

Biz geliştirme site uygulanması sırasında o aniden fark, iki kullanıcı bir site koleksiyonu erişemiyor. Bu hesapları ana siteye kimlik doğrulaması yapabilir, Ama belirli site koleksiyonu erişmeye çalışırken, Onlar sadece boş bir ekran olsun. Görüntülenen hata, Sadece boş bir beyaz sayfa.

Bir site koleksiyonu yönetici oturum açın ve bu kullanıcıların site admin ve bu sefer ekleyin çalışın, "Tamam" tuşuna basarak üzerine, Bu mesajı alır:

Özel durum oluştu. (HRESULT özel durum: 0x 80020009 (DISP_E_EXCEPTION))

Bu araştırma biraz zaman geçirdim ve ne yazık ki, işe yarar bir şey çıkmadı. Tanılama günlüğüne bazı mesajları vardı., Ama tam olarak onlara bu konuyla ilişkilendirmek zordu.

Sonunda, Biz site koleksiyonunun silinmesi ve yeniden oluşturulması ve çözüldü.

Eğer ı biçim ne gelecekte bunun nedeni, Bu posta güncelleriz.