المحفوظات الشهرية: آب/أغسطس 2007

قائمة كريج عملت جيدا بالنسبة لي

نشرت لي إعلانات المبوبة لبيع سيارتي في مقاطعة بيرغن, نيو جيرسي ليلة الأحد. وردت عدة استفسارات عبر البريد الإلكتروني بعد ذلك بقليل، وأغلقت الصفقة مع شخص ليلة الثلاثاء.

تقريبا جيدة جداً ليكون صحيحاً …

موس التخصيص البحث المتقدم — يهم القضية في البحث المتقدم XSLT

لا يمكنني تعديل البحث المتقدم XSLT في كثير من الأحيان, لذا يبدو أن أنا تسلق الجبال تلال صغيرة كل مرة.

هذا الدرس الأحدث: حالة المسائل عند الإشارة إلى عمود. في بلدي البحث المتقدم, لدى الأعمدة المعرفة كهذا:

<الجذر xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
الأعمدة>
<
عمود اسم="جافتراينينجينفويسينومبير" />
<
عمود اسم="جافترينينجينفويسيلوكيشن" />
<
عمود اسم="معرف العمل"/>
<
عمود اسم="رتبة"/>
<
عمود اسم="العنوان"/>
<
عمود اسم="الكاتب"/>
<
عمود اسم="حجم"/>
<
عمود اسم="مسار"/>
<
عمود اسم="وصف"/>
<
عمود اسم="الكتابة"/>
<
عمود اسم="اسم الموقع"/>
<
عمود اسم="كولابسينجستاتوس"/>
<
عمود اسم="هيثيغلايتيدسوماري"/>
<
عمود اسم="هيثيغلايتيدبروبيرتيس"/>
<
عمود اسم="كونتينتكلاس"/>
<
عمود اسم="إيسدوكومينت"/>
<
عمود اسم="بيكتوريثومبنايلورل"/>
</
الأعمدة>
</
الجذر>

وقد تم XLST الذي يعرض الموقع عدد والفاتورة فاتورة:

<p>
رقم الفاتورة التدريب: <xsl:القيمة حدد="جافتراينينجينفويسينومبير"/>
<
br></br>
موقع التدريب الفاتورة: <xsl:القيمة حدد="جافترينينجينفويسيلوكيشن"/>
</
p>

ومع ذلك, وقد حدد الرجوع الخاصية في حالة انخفاض جميع, كما هو الحال في:

<p>
رقم الفاتورة التدريب: <xsl:القيمة حدد="جافتراينينجينفويسينومبير"/>
<
br></br>
موقع التدريب الفاتورة: <xsl:القيمة حدد="جافترينينجينفويسيلوكيشن"/>
</
p>


حتى صحح هذا, نتائج البحث أظهرت التسميات (الأول-هاء. "التدريب رقم الفاتورة") ولكن لا توجد بيانات.

موس: الوظيفية مثال – نوع البيانات المخصصة

سيناريو العمل:

التنفيذ على مستوى المؤسسة للمعايير الأمنية التنفيذية الدنيا للشركة المصنعة مع 30+ مواقع وبضع عشرات من إدارات الشركات.

هدف الأعمال:

وعلى الرغم من العديد من المجموعات التجارية (الإدارات, مواقع, إلخ), ينبغي الإبقاء على بعض البيانات على الصعيد العالمي. وعلى سبيل المثال, قائمة رئيسية موثوقة لجميع المواقع الفعلية للشركة (مثلاً. مرافق التصنيع, مواقع المستودعات, مكاتب المبيعات) وينبغي أن يحتفظ في موقع مركزي.

مشكلة فنية:

تصنيف المؤسسة تم تنفيذها باستخدام مجموعات موقع متعددة. كنا نود لإنشاء قائمة موثوقة للمواقع الفعلية في قائمة WSS مخصصة. ثم, عندما كنا بحاجة إلى وجود عمود في نوع محتوى (أو إضافة عمود إلى مكتبة قائمة أو doc) يحتوي على مواقع الشركات, ونحن سوف إنشاء عمود باستخدام "بحث" نوع البيانات، وأشر إلى هذه القائمة الرئيسية.

