2

I need to add a new page in a new doc library. That works fine. In the page I need to add a webpart to filter list data from a view bases on 3 columns from the view.

The following code is not throwing any exception but its not either filtering the data. There are 3 items in the list

// Uncomment the method below to handle the event raised after a feature has been activated.
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            string pageUrl=AddSponsoringEventsDashboardPage(properties.Feature.Parent as SPWeb);
            AddNavigationLink(properties.Feature.Parent as SPWeb, pageUrl);
        }



        private void AddNavigationLink(SPWeb currentUnsafeWeb, string url)
        {
            bool allowUnsafeUpdatesSetting = false;

            try
            {
                // Cleanup all  quick links
                allowUnsafeUpdatesSetting = currentUnsafeWeb.AllowUnsafeUpdates;
                currentUnsafeWeb.AllowUnsafeUpdates = true;

                SPNavigationNodeCollection quickLaunchNodes = currentUnsafeWeb.Navigation.QuickLaunch;

                foreach (SPNavigationNode node in quickLaunchNodes)
                {
                    if (string.Compare(node.Title, "Lists") == 0)
                    {
                        SPNavigationNode dataNode = new SPNavigationNode("$Resources:SPNLSponsoring,Navigation_SponsoringEventsDashboard_Title", url, true);
                        node.Children.AddAsFirst(dataNode);
                        currentUnsafeWeb.Update();
                        break;
                    }
                } 
            }
            catch
            {
                throw;
            }
            finally
            {
                currentUnsafeWeb.AllowUnsafeUpdates = allowUnsafeUpdatesSetting;
            }

        }

        private string AddSponsoringEventsDashboardPage(SPWeb currentWeb)
        {
            Logger.LogDebug("NLSponsoringSiteConfigSponsoringCentralEventReceiver", "AddSponsoringEventsDashboardPage(SPWeb currentWeb)", "BEGIN");

            SPListTemplateType tempType = SPListTemplateType.DocumentLibrary;
            Guid guid = currentWeb.Lists.Add("$Resources:SPNLSponsoring,SponsoringDashboardDocumentLibrary_Title",
                "$Resources:SPNLSponsoring,SponsoringDashboardDocumentLibrary_Description", tempType);

            SPList docLibrary = currentWeb.Lists[guid];

            SPLimitedWebPartManager mgrPageManager = null;
            SPFile pageDashboard = null;
            string strurl;
            try
            {
                pageDashboard = docLibrary.RootFolder.Files.Add(String.Format("{0}/{1}", docLibrary.RootFolder.ServerRelativeUrl, "sponsoringeventdashboard.aspx"), SPTemplateFileType.StandardPage);
                pageDashboard.CheckOut();

                #region Add Filter webpart
                SimpleFormWebPart sfwp = new SimpleFormWebPart();
                sfwp.Title = "Filter";
                sfwp.Content = "<div onkeydown=\"javascript:if (event.keyCode == 13) _SFSUBMIT_\"><input type=\"text\" name=\"T1\"/>" +
                                "<input type=\"button\" value=\"Go\" onclick=\"javascript:_SFSUBMIT_\"/></div>";
                string idWebPartFilter = pageDashboard.AddWebPartToPage(sfwp, Constants.WEBPART_ZONE_HEADER, 1, PartChromeType.Default);
                #endregion

                #region Add new view
                SPList list = currentWeb.Lists[SponsoringCommon.Constants.LISTNAMES_SPONSORINGEVENTSNAME];
                SPView oView = list.Views[SponsoringCommon.Constants.VIEWS_SPONSORINGEVENTS_DEFAULTLIST].Clone(SponsoringCommon.Constants.VIEWS_SPONSORINGEVENTS_DASHBOARD_NAME, 20, true, false);

                oView.Query = "<Where>" +
                                 "<Or>" +
                                  " <Or>" +
                                   "  <Contains>" +
                                   "    <FieldRef Name=\"EventNumber\"/>" +
                                   "    <Value Type=\"Text\">{ParamEventNumber}</Value>" +
                                    " </Contains>" +
                                    " <Contains>" +
                                    "   <FieldRef Name=\"EventName\"/>" +
                                    "   <Value Type=\"Text\">{ParamEventName}</Value>" +
                                    " </Contains>" +
                                   "</Or>" +
                                   "<Contains>" +
                                     "<FieldRef Name=\"EventLocation\"/>" +
                                     "<Value Type=\"Text\">{ParamEventLocation}</Value>" +
                                   "</Contains>" +
                                 "</Or>" +
                              " </Where>";

                oView.Update(); 
                #endregion


                #region Add XSLT List View WebPart
                string idWebPartSponsoringEvents = "ID_SponsoringEvents";
                pageDashboard.AddXSLTListViewWebPartToPage(currentWeb,
                    SponsoringCommon.Constants.LISTNAMES_SPONSORINGEVENTS, idWebPartSponsoringEvents,
                    string.Empty, Constants.WEBPART_ZONE_HEADER, 2,
                    SponsoringCommon.Constants.VIEWS_SPONSORINGEVENTS_DASHBOARD_NAME, PartChromeType.Default, false);

                mgrPageManager = pageDashboard.GetLimitedWebPartManager(PersonalizationScope.Shared);
                XsltListViewWebPart lvwpOrganisation = mgrPageManager.WebParts[idWebPartSponsoringEvents] as XsltListViewWebPart;
                lvwpOrganisation.ParameterBindings += "<ParameterBinding Name=\"ParamEventNumber\" Location=\"None\" DefaultValue=\"\" />" +
                                                    "<ParameterBinding Name=\"ParamEventName\" Location=\"None\" DefaultValue=\"\" />" +
                                                    "<ParameterBinding Name=\"ParamEventLocation\" Location=\"None\" DefaultValue=\"\" />";

                mgrPageManager.SaveChanges(lvwpOrganisation);
                #endregion

                #region Add Connection
                string[] colConsumerFields = { "EventNumber", "EventName", "EventLocation" };
                string[] colProviderFields = { "T1", "T1", "T1" };

                // connect filter to organisation-webpart
                pageDashboard.ConnectWebPartsByRowToParameters(idWebPartSponsoringEvents,
                    Constants.WEBPART_CONNECTION_DFWPPARAMETERCONSUMERID,
                    colConsumerFields,
                    idWebPartFilter,
                    Constants.WEBPART_CONNECTION_SFWPROWPROVIDERID,
                    colProviderFields);
                #endregion

                pageDashboard.CheckIn(String.Empty);
                strurl = pageDashboard.Url;
            }
            catch (Exception)
            {
                if (pageDashboard != null) pageDashboard.UndoCheckOut();
                throw;
            }

            Logger.LogDebug("NLSponsoringSiteConfigSponsoringCentralEventReceiver", "AddSponsoringEventsDashboardPage(SPWeb currentUnsafeWeb)", "WebParts added. Start configuring connections.");

            return strurl;
        }

enter image description here

2 Answers 2

0

I reckon you could do this with no code using Sharepoint Designer e.g using webpart connections. Cheers

1
0

problem was ParameterBinding

I was not using the same name., it has to match.

1
  • 1
    might be best to show the lines which caused the issue and then the lines once they are fixed...
    – Mauro
    Jul 13, 2012 at 9:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.