【问题标题】:Can I programatically refresh an Outlook entity view? (online 2013)我可以以编程方式刷新 Outlook 实体视图吗? (2013 年在线)
【发布时间】:2014-02-06 17:12:33
【问题描述】:

我们的设置是连接到 2013 在线实例的 Outlook 2010 + CRM 插件。

我在潜在客户网格功能区上有一些自定义功能区按钮,用于操作选定的潜在客户。在某些操作之后,我想告诉 Outlook 刷新当前视图,因为该操作已更新选定的潜在客户,因此它们不应再显示在当前视图中。

目前,我必须向用户解释视图会按自己的计划更新,如果他们希望立即发生,他们必须手动刷新视图(视图选项卡/刷新按钮)。毫不奇怪,我收到了很多关于此的投诉!

This 似乎暗示有一种以编程方式刷新视图的方法,但我不明白如何让它工作的细节。

Here 是一些带有手动刷新图片的信息。

这是我需要使用自定义按钮 JS 刷新的 Outlook 视图的图片:

【问题讨论】:

    标签: dynamics-crm-2011 dynamics-crm crm dynamics-crm-online


    【解决方案1】:

    视图可以在 2011 年以不受支持的方式刷新,因此此代码在 2013 年可能无法工作,并且可能会因某些更新汇总而中断。
    匿名函数必须在功能区按钮引用的库中;视图上没有事件或 Xrm 对象。
    我创建了一个新的隐藏功能区按钮(Ribbon Workbench 效果很好),它有一个引用包含此函数的 JavaScript 库的操作;该函数不需要调用 - 它在库加载时运行。

    var seconds = 30;
    /*  
     * @param {int} inSeconds: how often the view should refresh in seconds  
     * */ 
    (function (inSeconds) {     
        var interval = setInterval(function () {         
            document.getElementById("crmGrid").control.refresh();     
        }, inSeconds * 1000); 
    }(seconds));
    // The line to refresh the grid is not supported
    

    可以支持的方式是刷新表单上的子网格;如果您可以让用户从表单而不是视图中工作,您可以使用此受支持的代码并以上述方式调用它,或者更确切地说在 onload 事件上调用它:

    Xrm.Page.ui.controls.get("sub_grid_name").refresh();
    

    【讨论】:

    • 非常感谢。我可以从我的自定义按钮 JS 中调用不支持的方法,而不是在一段时间内刷新(不支持的方式),所以我只根据需要刷新吗?那应该有效,对吧?我需要在视图级别工作,因为用户经常需要对多个选定的记录应用相同的操作
    • 从按钮操作调用也可以。请在您尝试过后说明不受支持的代码是否在 2013 年有效。
    • 应该很快就会尝试并会更新。您能解释一下如何查找视图的 ID (crmGrid) 吗?如果它发生变化,我需要能够快速适应......
    • 我不知道,你可以使用浏览器的调试器尝试定位它。在 CRM 中使用 DOM 是不可靠的,在未来的更新汇总中可能不止名称会发生​​变化。
    • 我知道如何在浏览器客户端中找到 elementId,但它是 Outlook 客户端视图(在您进入表单之前没有浏览器)所以不确定它是如何工作的。
    猜你喜欢
    • 2012-11-01
    • 2011-05-06
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多