在 Microsoft CRM 的新 window 中弹出一个网络资源

Pop-up a webresource in new window in Microsoft CRM

我正在为 Microsoft CRM 创建计时器应用程序。我已经将该应用程序创建为 Web 资源并且它可以工作。它使用 CRM 的 XRM 客户端代码来完成这项工作。它需要更新 CRM 中自定义实体中的数据。但是,计时器应用程序的要求已更改,现在即使用户离开页面,它也需要保持活动状态。因此它需要在事件表单上打开,但用户可以在 CRM 中的任何其他地方导航并且它需要保持打开状态并主动跟踪时间。

我的第一个想法是在单击按钮时将 Web 资源弹出到一个新的单独的 window 中,并使其独立 运行。但是,如果代码嵌入到表单中的 Web 资源中,如果他们导航离开,代码不会被卸载吗?

我使用 Microsoft CRM 才几个月,所以我可能不了解所有选项。

所以具体问题:

是否可以在新的 window 中打开一个独立的网络资源,当他们离开表单并仍然可以访问 XRM 客户端库时,该资源保持活动状态? (如果是,怎么做?)

如果答案是否定的,那么我很想听听其他想法。

谢谢。

为了解决这个问题,我使用了 2 个网络资源。一个在表单上有一个自定义按钮来收集所需的案例信息并将其发送到第二个网络资源:

            // Collect fields we know exist at this point, because they are required fields on the case
            var caseId = window.parent.Xrm.Page.data.entity.getId();

            if (caseId != '') {
                var caseName = window.parent.Xrm.Page.data.entity.getPrimaryAttributeValue();
                var accountId = window.parent.Xrm.Page.getAttribute("customerid").getValue()[0].id;
                var accountName = window.parent.Xrm.Page.getAttribute("customerid").getValue()[0].name;

                // package paramters to pass to timer web resource
                var customParameters = encodeURIComponent("caseid=" + caseId + "&casename=" + caseName + "&accountid=" + accountId + "&accountname=" + accountName);
                // Open web resource
                window.parent.Xrm.Utility.openWebResource("sp_casetimer", customParameters, 500, 200);

            } else {
                // Error message would go here - case must be saved first.
            }

sp_casetimer 网络资源然后解析变量并将其存储到隐藏字段中,并可以独立运行。然后我使用 /XRMServices/2011/OrganizationData.svc 对我的自定义案例时间实体执行 CRUD 操作。