2

我正在尝试创建一个新的数据集类型 Powerapps 组件 (PCF)。目前,我使用它来显示 Microsoft Dynamics CRM 中实体中可用记录的视图。

我希望在单击网格列标题时使视图自行排序(以与默认 CRM 网格视图类似的方式)。我试图弄清楚如何对数据集应用排序,以便我可以按照 dataset.refresh() 函数的文档所示刷新它:

根据过滤器、排序、链接、新列刷新数据集。新数据将在另一个“updateView”周期中被推送到控制。

数据集对象确实具有“排序”属性,但更改其值然后刷新数据集似乎没有任何效果。刷新后,排序属性恢复为我更改之前的值。

简而言之,网格标题的单击处理程序执行类似于以下代码的操作。刷新完成,我的 updateView() 函数按预期调用,但未应用排序。

dataset.sorting = [{name: 'createdon', sortDirection: 1}];
dataset.refresh();

任何有关使数据集排序工作的帮助将不胜感激。

4

2 回答 2

1

我最近一直在尝试 PowerApps 组件框架,我可以确认以下代码将无法正常工作:

dataSet.sorting = [ { name: "columnName", sortDirection: 0 } ];

但是,我设法让这个为我工作:

dataSet.sorting.pop(); // you may want to clean up the whole collection
dataSet.sorting.push({ name: "columnName", sortDirection: 0 });

我还没有真正弄清楚这种行为的原因。排序数组可以在后台实现为某种形式的可观察集合

我希望这将指导您找到有效的解决方案。

于 2020-03-29T09:48:43.147 回答
1

这里的文档非常糟糕,但这是我将一些不同的信息放在一起的最佳猜测。

TLDR:我认为需要在.sorting属性上调用某种额外的方法,但我不知道它被调用了什么。也许是这样的:

dataset.sorting.setSorting({name: 'createdon', sortDirection: 1});

我认为您将不得不尝试一堆可能的方法名称并查看哪些有效。

背景和链接:

我能找到的唯一参考dataset.sorting来自这里:

在此画布应用预览版中,仅支持一组有限的过滤和 sortStatus 方法。筛选和排序可以应用于除 GUID 之外的主要类型列上的数据集。过滤和排序的应用方式与模型驱动应用程序相同。要使用过滤和排序信息检索数据集,请调用 和 中的方法context.parameters.[dataset_property_name].filteringcontext.parameters.[dataset_property_name].sorting然后调用context.parameters.[dataset_property_name].refresh().

所以看起来.filtering.sorting属性的处理方式类似,并且它们附加了一些方法,并且仅支持一些方法。这是他们所能做到的最模糊的......

我确实找到了一个如何.filtering使用的例子:

    _context.parameters.sampleDataset.filtering.setFilter({
      conditions: conditionArray,
      filterOperator: 1, // Or
    });

文档中有一个简短的参考.setFilter(),以及FilterExpression

有一个SortStatus参考,但它没有明确调用任何相应的方法。这可能是公共预览版中尚不支持的功能,或者缺少文档并且您需要调用的方法的名称和语法.sorting尚未记录。

于 2020-03-10T14:18:19.030 回答