Sharepoint 如何在列表定义项目中将自定义生成的Web部件添加到自定义视图aspx页面
我开发了一个列表定义项目,并创建了一个自定义视图aspx页面作为列表的默认视图。我现在想添加一个自定义Web部件,以显示在自定义视图aspx页面中。有什么办法吗?您可以使用功能接收器并在功能激活期间管理web部件的添加。这里有一个小存根可以帮助你开始 在功能激活的方法调用代码中,类似于以下内容:Sharepoint 如何在列表定义项目中将自定义生成的Web部件添加到自定义视图aspx页面,sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,我开发了一个列表定义项目,并创建了一个自定义视图aspx页面作为列表的默认视图。我现在想添加一个自定义Web部件,以显示在自定义视图aspx页面中。有什么办法吗?您可以使用功能接收器并在功能激活期间管理web部件的添加。这里有一个小存根可以帮助你开始 在功能激活的方法调用代码中,类似于以下内容: // Add web parts to the .aspx page that was provisioned SPFile page = site.GetFile(&l
// Add web parts to the .aspx page that was provisioned
SPFile page = site.GetFile(<<page url>>);
Hashtable hashWebPartsOnPage = new Hashtable();
using (SPLimitedWebPartManager mgr = page.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
try
{
// First, let's clear the existing web parts off of the form
foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in mgr.WebParts)
{
hashWebPartsOnPage.Add(webPart.ID, webPart);
}
foreach (string webPartName in hashWebPartsOnPage.Keys)
{
System.Web.UI.WebControls.WebParts.WebPart webPart = hashWebPartsOnPage[webPartName] as System.Web.UI.WebControls.WebParts.WebPart;
mgr.DeleteWebPart(webPart);
}
// Add Part to the proper Zone
MyWebPart myWebPart = new MyWebPart();
//set web part properties
mgr.AddWebPart(myWebPart, "FullPage", 1);
}
finally
{
mgr.Web.Dispose();
}
}
page.Update();
//将web部件添加到已设置的.aspx页面
SPFile page=site.GetFile();
Hashtable hashWebPartsOnPage=新Hashtable();
使用(SPLimitedWebPartManager mgr=page.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
尝试
{
//首先,让我们从表单中清除现有web部件
foreach(管理器Web部件中的System.Web.UI.WebControl.WebParts.WebPart Web部件)
{
hashWebPartsOnPage.Add(webPart.ID,webPart);
}
foreach(hashWebPartsOnPage.Keys中的字符串webPartName)
{
System.Web.UI.WebControls.WebParts.WebPart WebPart=hashWebPartsOnPage[webPartName]作为System.Web.UI.WebControls.WebParts.WebPart;
经理删除Web部件(Web部件);
}
//将零件添加到适当的区域
MyWebPart MyWebPart=新建MyWebPart();
//设置web部件属性
经理添加网页部分(我的网页部分,“全页”,1);
}
最后
{
manager.Web.Dispose();
}
}
page.Update();
我想访问列表定义视图页面,我认为使用上述site.GetFile()方法无法访问该页面。您认为我们可以使用任何其他选项来实现这一目标。我尝试了以下步骤:
<File Url="Pages/CustomViewPage.aspx" Type="Ghostable">
<AllUsersWebPart WebPartZoneID="Main" WebPartOrder="1">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>CustomWebpartforView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e3483ddc8b0d437a</Assembly>
<TypeName> CustomWebpartforView.MyCustomview</TypeName>
<FrameType>None</FrameType>
<IsVisible>true</IsVisible>
<Title>Custom Web part for View</Title>
</WebPart>
]]>
</AllUsersWebPart>
</File>
SPList list=SPContext.Current.list
字符串strViewName=
SPView view=SPContext.Current.Web.GetViewFromUrl(“列表/列表/”+strViewName)
SPListItemCollection listItems=list.GetItems(视图)
。
获取列表项后,请执行显示这些项的自定义方法
构建web部件DLL并将其放置在GAC中
步骤3:
创建一个功能来配置“CustomViewPage.aspx”以及您的自定义web部件。通过激活此功能,“Customviewpage.aspx”将嵌入您的自定义web部件。元素清单文件内容如下所示:
<File Url="Pages/CustomViewPage.aspx" Type="Ghostable">
<AllUsersWebPart WebPartZoneID="Main" WebPartOrder="1">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>CustomWebpartforView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e3483ddc8b0d437a</Assembly>
<TypeName> CustomWebpartforView.MyCustomview</TypeName>
<FrameType>None</FrameType>
<IsVisible>true</IsVisible>
<Title>Custom Web part for View</Title>
</WebPart>
]]>
</AllUsersWebPart>
</File>
CustomWebpartforView,版本=1.0.0.0,区域性=neutral,PublicKeyToken=e3483ddc8b0d437a
CustomWebpartforView.MyCustomview
没有一个
真的
用于查看的自定义Web部件
]]>
此步骤给出了源文件路径的错误,我通过在文件标记中提供路径属性修改了源文件路径
步骤4:
现在,基本自定义视图页面与web部件一起提供。现在了解如何将自定义视图页面与列表定义集成。创建自定义列表定义,对于架构中定义的所有视图,请提及“SetupPath”以使用“CustomViewPage.aspx”。现在,自定义视图页面将用作列表定义中定义的所有视图的基本视图页面,以及以后创建的视图也将使用“CustomViewpage.aspx”作为基本页面。用于在schema.xml内声明视图的示例代码段如下所示:
<File Url="Pages/CustomViewPage.aspx" Type="Ghostable">
<AllUsersWebPart WebPartZoneID="Main" WebPartOrder="1">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>CustomWebpartforView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e3483ddc8b0d437a</Assembly>
<TypeName> CustomWebpartforView.MyCustomview</TypeName>
<FrameType>None</FrameType>
<IsVisible>true</IsVisible>
<Title>Custom Web part for View</Title>
</WebPart>
]]>
</AllUsersWebPart>
</File>
安装并激活自定义列表定义的功能
现在,通过所有这些步骤,当您基于此自定义列表定义创建列表时,所有创建的视图都将使用“CustomViewPage.aspx”创建视图页面,并且您的自定义web部件将被呈现,而不是OOB dataformwebpart。创建列表后(通过UI、通过对象模型)将要创建的视图也将使用“CustomViewpage.aspx”作为创建视图页的基页
由于某些原因,我仍然无法看到带有自定义Web部件的CustomViewPage.aspx。这篇文章缺少什么东西了吗?在SharePoint 2010上,您可以在列表定义的Schema.xml内的同一视图定义中添加自定义Web部件或SharePoint Web部件