【问题标题】:Passing variables from a ribbon button to a modal window via POST in Dynamics CRM 2011通过 Dynamics CRM 2011 中的 POST 将变量从功能区按钮传递到模式窗口
【发布时间】:2012-01-08 01:38:22
【问题描述】:

我正在尝试向“活动”网格功能区添加一个按钮,以打开一个模式窗口,该窗口显示地图上带有 latlng 数据的所有活动。

对于少量活动,我可以正常工作,但是一旦所选数量增长过大,CRM 就会在打开模式窗口时出现问题。

我目前的理论是,这是因为参数字符串太长而无法通过 GET 方法传递。

有没有办法使用 POST 而不是 GET 将 SelectedControlSelectedItemIds 传递给 Web 资源?我在 TN docs* 中看不到任何内容,但我希望有人可能找到了方法。

*http://technet.microsoft.com/en-us/library/gg309332.aspx

这是我目前拥有的代码的 sn-p:

<CommandDefinition Id="Mscrm.Isv.activitypointer.HomepageGrid.Group0.Control0">
  <EnableRules>
    <EnableRule Id="Mscrm.Enabled" />
  </EnableRules>
  <DisplayRules />
  <Actions>
    <Url Address="$webresource:as_cam_mapsa" WinMode="1" PassParams="true" WinParams="dialogHeight: 800px; dialogWidth: 1000px">
      <CrmParameter Name="data" Value="SelectedControlSelectedItemIds" />
    </Url>
  </Actions>
</CommandDefinition>

【问题讨论】:

    标签: post dynamics-crm dynamics-crm-2011


    【解决方案1】:

    您可以从功能区调用不带参数的 javascript 函数,而不是使用 html 网络资源。在这个 javascript 中,您可以使用类似这样的方法来获取选定的 id:

    document.getElementById("crmGrid").control.get_selectedIds();  
    

    现在您可以选择是否要使用 javascript / jQuery 或其他框架来构建整个对话框 - 或者您可以在 javascript 中使用 showModalDialog 来获得与 crm 使用的相同的对话框。无论如何,您现在对参数的发送方式有了更多的控制。

    您还应该能够在您的 html webresources javascript 中使用上面的代码,方法是从默认发送到模态对话框的 dialogArguments 获取父窗口。

     window.dialogArguments.window.document.getElementById("crmGrid").control.get_selectedIds();  
    

    【讨论】:

    • 不幸的是,parent.document 方法似乎不起作用,但我能够使用 javascript Web 资源并使用 传递数据,然后通过 window.dialogArguments 使其可用.
    • 实际上看起来 crm 默认将当前窗口作为参数发送。通过直接在 html webresource 中使用 window.dialogArguments.window,我获得了选定的项目,而无需使用 javascriptresource 或 。我已经用新的解决方案更新了我的原始答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2014-08-21
    相关资源
    最近更新 更多