2012-08-16 17 views
5

में दस्तावेज़ के लिए संपादन लिंक बनाएं मेरे पास एक दस्तावेज़ दस्तावेज़ संग्रहीत शेयरपॉइंट में एक दस्तावेज़ लाइब्रेरी है।शेयरपॉइंट

यदि मैं दस्तावेज़ के लिंक पर क्लिक करता हूं तो मुझे "आप इस फ़ाइल को केवल पढ़ने या संपादित करने आदि में खोलना चाहते हैं" के साथ एक संवाद बॉक्स प्राप्त करते हैं और इसे संपादन मोड में खोल सकते हैं, इसे बदल सकते हैं, इसे सीधे शब्दों में सहेज सकते हैं दस्तावेज़ लाइब्रेरी में परिवर्तन सहेजे गए हैं।

दस्तावेज़ लाइब्रेरी में फ़ाइल के लिए लिंक इस तरह दिखता है:

<a onfocus="OnLink(this)" 
    href="/test/DocLib2/wordtest.docx" 
    onmousedown="return VerifyHref(this,event,'1','SharePoint.OpenDocuments','')"  
    onclick="return DispEx(this,event,'TRUE','FALSE','FALSE', 
      'SharePoint.OpenDocuments.3','1', 'SharePoint.OpenDocuments', 
      '','','','1','0','0','0x7fffffffffffffff','','')" 
>wordtest</a> 

कैसे मैं कहाँ फ़ाइल और दस्तावेज़ लाइब्रेरी के नाम है मैं अपने खुद के वेब भाग में इस लिंक बना सकता हूँ? उपर्युक्त कोड की प्रतिलिपि के बिना, यह एक अच्छा विचार नहीं होगा ...

क्या यह प्राप्त करने के लिए कुछ "आधिकारिक" विधि है?

+0

किसने इसे वोट दिया? क्यूं कर? – Marc

उत्तर

10

दुर्भाग्य से ऐसा लगता है कि एक बेहतर विकल्प नहीं है। लेकिन कम से कम आप यह समझ सकते हैं कि फ़ंक्शन परिभाषा क्या है। DispEx फ़ंक्शन कोर.जेएस फ़ाइल में परिभाषित किया गया है (लेकिन core.debug.js में पढ़ना आसान है)। दोनों 14 \ टेम्पलेट्स \ लेआउट \ 1033 निर्देशिका में हैं।

function DispEx(ele, objEvent, fTransformServiceOn, fShouldTransformExtension, 
    fTransformHandleUrl, strHtmlTrProgId, iDefaultItemOpen, strProgId, strHtmlType, 
    strServerFileRedirect, strCheckoutUser, strCurrentUser, strRequireCheckout, 
    strCheckedoutTolocal, strPermmask) 

यहां उनका अर्थ पर मेरा अनुमान है:

