【问题标题】:Dynamics CRM : JavaScript onClick Function for Date changeDynamics CRM:用于日期更改的 JavaScript onClick 函数
【发布时间】:2019-03-25 20:25:04
【问题描述】:

我对 JavaScript 还是很陌生,所以我可以在这个要求上寻求一些帮助。

我在表单顶部设置了两个 HTML 网络资源按钮(new_dayPagePreviousButton 和 new_dayPageNextButton),它们之间是一个日历字段(new_daypagedate)。我们在页面上有配置为根据日历字段中选择的日期返回结果的子网格。

要求是每当用户单击“前一天”或“后一天”按钮时,都会在日历字段中添加或减去一天。

【问题讨论】:

    标签: javascript dynamics-crm crm microsoft-dynamics


    【解决方案1】:

    我假设字段 new_daypagedate 的数据类型为 Dynamics CRM 的 日期和时间new_dayPagePreviousButtonnew_dayPageNextButton 只是 HTML 按钮,当用户点击CRM的日历字段中的任何按钮都应该发生变化。

    正如你提到的,你已经创建了网络资源,所以我假设你已经添加了两个按钮,并且在按钮的点击事件中它应该对 new_daypagedate 字段做出反应。

    这里我为你创建了一个网络资源,请尝试在你的实例中应用下面的javascript,

    function AddDays(arg) {
        var d=window.parent.Xrm.Page.data.entity.attributes.get("new_daypagedate").getValue();
        d.setDate(d.getDate() + arg);
        window.parent.Xrm.Page.data.entity.attributes.get("new_daypagedate").setValue(d);
    }
    

    可选的 HTML,

    <button type="button" id="new_dayPagePreviousButton" onclick="AddDays(-1)">Previous Day</button><br/>
    <button type="button" id="new_dayPageNextButton" onclick="AddDays(1)">Next Day</button>
    

    请注意,您需要使用相应按钮的 onClick 事件调用 javascript 函数。

    旁注:当您使用 Dynamics CRM 时,您需要访问您的 CRM 使用 Xrm.Page 属性的字段,您不能直接访问任何字段 或 HTML 标记,只需使用该字段的 id,您可以在 以上 Javascript。

    【讨论】:

    • 感谢 Sagar 的快速彻底的回复,非常感谢。我在这里学到了很多东西。
    • 我使用您在上面给出的 Jscript 在表单上创建了一个新的网络资源。然后,我编辑了 2 个现有的 HTML 网络资源,并将代码替换为您在上面慷慨提供的代码。但是,我确定我在这里遗漏了一些东西。按钮不会触发更改日期。
    • ibb.co/NyMN1d5 链接到我的表单属性的屏幕截图,如果有帮助的话。我假设我需要添加一个事件处理程序?
    • Pringle,如果你能添加你的用户界面的截图,那就太好了,这样我就可以理解你是如何添加网络资源的以及你到底想要做什么,因为就像我上面的 javascript 你没有'不需要处理任何事件处理程序。
    • 由于我还没有运行调试器,有点把我的头撞在桌子上。以下是单击其中一个按钮后控制台上显示的内容: Uncaught ReferenceError: AddDays is not defined at HTMLButtonElement.onclick (new_dayPageNextButton:1) onclick @ new_dayPageNextButton:1
    【解决方案2】:

    经过一些额外的研究,我修改了其中一个按钮的 HTML,以包含您在第一篇 Sagar 文章中提供的 JScript。现在内容如下;

    <html><head>
    <script type="text/jscript">
    function AddDays(arg) {
    var 
    d=window.parent.Xrm.Page.data.entity.attributes.get("new_daypagedate").getValue();
    d.setDate(d.getDate() + arg);
    window.parent.Xrm.Page.data.entity.attributes.get("new_daypagedate").setValue(d);
    }
    </script>
    
    <meta><style type="text/css">P { margin: 0; }</style><meta><style type="text/css">P { 
    margin: 0; }</style></head><body onfocusout="parent.setEmailRange();" 
    style="overflow-wrap: break-word;">
    <button type="button" id="new_dayPageNextButton" onclick="AddDays(1)">Next 
    Day</button>
    
    </body></html>
    

    发布后,按钮成功更改日期!但是,一旦更改日期,下面的子网格不会刷新以反映新日期。这是一个单独的问题,因此我将针对它发布一个单独的问题。

    Sagar,感谢您引导我完成这一切。你提供了非常丰富的信息。

    【讨论】:

    • 很高兴听到我的建议对您有用。如果您已经创建了有关子网格刷新的新问题,请分享该线程的链接,以便我可以将头转向该问题。
    • 我实际上通过将以下内容放入脚本中解决了这个问题; window.parent.Xrm.Page.data.entity.attributes.get("new_daypagedate").fireOnChange();现在,当我单击 Next Day 或 Previous Day 按钮时,子网格会刷新并填充正确的结果。再次感谢对 Sagar 的持续支持。我从中学到了很多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2018-11-02
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多