2012-01-05 23 views
1

我正在尝试向活动网格功能区添加一个按钮以打开一个模式窗口,该窗口显示地图上的所有活动latlng数据。在Dynamics CRM 2011中通过POST将变量从功能区按钮传递到模态窗口

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

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

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

回答

0

而不是使用HTML webresource的,你可以可以调用javascript函数从色带上没有的参数。这里面的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(); 
+0

的parent.document方法似乎并没有工作,很遗憾,但我可以使用JavaScript的Web资源,并使用,然后使通过window.dialogArguments可用它传递数据。 – jim0thy 2012-01-06 12:14:52

+0

它实际上看起来像crm默认发送当前窗口作为参数。通过直接在html webresource中使用window.dialogArguments.window,我得到了不使用javascriptresource或的选定项目。我已经用新解决方案更新了我的原始答案。 – Svendberg 2012-01-07 17:35:51

相关问题