2012-07-13 34 views
1

我需要在新的文檔庫中添加一個新頁面。這工作正常。在頁面中,我需要添加一個webpart來從視圖中的3列中過濾列表數據。將webpart添加到代碼篩選視圖不起作用

以下代碼不會引發任何異常,但不會過濾數據。有列表中的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

回答

0

問題ParameterBinding

相關問題