Dynamics crm 对PowerApps组件(PCF)中的数据集应用排序

Dynamics crm 对PowerApps组件(PCF)中的数据集应用排序,dynamics-crm,powerapps,powerapps-component-framework,Dynamics Crm,Powerapps,Powerapps Component Framework,我正在尝试创建一个新的数据集类型Powerapps组件(PCF)。目前,我正在使用它显示Microsoft Dynamics CRM中实体中可用记录的视图 我希望在单击网格列标题时对视图本身进行排序(与默认CRM网格视图的排序方式类似)。我正在尝试找出如何对数据集应用排序,以便按照dataset文档的指示刷新数据集。refresh()函数: 根据过滤器、排序、链接、新列刷新数据集。 新数据将在另一个“updateView”周期中推送到控件 dataset对象确实具有“排序”属性,但更改其值然后刷

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

我希望在单击网格列标题时对视图本身进行排序(与默认CRM网格视图的排序方式类似)。我正在尝试找出如何对数据集应用排序,以便按照dataset文档的指示刷新数据集。refresh()函数:

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

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

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

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

如果您能帮助数据集排序工作,我们将不胜感激。

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

TLDR:我认为需要对
.sorting
属性调用某种额外的方法,但我无法找到它的调用方式。可能是这样的:

dataset.sorting.setSorting({name: 'createdon', sortDirection: 1});
我认为您必须尝试一些可能的方法名称,看看哪些方法有效

背景和链接:

唯一的

在画布应用程序的此预览中,仅支持有限的一组筛选和sortStatus方法。筛选和排序可应用于除GUID之外的主类型列上的数据集。筛选和排序的应用方式与模型驱动的应用程序相同。要检索包含筛选和排序信息的数据集,请调用
context.parameters.[dataset\u property\u name].筛选中的方法
和
context.parameters.[dataset\u property\u name]。排序
,然后调用
context.parameters.[dataset\u属性\u名称].refresh()

因此,
.filtering
.sorting
属性的处理似乎是类似的,并且有一些方法附加到它们,只有一些方法得到支持。这大概是他们能说的最模糊的了

有一个简短的,以及


有一个,但它没有显式调用任何相应的方法。这可能还不是公共预览中支持的功能,或者缺少文档,并且您需要调用的方法的名称和语法
。排序
尚未文档化。

我最近一直在尝试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 });
我还没有弄清楚这种行为的原因。排序数组可以在后台实现为某种形式的可观察集合


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

我使用console.log()在浏览器中浏览live dataset对象,找到了setFilter()函数,但无法找到与setOrting()类似的任何内容。排序属性只是一个SortStatus对象数组。@FrancisGagnon。糟糕透了(您当时的做法可能是正确的,或者还没有发布该功能的方法。不过,感谢您的帮助。它看起来越来越像该功能还不可用,
dataSet.sorting.pop(); // you may want to clean up the whole collection
dataSet.sorting.push({ name: "columnName", sortDirection: 0 });