如何在自定义页面添加一个WebPart库中的WebPart?

baby861225 2009-09-17 03:40:42
如何在自定义页面添加一个WebPart库中的WebPart?

环境如下:

自己写了一个WebPart,并且已经加入到“Web部件”库中。WebPart名为:MyTaskHistoryWebPart.webpart

此外有一个自定义页面TaskHistory.aspx 代码如下:

<%@ Page Language="C#" MasterPageFile="EPM.master" AutoEventWireup="true" CodeBehind="TaskHistory.aspx.cs" Inherits="EPMWebPages.EPM.TaskHistory" Title="审批历史查询" %>

<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
Namespace="Microsoft.SharePoint.WebPartPages" TagPrefix="cc1" %>

<asp:Content ID="Content10" ContentPlaceHolderID="workcontent" Runat="server">
<cc1:SPWebPartManager ID="SPWebPartManager1" runat="server">
</cc1:SPWebPartManager>
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</asp:Content>



我想通过后台把WebPart加入到Panel里,但是我如何找到那个WebPart?

本来想用SharePoint Designer创建一个页面加WebPart,但是因为要继承自己的母版页,然而母版页样式的路径很难控制,所以就此放弃。

大家帮忙看看,谢谢各位
...全文
174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanyinandd 2009-10-12
  • 打赏
  • 举报
回复
首先要确认你的EPM.master可以添加webpart,我记得好像只有继承application.master(layouts里存)和default.master(数据库里存)才可以添加webpart,就是SPWebPartManager的验证吧。

有两种添加方式,一种是写前台代码,基本就是拿SPD打开页面,然后把webpart那部分的代码写到你的页面里,不过这种方法,估计你没用。
另一种,就是后台代码添加webpart(之前写的):
#region Add a WebPart to this new WebPartPage
string mZone = "Top";
SPWebPartCollection spWebColl = spWeb.GetWebPartCollection(targetFilePath, Microsoft.SharePoint.WebPartPages.Storage.Shared);
//SPLimitedWebPartManager spWebMan = spWeb.GetLimitedWebPartManager(targetFilePath, Microsoft.SharePoint.WebPartPages.Storage.Shared);
StringBuilder sbstr = new StringBuilder();
sbstr.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sbstr.Append("<WebPart xmlns=\"http://schemas.microsoft.com/WebPart/v2\" >");
string title = "Content Editor Web Part (WebPublisher)";
sbstr.Append("<Title>" + title + "</Title>");
sbstr.Append("<Description>Use for formatted text, tables, and images</Description>");
sbstr.Append("<ZoneID>" + mZone + "</ZoneID>");
sbstr.Append("<Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>");
sbstr.Append("<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>");
sbstr.Append("<!-- Specify initial values for any additional base class or custom properties here. -->");

sbstr.Append("<Content xmlns=\"http://schemas.microsoft.com/WebPart/v2/ContentEditor\"> ");

sbstr.Append("<![CDATA[ ");
#region Add HTML to the WebPart
sbstr.Append("<table border=\"0\" style=\"table-layout: fixed;\">");
sbstr.Append("<tr>");
sbstr.Append("<td valign=\"top\">");
sbstr.Append(text);
sbstr.Append("</td>");
sbstr.Append("</tr></table>");
sbstr.Append(" ]]> ");
#endregion
sbstr.Append(" </Content> ");

sbstr.Append("</WebPart>");
spWebColl.Add(sbstr.ToString());
baby861225 2009-09-17
  • 打赏
  • 举报
回复
WebPart已成功部署,利用其它页面能够添加成功。

但是在自定义页面中报错:控件包含代码块(即 <% ... %>),因此无法修改控件集合。

TaskHistory.aspx代码如下:

<%@ Page Language="C#" MasterPageFile="EPM.master" AutoEventWireup="true" CodeBehind="TaskHistory.aspx.cs" Inherits="EPMWebPages.EPM.TaskHistory" Title="审批历史查询" %>

<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
Namespace="Microsoft.SharePoint.WebPartPages" TagPrefix="cc1" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register tagprefix="WebParts" namespace="EPM.WebParts" assembly="EPM.WebParts" %>

<asp:Content ID="Content10" ContentPlaceHolderID="workcontent" Runat="server">

<cc1:SPWebPartManager ID="SPWebPartManager1" runat="server">
</cc1:SPWebPartManager>
<cc1:WebPartZone id="taskHistoryWebPartZ" runat="server" title="区域 1"><ZoneTemplate>
</ZoneTemplate></cc1:WebPartZone>
</asp:Content>


HugoWong 2009-09-17
  • 打赏
  • 举报
回复
首先确认自己的MyTaskHistoryWebPart.webpart是否已经成功部署了?

到别的WEBPART页中加入MyTaskHistoryWebPart.webpart检查是否正确?

如果确认WEBPART没问题后,把你的页面要改一改,PANEL是不可以LOAD WEBPART的,

<WebPartPages:WebPartZone >来代替PANEL



3,242

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