للأسف, البحث عن أنواع بيانات يجب الوصول إلى قائمة مصدر "محلياً" بمعنى أن لدينا قائمة موثوقة لا يمكن أن تمتد مجموعات الموقع.

الحل التقني:

تنفيذ نوع بيانات مخصصة جديدة تنفذ على أساس سبفيلد وممثله DropDownList في واجهة المستخدم التي ListItems تعبئة من القائمة الرئيسية WSS.

قمنا بإنشاء مجموعة موقع جديدة تسمى "http://localhost/EnterpriseData". هناك, قمنا بإنشاء قائمة مخصصة تسمى "مواقع الشركات". يستخدم هذه القائمة مجرد عنوان "القياسية" الحقل تحتوي قائمة بمواقع الشركات الفعلية.

واحد يتبع عدة خطوات منفصلة إنشاء نوع بيانات مخصصة في WSS. وهم:

  1. تعريف فئة التي ترث من سبفيلد (واحد قد ترث حقول أخرى إذا لزم الأمر).

هنا هو رمز لذلك:

العامة فئة إكسيززيكوربوراتيلوكاتيونفيلد : سبفيلدتيكست
{
العامة إكسيززيكوربوراتيلوكاتيونفيلد
(سبفيلدكوليكشن الحقول, السلسلة typeName, السلسلة اسم العرض)
: قاعدة(الحقول, typeName, اسم العرض) { }

العامة إكسيززيكوربوراتيلوكاتيونفيلد
(سبفيلدكوليكشن الحقول, السلسلة اسم العرض)
: قاعدة(الحقول, اسم العرض) { }

العامة تجاوز باسيفيلدكونترول فيلدرينديرينجكونترول
{
الحصول على
{
باسيفيلدكونترول التحكم = الجديد إكسيززيكوربوراتيلوكاتيونفيلدكونترول();
عنصر التحكم. FieldName = وهذا.إينتيرنالنامي;
عودة عنصر التحكم;
} //الحصول على
} // فيلدرينديرينجكونترول

العامة تجاوز السلسلة جيتفاليداتيدسترينج(كائن القيمة)
{
إذا كان (وهذا.مطلوب || القيمة. ToString().يساوي(السلسلة.فارغة))
{
رمي الجديد سبفيلدفاليداتيونيكسسيبشن ("لم يتم تعيين الإدارة.");
}
عودة قاعدة.جيتفاليداتيدسترينج(القيمة);
} // جيتفاليداتيدسترينج

} // إكسيزيكوربوراتيلوكيشن

  1. تعريف فئة أخرى أن يرث من عنصر تحكم الحقل الأساسي, كما هو الحال في:

العامة فئة إكسيززيكوربوراتيلوكاتيونفيلدكونترول : باسيفيلدكونترول
{
محمية القائمة المنسدلة إكسيززيكوربوراتيلوكاتيونسيليكتور;

محمية تجاوز السلسلة ديفاولتيمبلاتينامي
{
الحصول على
{
عودة "إكسيززيكوربوراتيلوكاتيونفيلدكونترول";
}
} // ديفاولتيمبلاتينامي

العامة تجاوز كائن القيمة
{
الحصول على
{
انسوريتشيلدكونترولس();
عودة وهذا.XYZZYCorporateLocationSelector.SelectedValue;
} // الحصول على
تعيين
{
انسوريتشيلدكونترولس();
وهذا.XYZZYCorporateLocationSelector.SelectedValue = (السلسلة)وهذا.إيتيمفيلدفالوي;
} // تعيين
} // تجاوز قيمة الكائن

محمية تجاوز باطلة كريتتشيلدكونترولس()
{

إذا كان (وهذا.حقل = = null || وهذا.كونترولمودي = = سبكونترولمودي.عرض)
عودة;

قاعدة.كريتتشيلدكونترولس();

وهذا.إكسيززيكوربوراتيلوكاتيونسيليكتور =
(القائمة المنسدلة)تيمبلاتيكونتاينير. فيندكونترول("إكسيززيكوربوراتيلوكاتيونسيليكتور");

إذا كان (وهذا.إكسيززيكوربوراتيلوكاتيونسيليكتور = = null)
رمي الجديد الاستثناء("خطأ: لا يمكن تحميل. ملف ASCX!");

إذا كان (!وهذا.الصفحة IsPostBack.)
{

استخدام (SPSite الموقع = الجديد SPSite("http://localhost/انتيربريسيداتا"))
{
استخدام (SPWeb ويب = الموقع. أبنوب())
{

سبليست كورينتليست = ويب. قوائم["مواقع الشركات"];

foreach (سبيتيم إكسيزيكوربوراتيلوكيشن في currentList.Items)
{
إذا كان (إكسيزيكوربوراتيلوكيشن["عنوان"] == null) مواصلة;

السلسلة ثيتيتلي;
ثيتيتلي = إكسيزيكوربوراتيلوكيشن["عنوان"].ToString();

وهذا.XYZZYCorporateLocationSelector.Items.Add
(الجديد عنصر القائمة(ثيتيتلي, ثيتيتلي));

} // foreach

} // استخدام ويب spweb = site.openweb()
} // استخدام موقع spsite = spsite جديد("http://localhost/انتيربريسيداتا ")

} // إذا لم إعادة النشر

} // كريتتشيلدكونترولس

} // إكسيززيكوربوراتيلوكاتيونفيلدكونترول

