Применение сортировки к набору данных в компоненте PowerApps (PCF) - PullRequest
2 голосов
/ 03 марта 2020

Я пытаюсь создать новый набор данных типа Powerapps Component (PCF). На данный момент я использую его для отображения представления записей, доступных в объекте в Microsoft Dynamics CRM.

I sh, чтобы выполнить сортировку представления самостоятельно, когда я нажимаю на заголовки столбцов сетки. (аналогично тому, как это делается в сетке CRM по умолчанию). Я пытаюсь выяснить, как применить сортировку к набору данных, чтобы я мог обновить ее sh, как указано в документации для функции dataset.refre sh ():

Обновляет набор данных на основе фильтров, сортировки, связывания, нового столбца. Новые данные будут переданы для управления в другом цикле updateView.

Объект набора данных имеет свойство «сортировки», но изменение его значения и последующее обновление набора данных, по-видимому, не имеют какого-либо эффект. После refre sh свойство сортировки возвращается к значению, которое было до того, как я его изменил.

Короче говоря, обработчик щелчков для заголовка сетки делает что-то вроде следующего фрагмента кода. Refre sh будет выполнено, и моя функция updateView () будет вызвана, как и ожидалось, но сортировка не была применена.

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

Любая помощь в получении сортировки набора данных будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Я немного поэкспериментировал с PowerApps Component Framework, и я могу подтвердить, что следующий код не будет работать:

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 });

Я действительно не выяснил причину такого поведения. Массив сортировки может быть реализован в виде некоторой формы наблюдаемой коллекции в фоновом режиме.

Я надеюсь, что это приведет вас к работающему решению.

1 голос
/ 10 марта 2020

Документация здесь довольно плачевная, но вот мое лучшее предположение из объединения нескольких разных кусочков информации.

TLDR : Я думаю, что есть какой-то дополнительный метод, который нужно вызвать для свойства .sorting, но я не могу выяснить, как он называется. Может быть, что-то вроде:

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

Я думаю, вам придется попробовать кучу вероятных имен методов и посмотреть, что работает.

Справочная информация и ссылки:

Единственная ссылка , которую я смог найти на dataset.sorting, была отсюда:

В этом предварительном просмотре для приложений Canvas только ограниченный набор фильтров и sortStatus методы поддерживаются. Фильтр и сортировка могут применяться к набору данных в столбцах основного типа, за исключением GUID. Фильтрация и сортировка могут применяться так же, как в управляемых моделями приложениях. Чтобы получить набор данных с фильтрацией и сортировкой информации, вызовите методы в context.parameters.[dataset_property_name].filtering и context.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 ссылка , но она не имеет соответствующих методов, явно вызванных. Возможно, это еще не поддерживается в предварительном просмотре publi c, или отсутствует документация, а название и синтаксис метода, который необходимо вызвать для .sorting, еще не задокументированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...