我的表单上有一个子网格,我使用javascript分配动态生成的fetchxml查询。当用户单击子网格的“弹出”按钮时,查询将丢失,并显示该实体的默认视图。
用户需要能够执行多选和批量编辑。据我所知,CRM 2013中的子网格无法实现这一点。有没有办法在弹出时保留查询?
答案 0 :(得分:1)
没有支持的方式与弹出的网格进行交互。如果您开始深入研究客户端应用程序代码,您可能会找到新窗口的挂钩,但这样做将不受支持,可能会中断,我不会推荐它。
在重新阅读您的用户需要使用弹出的网格进行批量修改之前,我建议完全隐藏实体子网格上的弹出按钮。
在这种情况下,您最好的选择是放弃JS并转移到针对子实体的RetrieveMultiple插件。通常应避免使用RetrieveMultiple插件,但从您的情况来看,它是您唯一的选择。
而且,为了彻底,您是否肯定需要动态获取子网格?有没有什么方法可以提出一个足以满足您要求的视图,即使它并不完美?
<强>更新强> 根据您在评论中提供的其他信息,我只能想到两个选项:
您的自定义Web应用程序采用用户的标准,为用户创建个人视图(entity:userquery)并将其保存到数据库,然后表单上的JS将网格设置为该视图。
你可以这样说:
document.getElementById("someGridId").control.SetParameter("viewtype", "4230"); // 4230 is the objecttypecode for userquery
document.getElementById("someGridId").control.SetParameter("viewid", "{11310965-0306-E611-80E5-3863BB36DD08}");
实际上这样做会使弹出的网格加载个人视图,但在我的测试中,如果你尝试刷新网格,那么网格就会被打乱。
这种方法有明显的缺点:1)你必须想出一种方法来清理生成的个人视图2)网格可能在刷新时中断3)它不受支持并且可能在更新时中断。
我想还是值得考虑的。
答案 1 :(得分:1)
更支持的方式而不是使用不受支持的getElementById是将插件挂钩到多个实体检索并在那里修改查询
克里斯