تنفذ التعليمات البرمجية أعلاه أساسا منطق ملء DropDownList مع القيم من قائمة مخصصة WSS الموجود في http://localhost/enterprisedata والمسماة "إدارات الشركات".

أنا تعريف كل من الفئات في ملف.cs واحد, جمعت ووضعه في GAC (مطلوب قوي, طبعًا).

  1. تطبيق قالب التحكم (.ascx) كما هو موضح:

<%@ عنصر التحكم اللغة= "C #" يرث="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,الإصدار = 12.0.0.0، الثقافة المحايدة =,PublicKeyToken = 71e9bce111e9429c" compilationMode= "دائماً" %>
<%
@ سجل Tagprefix= "وساوك" Namespace="Microsoft.SharePoint.WebControls" الجمعية العامة="Microsoft.SharePoint, الإصدار = 12.0.0.0, الثقافة = المحايدة, PublicKeyToken = 71e9bce111e9429c" %> <%@ سجل Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" الجمعية العامة="Microsoft.SharePoint, الإصدار = 12.0.0.0, الثقافة = المحايدة, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:رينديرينجتيمبلاتي معرف= "إكسيززيكوربوراتيلوكاتيونفيلدكونترول" runat= "الملقم">
<قالب>
<آسيا والمحيط الهادئ:القائمة المنسدلة معرف= "إكسيززيكوربوراتيلوكاتيونسيليكتور" runat= "الملقم" />
</قالب>
</
SharePoint:رينديرينجتيمبلاتي>

يتم حفظ ما ورد أعلاه في ج:\البرنامج الملفات المشتركة مايكروسوفت المشتركة الملقم extensions12controltemplates.

  1. وأخيراً, نقوم بإنشاء ملف XML حفظ إلى... 12XML الدليل. هذا هو CAML الذي يقوم بتعريف نوع البيانات المخصص لنا، وعلى سبيل المثال بلدي, يشبه هذا:

<?xml الإصدار="1.0" ترميز="الرموز العالمية لتحوير الهيئة-8" ?>
<
فيلدتيبيس>
<
FieldType>
<
حقل اسم="TypeName">كوربوراتيلوكيشنز</حقل>
<
حقل اسم="بارينتيبي">النص</حقل>
<
حقل اسم="تيبيديسبلاينامي">مواقع الشركات</حقل>
<
حقل اسم="تيبيشورتديسكريبشن">جميع مواقع الشركات XYZZY بما في ذلك مرافق التصنيع أو غيرها.</حقل>
<
حقل اسم="أوسيركريتابل">صحيح</حقل>
<
حقل اسم="شووينليستكريتي">صحيح</حقل>
<
حقل اسم="شوويندوكومينتليبراريكريتي">صحيح</حقل>
<
حقل اسم="شووينسورفيكريتي">صحيح</حقل>
<
حقل اسم="شووينكولومنتيمبلاتيكريتي">صحيح</حقل>
<
حقل اسم="فيلدتيبيكلاس">Conchango.XYZZYCorporateLocationField, إكسيززيكوربوراتيلوكاتيونفيلد, الإصدار = 1.0.0.0, الثقافة = المحايدة, PublicKeyToken = b0b19e85410990c4</حقل>
<
رينديرباتيرن اسم="ديسبلايباتيرن">
<
رمز التبديل>
<
Expr>
<
عمود />
</
Expr>

