如何在 sharepoint 2007 中列出和编辑所有 Web 部件的 html?
Posted
技术标签:
【中文标题】如何在 sharepoint 2007 中列出和编辑所有 Web 部件的 html?【英文标题】:How to list and edit html of all web part in sharepoint 2007? 【发布时间】:2011-05-18 13:56:33 【问题描述】:我是 sharepoint 的新手,我必须对所有 Web 部件进行非常简单的修改。我们有很多包含非常简单的 html 的 web 部件。 html 只包含一个链接和一个图片。
Web 开发人员放置了页面和图像的完整链接,这会导致一些问题。我想扫描所有的 web 部件 html 并用相对链接替换完整的链接。
有可能吗?我们有大量的页面和链接。手动完成需要2周!!!
谢谢!
编辑#2: 现在的问题是:是否可以列出我网站中的所有 aspx 文件? 我知道如何使用 url 访问 Web 部件内容:
using (SPLimitedWebPartManager manager = web.GetLimitedWebPartManager(
"ca/Pages/Home.aspx", PersonalizationScope.Shared))
foreach (System.Web.UI.WebControls.WebParts.WebPart wp in manager.WebParts)
System.Console.WriteLine(wp.Title);
if (wp.GetType().Equals(typeof(Microsoft.SharePoint.WebPartPages.ContentEditorWebPart)))
Microsoft.SharePoint.WebPartPages.ContentEditorWebPart thisWebPart = wp as Microsoft.SharePoint.WebPartPages.ContentEditorWebPart;
System.Console.WriteLine(thisWebPart.Content.InnerText );
System.Console.WriteLine(thisWebPart.Content.InnerXml);
编辑#1: 根据要求,他们是一个例子:
我想使用如下代码从所有共享 Web 部件中删除“http://www.mywebsite.com”:
<A title="" href="http://www.mywebsite.com/Pages/Career.aspx" target=""><IMG style="BORDER-RIGHT: 0px solid; BORDER-TOP: 0px solid; BORDER-LEFT: 0px solid; BORDER-BOTTOM: 0px solid" src="http://www.mywebsite.com/images/Career.jpg" border=0></A>
【问题讨论】:
你能发布一个你想要做的替换的例子吗?修改前后的链接。 您使用的是什么类型的 Web 部件或自定义 Web 部件或内容编辑器 Web 部件或其他东西 @Ashutosh Singh:内容编辑器 webpart 【参考方案1】:我不确定我是否得到了确切的要求。编写一个这样的程序怎么样?通过正则表达式检测链接并替换它们。
【讨论】:
这正是我想做的。它甚至简单的正则表达式:我只需要删除mywebsite.com 但我不知道是否可以迭代所有的webparts 并修改html 代码。我只知道手动“编辑html代码”按钮【参考方案2】:如果您想实际更改 Sharepoint 中的内容,可能很难在代码中执行此操作。每个 Web 部件的工作方式都不同,因此没有适用于所有 Web 部件的标准解决方案。例如,CQWP 可以从各种列表中提取数据,因此对该 Web 部件进行更改的方法是更改它从中提取的列表中的数据。其他 Web 部件可能从 SQL Server、报告中提取数据,其中包含 IFrame 等。一些 Web 部件甚至可能将 URL 硬编码在自定义 DLL 中,您只能通过修改 DLL 所属的解决方案/功能来更改它,并且重新部署更新的版本。
但是,另一种解决方案是编写一个响应过滤器,它将获取 Sharepoint 的输出,并在每次从 Sharepoint 请求页面时动态地执行查找/替换。有关如何执行此操作的更多信息,请参阅http://aspnetresources.com/articles/HttpFilters。
【讨论】:
【参考方案3】:在内容编辑器 Web 部件中,内容存储在内容标签下
<Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor"><![CDATA[<p>test document test document</p>]]></Content>
我可以在这里建议的是在 sharepoint 设计器中打开站点并为所有页面使用查找和替换选项
【讨论】:
【参考方案4】:这有两个部分,第一个是循环浏览您网站中的所有 Web 部件页面 - 那里有很多示例,所以不要在这里重复,以免混淆。
第二部分是更新 Content 属性并保存 - 似乎这是您对updating the Content Editor Web Part (CEWP) programatically 的难题中缺少的部分,所以:-
using System.Xml;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
private void updateContentEditor(SPWeb web, string pageUrl)
using (SPLimitedWebPartManager manager =
web.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared))
foreach (WebPart wp in manager.WebParts)
if (wp.GetType() == typeof(ContentEditorWebPart))
ContentEditorWebPart cewp = wp as ContentEditorWebPart;
cewp.Content.InnerXml;
// See http://justgeeks.blogspot.com/2009/02/i-found-to-be-bit-tricky-to-update.html
XmlDocument xmlDoc = new XmlDocument();
XmlElement xmlElement = xmlDoc.CreateElement("MyElement");
// Do you change logic here
xmlElement.InnerText =
contentEditor.Content.InnerText.Replace(BEFORE, AFTER);
// Save changes
contentEditor.Content = xmlElement;
manager.SaveChanges(cewp);
【讨论】:
以上是关于如何在 sharepoint 2007 中列出和编辑所有 Web 部件的 html?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取 Sharepoint (MOSS) 2007 中的当前语言或变体?
Sharepoint 2007 数据视图 Webpart 自定义参数