سؤال

لقد حددت نوع قالب قائمة مخصصة ل SharePoint. وبعد أقوم بتثبيتها باستخدام VSewss 1.3 ويبدو أن كل شيء يتصرف بشكل صحيح.

لقد أضفت إجراء مخصص الذي سوف إضافة أعمدة إضافية (SPFILES) إلى القائمة. وبعد ومع ذلك، في كل مرة ينفذ فيها الكود ترميها و ArgumentException مع "القيمة ليست في النطاق المتوقع". رسالة خطأ. يبدو أن هذا السلوك محددا لأنواع مخصصة كما هو مقترح في هذه المدونة post..

إليك التعليمات البرمجية ذات الصلة (هذه القائمة مثيل من نوع قالب القائمة المخصصة التي تم إنشاؤها باستخدام Indower Interace) يحاول إضافة حقل إلى spfieldcollection من هذه القائمة

                SPFieldType fieldType = Format2SPFieldType(format);
                SPField field = new SPField(thisList.Fields, fieldType.ToString(), fieldName);
                thisList.Fields.Add(field);

البيان الأخير (Slist.Fields.add (الحقل)) يلقي الاستثناء التالي:

   Message  "Value does not fall within the expected range."

   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName, Boolean bThrowException)
   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXmlInternal(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXml(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.Add(SPField field)

ينفذ هذا الكود نفسه بشكل جيد فقط إذا كان عنصر Splist هو نوع قائمة الأساس (قائمة مخصصة مخصصة).

هل يوجد أي الحقول التي تحتاج إلى وضع صريح في ال كام واستخدام. AddfieldAsXML () طريقة مباشرة لجعل هذا الرمز يعمل مع أنواع قوالب قائمة مخصصة؟

تحديث: يجب أن أذكر أيضا أن الحقول تم إنشاؤها بالفعل في بعض الحالات على الرغم من أن المكالمة ترمي استثناء!

هل كانت مفيدة؟

المحلول

اتضح أن هذا كان سبب لأن استدعاء chainlist.schemaxml وضع كائن Splist في حالة لم أكن قادرا على التعافي منه! الحصول على مرجع جديد إلى نفس قائمة SharePoint، على سبيل المثال، SPLIP NEWList = Slist.ParentWeb.lists [Slist.ID] حل المشكلة!

نصائح أخرى

ما هو نوع الحقل الذي تحاول إضافته؟ هل هذا حقل داخلي أو نوع حقل مخصص، ماذا تعود هذه الوظيفة Format2spfieldType؟ إذا كان حقلا علبيا، فهل يمكنك تجربة إضافة مع

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top