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

在Dynamics CRM 2011中通过POST将变量从功能区按钮传递到模式窗口,post,dynamics-crm,dynamics-crm-2011,Post,Dynamics Crm,Dynamics Crm 2011,我正在尝试向“活动”网格功能区添加一个按钮,以打开一个模式窗口,该窗口显示地图上具有latlng数据的所有活动 对于少量的活动,我可以这样做,但一旦选定的数量增长过大,CRM在打开模式窗口时就会出现问题 我目前的理论是,这是因为参数字符串太长,无法通过GET方法传递 是否有一种方法可以使用POST而不是GET将SelectedControlSelectedItemId传递给web资源?我在TN文档中看不到任何内容,但我希望有人能找到一种方法 * 下面是我目前掌握的一段代码: <Comman

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

对于少量的活动,我可以这样做,但一旦选定的数量增长过大,CRM在打开模式窗口时就会出现问题

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

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

*

下面是我目前掌握的一段代码:

<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 Web资源。在该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在默认情况下似乎将当前窗口作为参数发送。通过在HTMLWebResource中直接使用window.dialogArguments.window,我获得了所选项目,而不使用javascriptresource或。我已经用新的解决方案更新了我的原始答案。