我一直在努力解决这个问题,希望社区中的某个人可以提供解决方案。
我有一个要求,即在 CRM 帐户表单上放置一个按钮,该按钮与 Sharepoint 文档库中的“使用资源管理器打开”按钮具有相同的逻辑。该逻辑是必需的,因为用户必须多次单击才能到达此按钮,并在 Windows 资源管理器中打开所需帐户的文件夹,它们是:
- 单击表单导航中的文档,打开 SP 集成
- 在 SP 视图中单击文档
- 点击图书馆
- 单击使用资源管理器打开按钮
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 运行控制台命令来映射文件夹。