在 Dynamics 2011 中调用对话框并将多个记录 ID 传递给它

2022-01-15 00:00:00 dialog javascript dynamics-crm-2011

我想让用户从联系人实体中选择一个或多个联系人,然后启动一个接受记录 ID 的对话框.这个想法是为联系人添加一些自定义配置.

I want to allow the user to select one or many contacts from the contact entity, and then launch a dialog that accepts the record IDs. The idea is to add some custom configuration to the contacts.

我目前在启动对话框的功能区按钮上有一个自定义操作,但它只接受一个记录 ID.我可以访问所选记录 ID 的列表,这不是问题,它使用 JavaScript 将列表传递给对话框.

I've currently got a custom action on a ribbon button that launches a dialog, but it only accepts one record Id. I can get access to the list of selected record Ids, thatisn't the problem, it is passing a list to the dialog using JavaScript.

我似乎在 SDK 或代码片段中找不到任何东西.我找到的最接近的东西是这样的:

I can't seem to find anything in the SDK or code snippets. The nearest thing I found was this:

http://crmmongrel.blogspot.com/2011/06/launch-dialog-from-ribbon-button-in-crm.html

有人知道这是否可能吗?我知道开箱即用的发送直接电子邮件允许将电子邮件发送到选定的项目,所以我需要类似的东西.

Anyone know if this is possible? I know the out of the box Send Direct E-Mail allows an email to be sent to the selected items, so I need something similar.

我应该使用对话框还是其他东西?

Should I be using dialogs or something else?

以下是单击功能区按钮时调用的 javascript 代码片段:

Here is a code snippet of the javascript that is called on the click of the ribbon button:

function LaunchModalDialog(SelectedControlSelectedItemReferences,dialogID, typeName)
{

// Get selected objects
var allItems = new Array
var allItems = SelectedControlSelectedItemReferences

// Just get first item for now as dialog only seems to accept one ID
var personId = allItems[0].Id;
personId = personId.replace(/{/g, "");
personId = personId.replace(/}/g, "");

// Load modal
var serverUri = Mscrm.CrmUri.create('/cs/dialog/rundialog.aspx');
var mypath = serverUri + '?DialogID={' + dialogID + '}&EntityName=' + typeName + '&ObjectId={' +personId + '}';
mypath = encodeURI(mypath);

// First item from selected contacts only
window.showModalDialog(mypath);

// Reload form.
window.location.reload(true);
}

推荐答案

您需要在功能区中为该按钮指定 SelectedControlAllItemIds 参数.这是一个描述它的链接:

You'll need to specify the SelectedControlAllItemIds parameter in your Ribbon for that button. Here is a link that describes it:

http://social.microsoft.com/Forums/en/crm/thread/79f959ac-0846-472f-bff1-4f5afe692a56

--编辑--

对不起,我误解了 - 你的意思是启动一个实际的 CRM 对话框,而不仅仅是一个普通的 HTML 弹出对话框窗口.

I'm sorry, I misunderstood - you meant launch an actual CRM Dialog, not just a normal HTML pop-up dialog window.

根据设计,CRM 对话框不能用于多条记录,因此您将无法为此使用它们.

CRM Dialogs can't be used on multiple records by design, so you aren't going to be able to use them for this.

但是,您应该能够创建一个可以从功能区启动的 HTML Web 资源文件,并传入 SelectedControlAllItemIds 参数.然后,该 HTML Web 资源将包含一些 javascript,这些 javascript 将使用 REST 端点更新所选联系人(有关更多信息,请参阅 SDK).

However, you should be able to create an HTML web resource file that you can launch from the Ribbon, passing in the SelectedControlAllItemIds parameter. That HTML web resource would then have some javascript that would update the selected contacts using the REST endpoints (see the SDK for more information).

希望有帮助!

相关文章