نشرت لي إعلانات المبوبة لبيع سيارتي في مقاطعة بيرغن, نيو جيرسي ليلة الأحد. وردت عدة استفسارات عبر البريد الإلكتروني بعد ذلك بقليل، وأغلقت الصفقة مع شخص ليلة الثلاثاء.
تقريبا جيدة جداً ليكون صحيحاً …
نشرت لي إعلانات المبوبة لبيع سيارتي في مقاطعة بيرغن, نيو جيرسي ليلة الأحد. وردت عدة استفسارات عبر البريد الإلكتروني بعد ذلك بقليل، وأغلقت الصفقة مع شخص ليلة الثلاثاء.
تقريبا جيدة جداً ليكون صحيحاً …
لا يمكنني تعديل البحث المتقدم 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. وهم:
هنا هو رمز لذلك:
العامة فئة إكسيززيكوربوراتيلوكاتيونفيلد : سبفيلدتيكست
{
العامة إكسيززيكوربوراتيلوكاتيونفيلد
(سبفيلدكوليكشن الحقول, السلسلة typeName, السلسلة اسم العرض)
: قاعدة(الحقول, typeName, اسم العرض) { }
العامة إكسيززيكوربوراتيلوكاتيونفيلد
(سبفيلدكوليكشن الحقول, السلسلة اسم العرض)
: قاعدة(الحقول, اسم العرض) { }
العامة تجاوز باسيفيلدكونترول فيلدرينديرينجكونترول
{
الحصول على
{
باسيفيلدكونترول التحكم = الجديد إكسيززيكوربوراتيلوكاتيونفيلدكونترول();
عنصر التحكم. FieldName = وهذا.إينتيرنالنامي;
عودة عنصر التحكم;
} //الحصول على
} // فيلدرينديرينجكونترول
العامة تجاوز السلسلة جيتفاليداتيدسترينج(كائن القيمة)
{
إذا كان (وهذا.مطلوب || القيمة. ToString().يساوي(السلسلة.فارغة))
{
رمي الجديد سبفيلدفاليداتيونيكسسيبشن ("لم يتم تعيين الإدارة.");
}
عودة قاعدة.جيتفاليداتيدسترينج(القيمة);
} // جيتفاليداتيدسترينج
} // إكسيزيكوربوراتيلوكيشن
العامة فئة إكسيززيكوربوراتيلوكاتيونفيلدكونترول : باسيفيلدكونترول
{
محمية القائمة المنسدلة إكسيززيكوربوراتيلوكاتيونسيليكتور;
محمية تجاوز السلسلة ديفاولتيمبلاتينامي
{
الحصول على
{
عودة "إكسيززيكوربوراتيلوكاتيونفيلدكونترول";
}
} // ديفاولتيمبلاتينامي
العامة تجاوز كائن القيمة
{
الحصول على
{
انسوريتشيلدكونترولس();
عودة وهذا.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 (مطلوب قوي, طبعًا).
<%@ عنصر التحكم اللغة= "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.
<?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 في الخادم، وأنه ينبغي بدء كل عمل جيد.
فئة إضافية: CAML
هنا يتم نشر كبيرة بزميل يدعى "كريج" في أسلوب لإيجاد تعريفات CAML لأنواع محتوى الحقل على أساس إيقاف حقيقي يعيش التعاريف من موقع.
نشر له يقول كل شيء. في سطور:
فئات إضافية: برنامج visual Studio 2005
لتمكين خاصية التحسس الذكي مفيدة للميزات, عناصر, إلخ في visual studio 2005:
يتم الآن تمكين خاصية التحسس الذكي لأن مستند XML.
انظر هنا لمزيد من المعلومات حول هذا الموضوع، وكذلك للحصول على إرشادات حول كيفية اقتران WSS التحسس الذكي تلقائياً مع أي ملف XML.
اتخذ، واجتازوا الاختبار المذكورة أعلاه هذا الصباح. لقد وجدت الامتحان صعباً وعادلة.
هناك ندرة نسبية في المعلومات المتعلقة بهذا الامتحان على شبكة الإنترنت. لست متأكداً لماذا.
من الواضح أنه لن يحصل في أي تفاصيل حول الامتحان أخذت, ولكن أعتقد أن بإمكاني القول ما يلي:
وهو يسرد ما تحتاج إلى معرفته لاجتياز الامتحان، وأنها, المنظمة البحرية الدولية, دقيقة للغاية.
</نهاية>الاشتراك في بلادي بلوق!
فئة إضافية: InfoPath
ملخص: InfoPath 2007 نموذج نشرة إلى خادم موس يوفر قائمة منسدلة من البائعين مرتبطة بقائمة مخصصة في موس. عند تحديد أحد البائعين, قواعد تعيين قيم الحقل لحفنة من حقول النص مثل اسم مندوب المبيعات, عنوان, مدينة, الدولة, الرمز البريدي والهاتف. الأداء أمر فظيع. ونلاحظ أن الأداء تزداد سوءا (بطريقة غير خطية) لكل حقل إضافي نقوم بتحديث هذه الطريقة. أي, إذا كنا فقط تحديث اسم مندوب المبيعات, فإنه يأخذ [x] مقدار الوقت. إذا نقوم بتحديث مندوب المبيعات, العنوان 1, عنوان 2, مدينة, الدولة, الرمز البريدي, فإنه يأخذ 10 أوقات أطول.
الحل: كتابة خدمة ويب (يمكن العثور على نموذج التعليمات البرمجية هنا) أن يتم تمرير اسم مورد وأنها ترجع إلى الوراء تفاصيل المورد. ثم, تعيين الحقول بهذه الطريقة. على الرغم من أن هذا يبدو جداً بطيئة, كان هناك أي اختلاف ملحوظ في الأداء عند تعيين نحن 1 ميدان مقابل 8 الحقول. كمكافأة إضافية, للمستخدمين الحصول على بارد "الاتصال بالخادم" سيلون تأثير في حين أنها تنتظر النموذج للاحتجاج وتستهلك الخدمة النتائج.
التحديث: نحن ابدأ تحديد السبب الجذري لهذه المشكلة وأنها السطحية ابدأ مرة أخرى.
ونلاحظ أن فجأة أثناء تنفيذ موقع التنمية, اثنين من المستخدمين غير قادر على الوصول إلى مجموعة الموقع. يمكن المصادقة هذه الحسابات إلى الموقع الرئيسي, ولكن عند محاولة الوصول إلى مجموعة موقع معين, أنها مجرد الحصول على شاشة فارغة. أية أخطاء عرض, مجرد صفحة بيضاء اللون الأبيض.
تسجيل الدخول كمسؤول مجموعة موقع، ومحاولة إضافة أحد هؤلاء المستخدمين كمسؤول موقع وهذا الوقت, عند الضغط على "موافق", نحصل على هذه الرسالة:
حدث استثناء. (استثناء من HRESULT: 0x 80020009 (DISP_E_EXCEPTION))
لقد أمضينا بعض الوقت في البحث عن هذا وسوء الحظ, لم يخرج بأي شيء مفيد. وكانت هناك بعض الرسائل في سجل التشخيص, ولكن كان من الصعب ربط لهم تماما مع هذه المسألة.
وفي نهاية المطاف, نحن مجموعة الموقع حذف وإعادة إنشاء فإنه وأن تحل.
إذا كان يمكنني معرفة ما تسبب هذا في المستقبل, سوف أقوم بتحديث هذه الوظيفة.