如何在sharepoint 2007中列出和编辑所有Web部件的html?

时间:2010-12-01 15:35:03

标签: sharepoint sharepoint-2007 web-parts

我是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>

4 个答案:

答案 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);
            }
        }
    }
}