0

我一直在努力解决这个问题,希望社区中的某个人可以提供解决方案。

我有一个要求,即在 CRM 帐户表单上放置一个按钮,该按钮与 Sharepoint 文档库中的“使用资源管理器打开”按钮具有相同的逻辑。该逻辑是必需的,因为用户必须多次单击才能到达此按钮,并在 Windows 资源管理器中打开所需帐户的文件夹,它们是:

  1. 单击表单导航中的文档,打开 SP 集成
  2. 在 SP 视图中单击文档
  3. 点击图书馆
  4. 单击使用资源管理器打开按钮

CRM 与 Sharepoint 集成,当文件夹在 Windows 资源管理器中打开时,它具有以下示例链接

http://{sharepoint}/CRM/7F9F72A1-4591-E011-AC6C-00155D773703/Documents/

其中 GUID 7F9F72A1-4591-E011-AC6C-00155D773703 是 CRM 中的帐户 ID。

根据我的研究,我发现实现此目的的 javascript 函数是 Sharepoint 中 sp.js 中的NavigateHttpFolder

从这个函数和这个关于 Web 文件夹行为的链接 我已经完成了以下函数。

var httpFolderDiv = document.createElement("SPAN");

function NavigateToFolder() {

    document.body.appendChild(httpFolderDiv);
    httpFolderDiv.onreadystatechange = NavigateToFolder;
    httpFolderDiv.id = "navDiv";
    httpFolderDiv.addBehavior("#default#httpFolder");
    if (httpFolderDiv.readyState == "complete") {
        httpFolderDiv.onreadystatechange = null;
        var link = "";
        var account = "";
        var accountid = "";
        var id = Xrm.Page.data.entity.getId().replace("{", "").replace("}", ""); 
        link = "http://{sharepoint}/CRM/" + id + "/Documents/";

        try {
             httpFolderDiv.navigateFrame(link, "_blank"); 
        } catch (c) {
            alert(c.toString());
        }

    }
}

此功能在 Windows 资源管理器中从 Sharepoint 打开文件夹,但如果之前仅从 Sharepoint 直接打开该文件夹,则会受到限制。我相信我在代码中缺少的逻辑是我没有像 sharepoint 那样映射文件夹。

我知道这个文件夹可以手动映射为网络驱动器,使用 Web 文件夹连接 WebDAV 服务器,但这对我来说不起作用,因为这必须在每个客户端上完成。

我如何通过从 SP 获取完整的逻辑来实现这一点,或者在使用上述函数打开文件夹之前从 javascript 运行控制台命令来映射文件夹。

4

1 回答 1

0

我知道已经有一段时间了,因为这已经发布了,但是我在寻找完全相同的问题时偶然发现了它。

以下是在 SharePoint 2013 中对我有用的内容:

<a href='#' onClick="javascript:CoreInvoke('NavigateHttpFolder', '[path to site]/[library name]/', '_blank');">
Click to open in Explorer
</a> 

它本质上与 SharePoints 自己的功能使用的功能相同。

于 2016-08-22T10:52:51.423 回答