यहाँ समारोह परिभाषा है। [Obj] तत्व

  • objEvent - - [obj] घटना वस्तु
  • fTransformServiceOn - [bool] (अज्ञात कार्यक्षमता) चूक

    • हाथी: कृपया कोई गलती या चूक को दूर करने के टिप्पणी जोड़ने के लिए स्वतंत्र महसूस यह सच है
    • fShouldTransformExtension के लिए - [स्ट्रिंग] ActiveX के नाम - झूठी
    • strHtmlTrProgId करने के लिए [bool] (अज्ञात कार्यक्षमता) चूक - [bool] (अज्ञात कार्यक्षमता) झूठी
    • fTransformHandleUrl को चूक SharePoint.OpenDocuments पर डिफ़ॉल्ट लोड करने का प्रयास करने के लिए नियंत्रण करें।3
    • iDefaultItemOpen - [int] डिफ़ॉल्ट का सूचक संपादित करें या 1
    • strProgId को चूक पढ़ने के लिए - [स्ट्रिंग] ActiveX नियंत्रण
    • strHtmlType [स्ट्रिंग] (अज्ञात कार्यक्षमता) चूक के नाम खाली करने के लिए
    • strServerFileRedirect - [स्ट्रिंग] (अज्ञात कार्यक्षमता)
    • strCheckoutUser [स्ट्रिंग] उपयोगकर्ता जो दस्तावेज़
    • strCurrentUser की जाँच की है की आईडी - [स्ट्रिंग] वर्तमान उपयोगकर्ता के आईडी
    • strRequireCheckout - [स्ट्रिंग] इंडिक क्या एक चेकआउट
    • strCheckedoutTolocal मजबूर करने के लिए ator - [स्ट्रिंग] कि क्या स्थानीय ड्राफ़्ट फ़ोल्डर का उपयोग करने का सूचक
    • strPermmask - [स्ट्रिंग] अनुमतियां वर्तमान उपयोगकर्ता चूक के लिए मुखौटा

    0x7fffffffffffffff को स्पष्ट रूप से कुछ हैं बुलियन मूल्यों का प्रतिनिधित्व करने के लिए तारों और पूर्णांक का उपयोग करने के मामले में असंगतताएं। यह भी अजीब बात है कि आपके कोड में 17 पैरामीटर हैं लेकिन मुझे केवल 15 पैरामीटर के साथ फ़ंक्शन परिभाषा मिल सकती है, इसलिए मुझे यकीन नहीं है कि पिछले दो खाली तार क्या हैं। उनमें से कुछ जावास्क्रिप्ट की प्रकृति है, लेकिन यह माइक्रोसॉफ्ट के हिस्से पर भी मैला दिखता है।

    यह वास्तव में प्रश्न का उत्तर नहीं देता है, उम्मीद है कि यह आपको या किसी और की मदद करता है।

  • +0

    +1 और बहुत बहुत धन्यवाद, मैंने आपका उत्तर स्वीकार कर लिया है क्योंकि यह मेरे से बेहतर है। जब तक कोई भी * असली * उत्तर के साथ आता है;) – Marc

    +0

    फ़ंक्शन तर्क स्पष्टीकरण के लिए धन्यवाद –

    0

    मुझे याद नहीं है कि जावास्क्रिप्ट COM के साथ ऐसा करने की आधिकारिक क्षमता है, लेकिन आप समान लिंक उत्पन्न करने के लिए एएसपी.NET हाइपरलिंक नियंत्रण का उपयोग कर सकते हैं। लेआउट

    <asp:HyperLink ID="EditHl" runat="server" Text="Edit document"/> 
    

    में डाल उदाहरण के लिए और कोड-पीछे कुछ में की तरह

    EditHl.Attributes["attribute name"] = "attribute value"; 
    

    सिर्फ OOTB लिंक से एक ही मूल्यों का उपयोग, लेकिन बदल

    /परीक्षण/DocLib2/wordtest। docx

    आपके दस्तावेज़ के यूआरएल में।

    +0

    आपके उत्तर के लिए धन्यवाद लेकिन मुझे पता है कि हाइपरलिंक नियंत्रण का उपयोग कैसे करें और कुछ विशेषताओं को जोड़ें। लेकिन यह सवाल नहीं था क्योंकि मैं ** ** भयानक 'रिटर्न डिस्पैक्स (यह, घटना,' सत्य ',' गलत ',' गलत ',' SharePoint.OpenDocuments.3 'की प्रतिलिपि बनाना चाहता हूं, '1', 'SharePoint.OpenDocuments', '', '', '', '1', '0', '0', '0x7fffffffffffffff', '', '') 'कोड' जैसा कि मुझे नहीं पता कि कौन सा पैरामीटर क्या कुछ एसपी विधि उत्पन्न करता है और क्या बेहतर होगा। – Marc

    1

    मैं अपने लिंक टैग के लिए इस कोड

    return DispEx(this,event,'TRUE','FALSE','FALSE', 
    'SharePoint.OpenDocuments.3','1', 'SharePoint.OpenDocuments','','','', 
    '1','0','0','0x7fffffffffffffff','','') 
    

    जोड़ने क्योंकि मैं एक बेहतर समाधान खोजने के लिए सक्षम नहीं था के साथ खत्म।

    यदि कोई है, तो कृपया मुझे बताएं।

    +0

    कृपया मेरे उत्तर को कम से कम वोट दें क्योंकि आपने जैसा सुझाव दिया था वैसा ही किया। –

    1

    चाड श्रोएडर ने सी # में जावास्क्रिप्ट फ़ंक्शन कॉल का निर्माण करने के तरीके पर एक ब्लॉग पोस्ट किया। कुछ सेटिंग्स को ध्यान में रखते हुए, जैसे बल चेकआउट और उदाहरण के लिए ब्राउज़र या क्लाइंट में खोलें।

    private string GetFileViewScript(SPFile file) 
        { 
         string text = SPUtility.MapToControl(SPContext.Current.Web, file.Name, string.Empty); 
         string text2 = (file.Item.ParentList.DefaultItemOpen == DefaultItemOpen.Browser) ? "1" : "0"; 
         SPFieldLookupValue sPFieldLookupValue = file.Item["CheckedOutUserId"] as SPFieldLookupValue; 
         string scriptLiteralToEncode = (sPFieldLookupValue == null) ? string.Empty : sPFieldLookupValue.LookupValue; 
         string text3 = (SPContext.Current.Web.CurrentUser != null) ? SPContext.Current.Web.CurrentUser.ID.ToString(CultureInfo.InvariantCulture) : string.Empty; 
         string text4 = file.Item.ParentList.ForceCheckout ? "1" : "0"; 
    
         return string.Format(CultureInfo.InvariantCulture, "return DispEx(this,event,'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}')", new object[] 
         { 
          "TRUE", 
          "FALSE", 
          "FALSE", 
          text, 
          text2, 
          text, 
          string.Empty, 
          string.Empty, 
          SPHttpUtility.EcmaScriptStringLiteralEncode(scriptLiteralToEncode), 
          text3, 
          text4, 
          (string)file.Item["IsCheckedoutToLocal"], 
          (string)file.Item["PermMask"] 
         }); 
        } 
    

    Using DispEx in a link to a SharePoint document

    0

    DispEx क्रोम में काम नहीं करता जब तक कि लिंक एक div कि एप्लिकेशन कहा जाता है एक विशेषता में दस्तावेज़ प्रकार शामिल हैं के भीतर है: या तो आप में लपेट की जरूरत

    <div class="ms-vb itx" ctxname="ctx19" id="2" app="ms-word"> 
        <a onfocus="OnLink(this)" 
         href="/test/DocLib2/wordtest.docx" 
         onmousedown="return VerifyHref(this,event,'1','SharePoint.OpenDocuments','')"  
         onclick="return DispEx(this,event,'TRUE','FALSE','FALSE', 
          'SharePoint.OpenDocuments.3','1', 'SharePoint.OpenDocuments', 
          '','','','1','0','0','0x7fffffffffffffff','','')">wordtest</a> 
        <span class="ms-newdocument-iconouter"> 
         <img class="ms-newdocument-icon" src="/_layouts/15/images/spcommon.png?rev=23" alt="new" title="new"> 
        </span>   
    </div> 
    

    ऐसा div, और फ़ाइल को खोलने के लिए सही एप्लिकेशन डालना सुनिश्चित करें, या फ़ाइल एक्सटेंशन को देखकर अपनी खुद की सूची बनाएं:

    $('.test_links').click(function(e) { 
        e.preventDefault(); 
        if (!!window.chrome) { 
         var extenstion = this.href.substr(this.href.lastIndexOf('.') + 1); 
         var prefix = ''; 
         switch (extenstion) { 
          case 'doc': 
          case 'docx': 
           prefix = 'ms-word:ofv|u|'; 
           break; 
          case 'xls': 
          case 'xlsx': 
           prefix = 'ms-excel:ofv|u|'; 
           break; 
         } 
         window.location.href = prefix + this.href; 
        } else { 
         DispEx(this, e, 'TRUE', 'FALSE', 'FALSE', 'SharePoint.OpenDocuments.3', '0', 'SharePoint.OpenDocuments', '', '', '', _spPageContextInfo.userId + '', '0', '0', '0x7fffffffffffffff'); 
        } 
    }); 
    
    संबंधित मुद्दे