2012-01-05 24 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

相關問題