Суммирование цифр в PivotViewer

#silverlight #pivotviewer

#silverlight #pivotviewer

Вопрос:

Я создаю приложение PivotViewer для отображения истории продаж отделений магазинов для предприятий розничной торговли.

Мы создаем динамические коллекции из базы данных sql при открытии приложения. sql-запрос группирует суммы продаж по месяцам.

Приложения PivotViewer показывают каждую ветку и связанную с ней сумму за историю продаж. однако, поскольку объем продаж сгруппирован по месяцам, мы получаем 12 разных изображений магазина в поле результатов. Это делает результаты бессмысленными.

Например, если пользователь выбирает магазин Chadstone и историю продаж за январь, февраль и март, в поле результатов отображаются 3 разных изображения. Вместо этого мы хотели бы, чтобы он показывал 1 результат с цифрами за каждый месяц, суммированными по годам.

Я провел некоторое исследование, и, похоже, Pivot Viewer считывает только строки из коллекции и не может выполнить никаких вычислений.

Кто-нибудь знает, правда ли это или как это можно решить?

Спасибо

Ответ №1:

К сожалению, элемент управления PivotViewer на данный момент не поддерживает эту возможность. Я думаю, что с возможностью выполнения и отображения результата вычислений элемент управления PivotViewer был бы фантастическим для визуализации данных вместо отчетов. К сожалению, это недостающая часть головоломки, и я не нашел никакого работоспособного способа реализации такого поведения (это очень заблокированный элемент управления, и к нему сложно добавить функциональность). Я потратил немного времени на попытки, затем решил, что это неосуществимо. PivotViewer должен стать основным элементом управления в Silverlight 5, и я ожидал, что будет добавлено много функциональных возможностей, которые, надеюсь, позволят реализовать подобный сценарий. Однако многие анонсированные функции Silverlight 5 были исключены из текущей бета-версии, и это одна из них. Нам нужно будет скрестить пальцы, чтобы возможность реализовать это была доступна, когда она будет обновлена для Silverlight 5 (вероятно, с Silverlight 5 beta 2).

Крис

Ответ №2:

Чтобы выполнить это, вам придется добавить дополнительную обработку на стороне сервера (где вы генерируете свой CXML). Это правда, текущий PivotViewer — это просто средство просмотра. Он берет данные, находящиеся в файле CXML, и отображает их вместе с изображением с глубоким увеличением, которое связано с ним.

Итак, чтобы справиться с вашей ситуацией, вам нужно будет обработать ваш запрос перед созданием вашего CXML или вашего изображения. Затем вы можете сгруппировать свои элементы в этой точке и добавить любое суммирование, которое вам нужно. Вам просто нужно иметь в виду, что вы отображаете только то, что есть в CXML, но вы можете поместить в этот CXML все, что захотите.

Что касается SL5, у вас все равно не будет никаких вычислений как таковых. Вы сможете использовать коллекции объектов более стандартным способом типа «ItemsSource», но он все равно будет отображать то, что содержится в этих данных. Однако, как и в CXML, вы можете объединить свои ежемесячные данные в один объект и отображать их вне этого объекта.

Тони

Ответ №3:

Я подключил обработчик событий к измененному свойству и сделал следующее…Я использовал это для добавления выводов на карту Bing, и это отлично сработало.

   void PivotViewer_PropertyChanged( object _Sender, System.ComponentModel.PropertyChangedEventArgs _Args )
  {
     if( _Args.PropertyName == "InScopeItemIds" )
     {
        PivotViewer pivotViewer = ( _Sender as PivotViewer );

        foreach( string isii in pivotViewer.InScopeItemIds )
        {
           PivotItem pi = pivotViewer.GetItem( isii );
           /*
              Do some work on the items in view?
            */

        }
     }
  }