2011-11-08 4 views
5

मैं प्रोग्राम सूची में एक सूची में फ़ील्ड जोड़ता हूं। निम्न पंक्ति को एक नया field'to एक मौजूदा सूची कहते हैंSharePoint 2010 में SPField के लिए आंतरिक नाम कैसे सेट करें?

Lists.AddFieldToList(warrantyList, SPFieldType.Text, "internalFieldName", "ShownFieldName", "Comment", false, false, false);      

इस विधि कि कहा जाता है:

public static bool AddFieldToList(SPList list, SPFieldType fieldType, string fieldInternalName, string fieldDisplayName, string fieldDescription, bool unique, bool required, bool indexed) 
    { 
     SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName);    
     bool success = AddFieldToList(list, field, fieldDisplayName, fieldDescription, unique, required, indexed); 
     return success; 
    } 

विधि की पहली पंक्ति क्षेत्र में काफी जानकारी से भर जाता है के बाद , लेकिन कोई आंतरिक नाम (एनयूएलएल) और एक शीर्षक जिसमें "आंतरिक फ़ील्डनाम" है।

दूसरी पंक्ति में निम्न विधि कहा जाता है:

public static bool AddFieldToList(SPList list, SPField field, string fieldDisplayName, string fieldDescription, bool unique, bool required, bool indexed) 
    { 
     if (field != null && 
      (!list.Fields.Contains(field.Id))) 
     { 

      field.ReadOnlyField = false; 
      field.Title = fieldDisplayName; 
      field.Description = fieldDescription; 
      field.EnforceUniqueValues = unique; 
      field.Indexed = indexed; 
      field.Required = required; 
      list.Fields.Add(field); 
      return true; 
     } 

     return false; 
    } 

कि शीर्षक (बेशक) "ShownFieldName" करने के लिए बदल गया है के बाद। लेकिन मेरा लक्ष्य एक आंतरिक नाम "आंतरिक फ़ील्डनाम" है जिसमें एक प्रदर्शन नाम "ShownFieldName" है, इसलिए "ShownFieldName" सूची में दिखाया गया है लेकिन मैं आइटम को आंतरिक नाम

फ़ील्ड के रूप में एक्सेस कर सकता हूं। आंतरिक नाम केवल पढ़ा जाता है: कैसे क्या मैं उस मुद्दे को हल कर सकता हूं? इससे पहले कि कुछ भी डेटाबेस आप परिवर्तन करने के लिए सहेजा जा चुका है

SPField field = new SPField(list.ParentWeb.Fields, fieldType.ToString(), fieldInternalName); 

लेकिन :

उत्तर

6

यह पंक्ति SPField उद्देश्य यह है कि आंतरिक नाम आप की जरूरत हो सकता था (displayNameconstructor के लिए पारित बराबर fieldInternalName) बनाता है इस पंक्ति में यह:

field.Title = fieldDisplayName; 

यहाँ समाधान है:

  1. fieldInternalName और fieldDisplayName दोनों के रूप में internalFieldName गुजर सूची में एक फ़ील्ड जोड़ें।
  2. SPList.Update() विधि पर कॉल करें।
  3. सूची से फ़ील्ड संदर्भ प्राप्त करें और Title संपत्ति को ShownFieldName पर बदलें।
  4. SPField.Update() विधि पर कॉल करें।
+0

फिर से धन्यवाद, मरेक। काम किया। –

2

उनके पास SharePoint 2007 के बाद SharePoint में AddFieldAsXml विधि है। यदि आप ऐसा करते हैं, तो आप फ़ील्ड को जोड़ने के तरीके पर अधिक नियंत्रण प्राप्त करते हैं। उपरोक्त लिंक में एक उदाहरण देखें।

+0

मुझे वह विधि पता है लेकिन स्ट्रिंग बनाने के बजाय "असली" ऑब्जेक्ट्स के साथ प्रोग्रामिंग पसंद करते हैं। –

संबंधित मुद्दे