2008-11-14 10 views
8

मैं सूची में "शीर्षक" फ़ील्ड को छिपाने की कोशिश कर रहा हूं।शेयरपॉइंट: एक सूची फ़ील्ड छुपा प्रोग्रामेटिक

SPList myList; 
... 
SPField titleField = myList.Fields.GetField("Title"); 
//titleField.PushChangesToLists = true; <-- doesn't seem to make a difference 
titleField.ShowInEditForm = false; 
titleField.ShowInDisplayForm = false; 
titleField.ShowInNewForm = false; 
titleField.Update(); 
//myList.Update(); <-- make no difference 

क्या मैं गलत कर रहा हूँ: यह काम करने के लिए प्रतीत नहीं होता?

उत्तर

12

इस प्रयास करें:

field.Hidden = true; 
field.Update(); 
+2

जो शर्मनाक है। यह ठीक वैसा ही है जैसा मुझे चाहिए। मुझे अभी भी समझ में नहीं आता कि 'ShowInEditForm' संपत्ति क्या है लेकिन कम से कम मैं आगे बढ़ सकता हूं ... धन्यवाद (मेरी रक्षा में, मैंने पूरे सप्ताह सोया नहीं है - घर में नवजात शिशु)। – vitule

+0

यदि आप केवल प्रदर्शन फ़ॉर्म से छिपाना चाहते हैं तो आपको उन संपत्ति की आवश्यकता है। – TinTin

0

सुनिश्चित करें कि आप नया SPWeb उदाहरण पकड़ रहे हैं।

using (SPSite site = new SPSite(webUrl)) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     try 
     { 
      //... Get SPList ... 
     } 
    } 
} 
+0

ऐसा नहीं है। हालांकि धन्यवाद! – vitule

0

मुझे विश्वास है कि सूचियों में फ़ील्ड की दृश्यता को डिफ़ॉल्ट दृश्य द्वारा नियंत्रित किया जाता है जिसे उपयोगकर्ता "प्राप्त करता है"। क्या आप दृश्य को संशोधित नहीं करना चाहते हैं? मुझे पता है कि आप एक सूची के साथ-साथ डिफ़ॉल्ट दृश्य के लिए दृश्य प्राप्त कर सकते हैं।

मैं बस हूँ थूक-डांट लगाई यहाँ ...

+0

मेरी मुख्य चिंता नए फॉर्म और संपादन फ़ॉर्म से "शीर्षक" फ़ील्ड को निकालना है। – vitule

0

वहाँ एक कीमत है जो आप भुगतान करते हैं जब आप छिपे हुए संपत्ति का उपयोग करें।

यह पता चला है कि छुपाए गए कॉलम को कोड के माध्यम से हटाने की क्षमता को हटा दिया जाएगा।

0

इसे आजमाएं यह काम करेगा ... शीर्षक फ़ील्ड को लिंकटाइटल के रूप में नामित किया गया है ... अन्य फ़ील्ड उसी तरह छिपाए जा सकते हैं।

SPView view = list.DefaultView;  
if(view.ViewFields.Exists("LinkTitle")) 
{  
    view.ViewFields.Delete("LinkTitle");  
    view.Update();  
} 
0

ऊपर दिया गया समाधान हर जगह मैदान को छिपाने के लिए है। यह आपकी सूची के कॉलम अवलोकन में भी छिपा होगा।

यदि आप केवल किसी विशेष सूची में फ़ील्ड को छिपाना चाहते हैं। या यदि आप अभी भी सूची सेटिंग्स पृष्ठ का उपयोग करके फ़ील्ड में हेरफेर करना चाहते हैं (दृश्यमान पर वापस सेट करें)। आपको सूची की "फ़ील्डलिंक" संपत्ति में फ़ील्ड की "छिपी हुई" संपत्ति सेट करने की आवश्यकता है।

myList.FieldLinks["SomeField"].Hidden = true; 
2

छिपे हुए सत्य को स्थापित करने के उपरोक्त उदाहरणों में से कोई भी काम तब तक काम नहीं करेगा जब तक CanToggleHidden के पास सत्य का मूल्य न हो। समस्या यह है कि, CanToggleHidden केवल एक सेट है, सेट नहीं है, इसलिए आपको पहले से फ्लिप करने के लिए प्रतिबिंब का उपयोग करके एक कट्टरपंथी "शेयरपॉइंट प्रोग्रामिंग जिमनास्टिक स्टंट" करना होगा। एक बार ऐसा करने के बाद, आप छुपे हुए (या वापस झूठ) में बदल सकते हैं। वेब पर बहुत सारे उदाहरण हैं (हालांकि उनमें से सभी सही तरीके से लिखे गए नहीं हैं)। यदि आवश्यक हो, तो मैं शायद एक पावरशेल उदाहरण खोद सकता हूं जो काम करता है।

if(field.CanToggleHidden) { 
    field.Hidden = false; 
} 
else 
{ 
    // display an error message or write to your favorite logging location 
    // explaining that there is no hope of changing the value of Hidden until 
    // CanToggleHidden changes to TRUE first. 
} 
संबंधित मुद्दे