在子对话框输入参数(摇滚)和需要相关记录的实体对话(硬地点)之间捕获

时间:2014-04-22 17:08:41

标签: dynamics-crm-2011

CRM 2013内部部署

您好,

首先,这个过程正在发挥作用,可以转向生产,但我宁愿选择一个更清晰的解决方案,而不是我所采用的解决方案。

我有自定义实体E,它有一个子网格,显示自定义实体Y的相关记录。

现在可能有时候用户想要更改,添加等相关的Y记录......但是他们没有看到他们正在看X的Y实体并且通过子网格看到Y.

所以我给了他们一个按钮,启动一个对话框,引导他们完成更改,这很好。

启动此对话框时会出现摇滚和硬盘。

单向是具有与实体X(X_Dialog)关联的“催化剂”对话框。此对话框调用与Y(Y_Dialog)关联的子对话框,并将X记录值传递给Y_Dialog。

麻烦在于,为了让我的X_Dialog“看到”Y_Dialog,我必须在X表格上有一个查找字段到Y ...更糟糕的是它必须有一个相关的记录。这迫使我创建一个“虚拟”Y记录并将其关联到每个X记录,以便可以从X_Dialog调用Y_dialog。


另一种方式是直接启动Y_Dialog,但Y_Dialog接受输入参数,我还没有读过任何可以做到这一点的事情......当然它会引发错误。

这是我喜欢的方式,因为X_Dialog没用,只能让用户点击下两次,所以我可以“启动”Y_Dialog。此外,我可以消除虚拟Y记录和查找关系。


有人认为我是我在启动对话框时传递了X记录ID。我可以获取该ID并将其发送到查找所述记录的代码,然后将所需的X记录值作为本地对话变量输出。

这个想法的一个难点是我不知道如何获取传递给对话框的ID值。我还没看过这是怎么做的。

FWIW如果它有帮助,那就是我用来启动对话框的代码:

function LaunchDialog(dialogID, typeName, SubGridName)
{
  var recordId = window.parent.Xrm.Page.data.entity.getId();

  var serverUri = window.parent.Mscrm.CrmUri.create('/cs/dialog/rundialog.aspx');

  window.showModalDialog(serverUri + '?DialogId=%7b' + dialogID + '%7d&EntityName=' + typeName + '&ObjectId=' + recordId, null, 'width=615,height=480,resizable=1,status=1,scrollbars=1');

  //refresh grid only
  window.parent.RefreshFulfillmentSubGrids(SubGridName);
}

非常感谢任何输入。

1 个答案:

答案 0 :(得分:0)

你的对话有多复杂?

如果它只是少数字段,您可以使用JCL之类的内容和自定义网络资源。然后,您可以从传入的GUID中获取字段,创建记录,最后在创建记录后刷新子网格。