6

Word ドキュメントを保存する SharePoint にドキュメント ライブラリがあります。

ドキュメントへのリンクをクリックすると、「このファイルを読み取り専用または編集モードなどで開きたい」というダイアログ ボックスが表示され、編集モードで開いたり、変更したり、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>

ファイルとドキュメント ライブラリの名前がある自分の Web パーツにこのリンクを作成するにはどうすればよいですか? 上記のコードをコピーするだけでは、それは良い考えではありません...

これを達成するための「公式」の方法はありますか?

4

5 に答える 5

12

残念ながら、より良いオプションがあるようには見えません。しかし、少なくとも、関数定義が何であるかを理解することはできます。DispEx 関数は core.js ファイルで定義されています (ただし、core.debug.js の方が読みやすいです)。どちらも 14\Templates\Layouts\1033 ディレクトリにあります。

関数定義は次のとおりです。

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

これが私の推測です。誤りや脱落を修正するために、コメントを自由に追加してください。

  • ele - [obj] 要素
  • objEvent - [obj] イベント オブジェクト
  • fTransformServiceOn - [bool] (不明な機能) デフォルトは True
  • fShouldTransformExtension - [bool] (不明な機能) デフォルトは False
  • fTransformHandleUrl - [bool] (未知の機能) デフォルトは False
  • strHtmlTrProgId - [文字列] SharePoint.OpenDocuments.3 への既定値を読み込もうとする ActiveXControl の名前
  • iDefaultItemOpen - [int] デフォルトの Edit または Read のインジケータで、デフォルトは 1 です。
  • strProgId - [文字列] ActiveX コントロールの名前
  • strHtmlType [文字列] (不明な機能) デフォルトは空
  • strServerFileRedirect - [文字列] (不明な機能)
  • strCheckoutUser [string] ドキュメントをチェックアウトしたユーザーの ID
  • strCurrentUser - [文字列] 現在のユーザーの ID
  • strRequireCheckout - [文字列] チェックアウトを強制するかどうかを示すインジケーター
  • strCheckedoutTolocal - ローカルの下書きフォルダーを使用するかどうかの [文字列] インジケーター
  • strPermmask - [文字列] 現在のユーザーのアクセス許可マスクのデフォルトは 0x7ffffffffffffff です

ブール値を表すために文字列と整数を使用するという点では、明らかにいくつかの矛盾があります。コードに 17 個のパラメーターがあることも奇妙ですが、15 個のパラメーターを持つ関数定義しか見つけることができないため、最後の 2 つの空の文字列が何のためにあるのかわかりません。その中には JavaScript の性質によるものもありますが、Microsoft 側からすれば雑に見えるだけでもあります。

これは実際には質問に答えているわけではありません。うまくいけば、あなたや他の誰かに役立つでしょう。

于 2013-01-09T20:16:01.200 に答える
2

Chad Schroeder は、C# で JavaScript 関数呼び出しを作成する方法についてブログ投稿を行いました。たとえば、強制チェックアウトやブラウザまたはクライアントで開くなど、いくつかの設定を考慮してください。

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"]
        });
    }

SharePoint ドキュメントへのリンクで DispEx を使用する

于 2014-09-23T07:59:21.653 に答える
1

私はこのコードを追加することになります

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

より良い解決策を見つけることができなかったので、私のリンクタグに。

ある場合は、お知らせください。

于 2012-09-03T12:43:44.987 に答える
0

JavaScript COM でそれを行う公式の機能があるかどうかは覚えていませんが、ASP.NET HyperLink コントロールを使用して同様のリンクを生成できます。たとえば、レイアウトに入れる

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

そしてコードビハインドのようなもので

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

OOTB リンクから同じ値を使用するだけで、変更します

/test/DocLib2/wordtest.docx

ドキュメントの URL に。

于 2012-08-16T11:40:02.507 に答える