通过Dynamics CRM 2011中的POST将变量从功能区按钮传递到模式窗口



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

我有这个工作可以为少量的活动,但一旦选择的数量增长太大CRM有问题打开模式窗口。

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

有没有一种方法可以使用POST而不是GET将SelectedControlSelectedItemId传递到web资源?我在TN文档中看不到任何内容,但我希望有人能找到办法。

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

以下是我目前拥有的代码片段:

<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>

您可以从功能区调用不带参数的javascript函数,而不是使用html网络资源。在这个javascript中,你可以使用这样的东西来获取所选的ids:

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

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

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

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

最新更新