按代码添加webpart到过滤视图不起作用

时间:2012-07-13 07:31:56

标签: c# sharepoint sharepoint-2010 web-parts

我需要在新的doc库中添加新页面。这很好。在页面中,我需要添加一个webpart来过滤视图中3列的视图中的列表数据。

以下代码不会抛出任何异常,但它不会过滤数据。列表中有3个项目

// 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

1 个答案:

答案 0 :(得分:0)

问题是ParameterBinding

我没有使用相同的名称。它必须匹配。