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

时间:2012-01-05 17:29:08

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

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

我对少数活动有效,但是一旦选定的数字变得太大,CRM就会在打开模态窗口时遇到问题。

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

有没有办法使用POST而不是GET将SelectedControlSelectedItemIds传递给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>

1 个答案:

答案 0 :(得分:0)

您可以使用功能区中没有参数调用javascript函数,而不是使用html webresource。在这个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();