<القضية القيمة=""/>

<الافتراضي>
<
إتش تي أم ال>
<![CDATA[
<تمتد نمط = "لون:الأحمر "><ب>]]>
</
إتش تي أم ال>

<
عمود سوبكولومنومبير="0" هتملينكودي="صحيح"/>

<إتش تي أم ال><![CDATA[</ب></تمتد>]]></إتش تي أم ال>

</
الافتراضي>
</
رمز التبديل>

</
رينديرباتيرن>
</
FieldType>
</
فيلدتيبيس>
يضيف هذا الملف XML نوع البيانات المخصصة إلى WSS "مكتبة" ويطابق ذلك ضد GAC قد الجمعية.

بعد نقل جميع هذه القطع في مكانها, iisreset في الخادم، وأنه ينبغي بدء كل عمل جيد.

WSS: تقنية لإنشاء تعريفات الحقل CAML.

فئة إضافية: CAML

هنا يتم نشر كبيرة بزميل يدعى "كريج" في أسلوب لإيجاد تعريفات CAML لأنواع محتوى الحقل على أساس إيقاف حقيقي يعيش التعاريف من موقع.

نشر له يقول كل شيء. في سطور:

  1. إنشاء نوع محتوى.
  2. إقرانه بقائمة.
  3. فتح القائمة مع مصمم SharePoint.
  4. تصدير حزمة ويب شخصية "".
  5. إعادة تسمية إلى. cab.
  6. استخراج الملف الظاهر.
  7. العثور على نوع المحتوى الخاص بك و CAML المرتبطة بها.

WSS: ملخص الخطوات لتمكين ميزات مفيدة/عناصر/إلخ. التحسس الذكي في مقابل 2005

فئات إضافية: برنامج visual Studio 2005

لتمكين خاصية التحسس الذكي مفيدة للميزات, عناصر, إلخ في visual studio 2005:

  1. الوصول إلى ملقم WSS.
  2. انتقل إلى "جيم:\البرنامج الملفات المشتركة مايكروسوفت المشتركة الملقم extensions12TEMPLATEXML"
  3. قم بفتح مستكشف windows آخر مشيراً إلى: "ج:\برنامج مايكروسوفت البصرية ستوديو 8XmlSchemas"
  4. نسخ الملفات التالية من ملقم WSS لمباراة الخاص بك 2005 دليل المخططات:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. إعادة تشغيل مقابل 2005
  6. إضافة ملف XML جديد إلى المشروع.
  7. انقر فوق نص ملف XML.
  8. في جزء "خصائص", انقر على "مخططات" واختيار "wss.xsd" من الاختيارات. (فإنه ليس من الضروري لتحديد xsd الأخرى نظراً لأنها يتم الرجوع إليها من wss.xsd).

يتم الآن تمكين خاصية التحسس الذكي لأن مستند XML.

انظر هنا لمزيد من المعلومات حول هذا الموضوع، وكذلك للحصول على إرشادات حول كيفية اقتران WSS التحسس الذكي تلقائياً مع أي ملف XML.

امتحان WSS 70-541, Microsoft Windows SharePoint Services 3.0 – تطوير التطبيقات

اتخذ، واجتازوا الاختبار المذكورة أعلاه هذا الصباح. لقد وجدت الامتحان صعباً وعادلة.

هناك ندرة نسبية في المعلومات المتعلقة بهذا الامتحان على شبكة الإنترنت. لست متأكداً لماذا.

