Wednesday, March 20, 2013

Connect PerformancePoint Filter Web Part and Analytic Report Web Part

Programmatically Connect PerformancePoint Filter Web Part and Analytic Report Web Part

Reference:
 
http://stackoverflow.com/questions/1048736/web-part-connections-in-site-definitions
http://social.technet.microsoft.com/Forums/en-US/ppsmonitoringandanalytics/thread/992fa91d-6587-479c-aacf-13d789332231/
 
MSDN has good code samples on how to create PerformancePoint content such filters, KPI, scorecard and reports at http://msdn.microsoft.com/en-us/library/ee570773.aspx
 

Here is the code about how you can set up the connection between a filter web part and a report view web part.


        private static void SetWebPartConnections(SPWeb web, string pageUrl)
        {
            SPFile file = web.GetFile(pageUrl);
            if (file == null && !file.Exists)
                return;
 
            if (file.CheckOutType != SPFile.SPCheckOutType.None)
                file.CheckIn("");
 
            file.CheckOut();
 
            try
            {
                SPLimitedWebPartManager webPartManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared);
                if (webPartManager == null)
                    return;
 
                ReportViewWebPart reportView = null;
                Microsoft.PerformancePoint.Scorecards.WebControls.FilterWebPart dateFilter = null;
                foreach (System.Web.UI.WebControls.WebParts.WebPart wp in webPartManager.WebParts)
                {
                    if (!string.IsNullOrEmpty(wp.Title) && wp.Title == "BI Chart")
                    {
                        reportView = wp as ReportViewWebPart;
                        continue;
                    }
 
                    if (!string.IsNullOrEmpty(wp.Title) && wp.Title == "BI Date Filter")
                    {
                        dateFilter = wp as FilterWebPart;
                        continue;
                    }
                }
 
                SPWebPartConnection connection = new SPWebPartConnection();
                connection.ID = "pps_connection_abc123";
                connection.ConsumerConnectionPointID = "BIDataProvider";
                connection.ProviderConnectionPointID = "TransformableBIDataProvider";
                connection.ConsumerID = reportView.ID;
                connection.ProviderID = dateFilter.ID;
 
                
                TransformProviderConsumerRecord transformRecord = new TransformProviderConsumerRecord();
                transformRecord.ConsumerParameterName = "[Dim Time].[GenericTime]";
                transformRecord.DisplayColumnName = "DisplayValue";
                transformRecord.EncodeAsSet = false;
                transformRecord.MappingId = Guid.NewGuid().ToString();
                transformRecord.ProviderParameterDisplayName = "PerformancePoint Values";
                transformRecord.ProviderParameterName = "FilterValues";
                transformRecord.TypeFullName = "System.String";
                transformRecord.ValuesColumnName = "MemberUniqueName";
 
                List<TransformProviderConsumerRecord> list = new List<TransformProviderConsumerRecord>();
                list.Add(transformRecord);
                ProviderConsumerTransformations transformations = new ProviderConsumerTransformations(list);
 
                // Build TransformConditionalVisibilityRecord
                TransformConditionalVisibilityRecord visibilityRecord = new TransformConditionalVisibilityRecord();
                visibilityRecord.IsDefaultVisibility = false;
                visibilityRecord.IsDefined = false;
 
                // Build TransformerConfigurationRecord
                TransformerConfigurationRecord configurationRecord = new TransformerConfigurationRecord(transformations, visibilityRecord);
 
                TransformableBIDataProviderTransformer transformer = new TransformableBIDataProviderTransformer();
                transformer.ConfigurationState = configurationRecord;
 
                // Set connection's transformer
                connection.SPTransformers.Add(transformer);
 
                webPartManager.SPWebPartConnections.Add(connection);
                webPartManager.SaveChanges(reportView);
                webPartManager.SaveChanges(dateFilter);
            }
            catch (Exception expt)
            {
                string message = expt.Message;
            }
            finally
            {
                file.CheckIn("");
            }
        }

No comments:

Post a Comment