我是sharepoint的新手,我必须在所有网页部分做一个非常简单的修改。我们有很多包含非常简单的html的web部分。 html只包含一个链接和一个图像。
Web开发人员已将完整的链接放到页面和图像上,这会导致一些问题。我想扫描所有的Web部件html并用相关链接替换完整的链接。
有可能吗?我们有大量的页面和链接。手动完成需要2周!!!
谢谢!
编辑#2:编辑#2: 现在的问题是:是否可以列出我网站上的所有aspx文件? 我知道如何使用网址访问网页内容: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: 根据要求,他们就是一个例子:
我想从所有共享的网页部件中删除“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>
答案 0 :(得分:1)
在内容编辑器网页部分中,内容存储在内容标记
下<Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor"><![CDATA[<p>test document test document</p>]]></Content>
我在这里建议的是在sharepoint desginer中打开网站并使用所有页面的查找和替换选项
答案 1 :(得分:0)
我不确定我是否得到了完全需要的东西。编写一个这样做的程序怎么样?通过正则表达式检测链接并替换它们。
答案 2 :(得分:0)
如果您想实际更改Sharepoint中的内容,可能很难在代码中执行此操作。每个webpart的工作方式都不同,因此没有适用于所有Web部件的标准解决方案。例如,CQWP可以从各种列表中提取数据,因此对该Web部件进行更改的方法是更改其提取的列表中的数据。其他webparts可能从SQL Server,Reports中提取数据,其中包含IFrame等。某些webpart甚至可能在自定义DLL中对URL进行硬编码,您只能通过修改DLL所属的解决方案/功能来更改这些URL。重新部署更新版本。
但是,另一种解决方案是编写一个响应过滤器,它将获取Sharepoint的输出,并在每次从Sharepoint请求页面时动态地执行查找/替换。有关如何执行此操作的详细信息,请参阅http://aspnetresources.com/articles/HttpFilters。
答案 3 :(得分:0)
这个的两个部分,第一部分是遍历你网站上的所有网页部分页面 - 有很多例子,所以不要在这里重复这些事情。
第二部分是更新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);
}
}
}
}