من الواضح أنه لن يحصل في أي تفاصيل حول الامتحان أخذت, ولكن أعتقد أن بإمكاني القول ما يلي:

  1. تثق بهذا الرابط: http://www.microsoft.com/learning/exams/70-541.mspx.

    وهو يسرد ما تحتاج إلى معرفته لاجتياز الامتحان، وأنها, المنظمة البحرية الدولية, دقيقة للغاية.

  2. وتوصي أيضا بالارتباط داخل Microsoft Windows SharePoint Services 3.0 من تيد باتيسون & دانيال لارسون. هذا الكتاب يغطي تقريبا جميع المواضيع التي تتناول الاختبار. لقد وجدت أن يكون كبيرا في حد ذاته وما بعدها الإعدادية امتحان بسيط. ويقدم أمثلة رائعة وفعلا حصلت لي التفكير في بعض الأشياء الجديدة والمثيرة للاهتمام في محاولة. إذا كنت ترغب في تخطي بعض معاهدات الاستثمار الثنائية في الكتاب, مجرد إنشاء إسناد ترافقي لجدول محتويات الكتاب مع العناصر الموجودة في الرابط أعلاه من.
  3. لا شيء يتفوق على الخبرة العملية الفعلية. إذا كان لديك الوقت والاهتمام, اتبع جنبا إلى جنب مع الأمثلة الواردة في الكتاب، وثم تجربة معهم. كنت سوف يكون وقت أسهل في الامتحان كذلك حقاً تعلم برمجة التطبيق WSS.

</نهاية>الاشتراك في بلادي بلوق!

موس / InfoPath Forms Server (InfoPath 2007) الأداء القائمة المنسدلة

فئة إضافية: InfoPath

ملخص: InfoPath 2007 نموذج نشرة إلى خادم موس يوفر قائمة منسدلة من البائعين مرتبطة بقائمة مخصصة في موس. عند تحديد أحد البائعين, قواعد تعيين قيم الحقل لحفنة من حقول النص مثل اسم مندوب المبيعات, عنوان, مدينة, الدولة, الرمز البريدي والهاتف. الأداء أمر فظيع. ونلاحظ أن الأداء تزداد سوءا (بطريقة غير خطية) لكل حقل إضافي نقوم بتحديث هذه الطريقة. أي, إذا كنا فقط تحديث اسم مندوب المبيعات, فإنه يأخذ [x] مقدار الوقت. إذا نقوم بتحديث مندوب المبيعات, العنوان 1, عنوان 2, مدينة, الدولة, الرمز البريدي, فإنه يأخذ 10 أوقات أطول.

الحل: كتابة خدمة ويب (يمكن العثور على نموذج التعليمات البرمجية هنا) أن يتم تمرير اسم مورد وأنها ترجع إلى الوراء تفاصيل المورد. ثم, تعيين الحقول بهذه الطريقة. على الرغم من أن هذا يبدو جداً بطيئة, كان هناك أي اختلاف ملحوظ في الأداء عند تعيين نحن 1 ميدان مقابل 8 الحقول. كمكافأة إضافية, للمستخدمين الحصول على بارد "الاتصال بالخادم" سيلون تأثير في حين أنها تنتظر النموذج للاحتجاج وتستهلك الخدمة النتائج.

موس: حدث استثناء. (استثناء من HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

التحديث: نحن ابدأ تحديد السبب الجذري لهذه المشكلة وأنها السطحية ابدأ مرة أخرى.

ونلاحظ أن فجأة أثناء تنفيذ موقع التنمية, اثنين من المستخدمين غير قادر على الوصول إلى مجموعة الموقع. يمكن المصادقة هذه الحسابات إلى الموقع الرئيسي, ولكن عند محاولة الوصول إلى مجموعة موقع معين, أنها مجرد الحصول على شاشة فارغة. أية أخطاء عرض, مجرد صفحة بيضاء اللون الأبيض.

تسجيل الدخول كمسؤول مجموعة موقع، ومحاولة إضافة أحد هؤلاء المستخدمين كمسؤول موقع وهذا الوقت, عند الضغط على "موافق", نحصل على هذه الرسالة:

حدث استثناء. (استثناء من HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

لقد أمضينا بعض الوقت في البحث عن هذا وسوء الحظ, لم يخرج بأي شيء مفيد. وكانت هناك بعض الرسائل في سجل التشخيص, ولكن كان من الصعب ربط لهم تماما مع هذه المسألة.

وفي نهاية المطاف, نحن مجموعة الموقع حذف وإعادة إنشاء فإنه وأن تحل.

إذا كان يمكنني معرفة ما تسبب هذا في المستقبل, سوف أقوم بتحديث هذه الوظيفة.