2012-02-28 21 views
5

का डिस्प्ले मोड निर्धारित करें मेरे पास यह समाधान कई बार है और अच्छा समाधान खोजने की कोशिश करते समय ऊब गया है। समझ में नहीं आता क्यों माइक्रोसॉफ्ट में विधि शामिल नहीं है जो प्रदर्शन पृष्ठ का आसान तरीका निर्धारित कर सकता है: "सामान्य प्रदर्शन" या "डिज़ाइन मोड" में। इसमें विभिन्न चरों की जांच करने की कई सलाहएं हैं, लेकिन यह विशिष्ट रूप से उस पृष्ठ को विभिन्न प्रकार के पृष्ठ (वेबपार्ट पेज और विकी पेज) पर डिज़ाइन में और पोस्टबैक पर नहीं कह सकती है।शेयरपॉइंट पेज

अंत में मुझे थक चुका है और मैं इस बारे में:

public static bool IsDesignTime() 
    { 
     if (SPContext.Current.IsDesignTime) return true; 

     if (HttpContext.Current.Request.QueryString["DisplayMode"] != null) 
      return true; 

     var page = HttpContext.Current.Handler as Page; 

     if(page == null) return false; 

     var inDesign = page.Request.Form["MSOLayout_InDesignMode"]; 
     var dispMode = page.Request.Form["MSOSPWebPartManager_DisplayModeName"]; 
     var wikiMode = page.Request.Form["_wikiPageMode"]; 
     var we = page.Request.Form["ctl00$PlaceHolderMain$btnWikiEdit"]; 

     if (inDesign == null & dispMode == null) return false; //normal display 

     if (we == "edit") return true; //design on wiki pages 

     if (page is WikiEditPage & page.IsPostBack & inDesign == "" & dispMode == "Browse" & wikiMode == "") return false; //display wiki on postback 


     if (inDesign == "" & dispMode == "Browse" & (wikiMode == null | wikiMode == "")) return false; //postback in webpart pages in display mode 

     if (inDesign == "0" & dispMode == "Browse") return false; //exiting design on webpart pages 

     return true; 
    } 

किसी को भी बेहतर समाधान है?

+1

पृष्ठ तक पहुंचने वाले प्रकाशन पृष्ठों में। अनुरोध संपत्ति अपवाद के साथ विफल हो जाती है। (HttpContext.Current.Request का उपयोग इसके बजाय किया जा सकता है। –

+0

विकी पृष्ठों और केवल विकी पृष्ठों के लिए, आपके कोड ने मुझे समाधान दिया: पृष्ठ। Request.Form ["ctl00 $ PlaceHolderMain $ btnWikiEdit"] == "संपादित करें"। फॉर्ममोड गैर-विकी पृष्ठों का ख्याल रखता है। – CigarDoug

उत्तर

2

इस कोड का प्रयास करें ..

if (Microsoft.SharePoint.SPContext.Current.FormContext.FormMode == SPControlMode.Display) 
    { 
    // your code to support display mode 
    } 
    else // Microsoft.SharePoint.SPContext.Current.FormContext.FormMode = SPControlMode.Edit 
    { 
    // your code to support edit mode 
    } 
+0

यह वेबपार्टपेज – devi

+0

पर काम नहीं करता है इस लिंक को चेक करें http://www.codeproject.com/Articles/24019/Switch-a-SharePoint-WebPart-page-display-mode-to -ई –

5

अगर के लिए कोड काम नीचे से WebpartPage में अपने काम के लिए मुझे

WebPartManager mgr = this.WebPartManager; 
if (mgr.DisplayMode == WebPartManager.EditDisplayMode) 
    { 
     // logic when in Edit Mode 
    } 
else 
    { 

    } 
+0

हां, यह वेबपेज पेज में काम करता है, लेकिन विकी पेज – devi

+1

में नहीं, मैं इस आलेख में वेबपार्टपेज के साथ दिमाग में आया था। यह एक अच्छी शुरुआत है, यह [एसपीटेकबाइट्स] (http://sptechbytes.blogspot.com/2013/ 11/शेयरपॉइंट-2013-हैंडलिंग-पेज-डिस्प्ले.html) आलेख 3 मुख्य मोड के बीच अंतर दिखाता है। – GoldBishop

+0

पेज। रिक्वेस्ट.फॉर्म ["ctl00 $ प्लेसहोल्डरमेन $ btnWikiEdit"] == "संपादित करें" विकी पृष्ठों के लिए काम करता है। उपरोक्त कोड काम करता है आर गैर विकी पेज। – CigarDoug

12

आप पेज मोड पता लगाने के लिए 2 मामला है:

में यदि आप एक टीम साइट का उपयोग कर रहे हैं:

if (Microsoft.SharePoint.SPContext.Current.FormContext.FormMode == SPControlMode.Edit) 
    { 
     ltr.Text = "EditMode2"; 
    } 
    else 
    { 
     ltr.Text = "ViewMode"; 
    } 

मामले में आप एक प्रकाशन साइट का उपयोग कर रहे हैं:

if (Microsoft.SharePoint.SPContext.Current.FormContext.FormMode == SPControlMode.Display) 
    { 
    // your code to support display mode 
    } 
    else // Microsoft.SharePoint.SPContext.Current.FormContext.FormMode = SPControlMode.Edit 
    { 
    // your code to support edit mode 
    } 
3

मैं एक कठिन समय इन उत्तरों के किसी भी हो रही शेयरप्वाइंट 2013 में काम करने के लिए सभी स्थितियों को देखते हुए किया था। मैं लगातार काम करने के लिए EditModePanel नहीं मिला। मुझे this article में एक स्निपेट मिला जो कि मैंने अभी तक कोशिश की हर परिदृश्य में काम करने लगता है।

var isPublishing = SPContext.Current.FormContext.FormMode != SPControlMode.Invalid; 
var wpDMode = WebPartManager.GetCurrentWebPartManager(Page).DisplayMode.Name; 
var isEditing = isPublishing 
    ? SPContext.Current.FormContext.FormMode != SPControlMode.Display 
    : (wpDMode.Equals("Edit") || wpDMode.Equals("Design")); 

तो आप बस अपनी शर्तों के लिए isEditing देख सकते हैं।

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