通过javascript检索网格中的fetchxml

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过javascript检索网格中的fetchxml相关的知识,希望对你有一定的参考价值。

这似乎有点奇怪的要求所以我会尝试提供一些背景知识。我的CRM上有一个功能,要求用户应该能够过滤视图,然后保存结果记录,以便单独的过程可以接收它们并定期处理它们,例如日常。

现在这里是捕获,他们希望这个过程在处理数据之前重新查询数据,所以基本上应该保存的是查询或过滤器而不是视图中的数据。

之前已经编写了一些javascript代码,可以像这样在子网格上动态设置fetchxml

Subgrid.getGrid().setParameter("fetchXml", fetchxml);

我虽然应该可以直接检索网格中的fetchxml

Subgrid.getGrid().getParameter("fetchXml");

然而,这不起作用,我似乎无法找到任何文件或任何可以指向我正确方向的东西。我使用开发人员工具来检查Mscrm.XrmControlGridWrapper的属性,但我找不到任何有用的东西..

如果有人知道如何使用javascript检索为子网格提供动力的fetchxml,那将会非常有用吗?

编辑

我刚刚发现我能做到这一点

Subgrid.getGrid().getFilter().$3_1.GetParameter("fetchXml")

而且这正是我想要的,但这只是尖叫的hacky和不支持。 $3_1有一种[object (Mscrm.TurboGridControl)]

有没有办法以受支持的方式访问此对象?

答案

关于这一点的一些想法:

  1. 您可以检索SystemForm记录,然后解析FormXml以获取ViewId。然后,您可以从SavedQuery实体中检索视图,并获取FetchXML。以下是FormXml中的ViewId示例:enter image description here
  2. 您可以向实体添加布尔字段,当用户保存他们想要处理的集合时,您可以标记这些记录以供稍后批处理过程检索。
  3. 当用户识别出他们想要处理的集合时,您可以使用带有Guid列表的“in”运算符临时创建一个带有FetchXML的视图(SystemQuery或UserQuery),以识别要处理的确切记录。使用视图检索和处理记录后,批处理可以删除视图。我可能会习惯使用这种方法达到几十条记录。
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="account">
    <filter type="and">
      <condition attribute="accountid" operator="in">
        <value>A1CC84F2-BE0D-E711-8104-00155D6FD705</value>
        <value>A3CC84F2-BE0D-E711-8104-00155D6FD705</value>
        <value>A5CC84F2-BE0D-E711-8104-00155D6FD705</value>
      </condition>
    </filter>
  </entity>
</fetch>
  1. 如果要通过在要处理的记录上设置布尔标志来避免更改已修改的信息,可以创建N:N链接实体并将所选记录关联到该实体的实例。
另一答案

你可以做:

  • 既然你有fetchxml以前设置为SubGrid的过滤器,为什么不直接存储这个变量。您可以将此变量保存在localStorage中,甚至可以保存在为此目的创建的虚拟字段中。并在所需的过程中使用它。
  • 顺便说一句,获得fetchXml的支持方式:Xrm.Page.getControl(gridControlName).getFetchXml()

希望这可以帮助...

以上是关于通过javascript检索网格中的fetchxml的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ext.net 网格面板内的组合框中检索和设置值

从 gridsearchCV 中的 RFECV 检索选定的特征

通过在 JavaScript 中检索它们的值来自动选择复选框 [重复]

JavaScript、asp.net 和 Sql Server

在Javascript中从Kendo网格中的列名获取列索引

如何从 Kendo 网格中的 ClientTemplate 调用 javascript 方法?