在 Dynamics CRM 2011 中通过 POST 将变量从功能区按钮传递到模式窗口
我正在尝试向“活动”网格功能区添加一个按钮,以打开一个模式窗口,该窗口在地图上显示带有 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>
I'm attempting to add a button to the Activities grid ribbon to open a modal window that shows all the activities with latlng data on a map.
I have this working ok for a small number of activities, but once the selected number grows too large CRM has problems opening the modal window.
My current theory is that this is because the parameter string is too long to be passed via the GET method.
Is there a way to pass the SelectedControlSelectedItemIds to the web resource using POST rather than GET? I can't see any in TN docs*, but I'm hoping someone might have found a way.
*http://technet.microsoft.com/en-us/library/gg309332.aspx
Here's a snippet of the code I have at the moment:
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以从功能区调用不带参数的 JavaScript 函数,而不是使用 html Web 资源。在此 javascript 中,您可以使用类似以下内容来获取选定的 id:
现在,您可以选择是否要使用 javascript / jQuery 或其他框架来构建整个对话框 - 或者您可以在 javascript 中使用 showModalDialog 来获取与 crm 相同的对话框用途。无论如何,您现在对参数的发送方式有了更多的控制。
您还应该能够通过从默认发送到模式对话框的dialogArguments 获取父窗口,在您的html webresources javascript 中使用上面的代码。
Instead of using a html webresource, you could could call a javascript function with no parameters from the ribbon. Inside this javascript you can use something like this to get the selected ids:
Now you can select if you want to use javascript / jQuery or another framework to build the whole dialog - or you can use showModalDialog in javascript to get the same dialog as crm uses. In any term you now have a litle bit more control on how the parameters are sendt.
You should also be able to use the code above inside your html webresources javascript by getting the parent window from dialogArguments that is sent by default to a modal dialog.