我的表单上有一个子网格,我使用 javascript 分配了一个动态生成的 fetchxml 查询。当用户单击子网格的“弹出”按钮时,查询丢失并显示该实体的默认视图。
用户需要能够执行多选和批量编辑。据我所知,这对于 CRM 2013 以上的子网格是不可能的。弹出查询时有没有办法保留查询?
我的表单上有一个子网格,我使用 javascript 分配了一个动态生成的 fetchxml 查询。当用户单击子网格的“弹出”按钮时,查询丢失并显示该实体的默认视图。
用户需要能够执行多选和批量编辑。据我所知,这对于 CRM 2013 以上的子网格是不可能的。弹出查询时有没有办法保留查询?
一种更受支持的方法而不是使用不受支持的 getElementById 是将插件挂钩以多次检索实体并在那里修改查询
克里斯
不支持与弹出的网格交互的方式。如果您开始深入研究客户端应用程序代码,您可能会找到新窗口的挂钩,但这样做是不受支持的,可能会中断,我不推荐这样做。
我将建议在重新阅读您的用户需要使用弹出的网格进行批量编辑之前完全隐藏实体子网格上的弹出按钮。
在这种情况下,您最好的选择是放弃 JS 并移动到针对子实体的 RetrieveMultiple 插件。通常应避免使用 RetrieveMultiple 插件,但从您的情况来看,这是您唯一的选择。
而且,为了彻底一点,您确定需要动态获取子网格吗?有没有什么方法可以让你想出一个足够接近你要求的视图,即使它并不完美?
更新: 根据您在评论中提供的其他信息,我只能想到两个选项:
您的自定义 Web 应用程序采用用户的标准,为用户创建个人视图(实体: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)它不受支持并且可能会在更新时中断。
我想仍然值得考虑。