我需要在新的文档库中添加一个新页面。这很好用。在页面中,我需要添加一个 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;
}