【问题标题】:How to list and edit html of all web part in sharepoint 2007?如何在 sharepoint 2007 中列出和编辑所有 Web 部件的 html?
【发布时间】: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

标签: sharepoint sharepoint-2007 web-parts


【解决方案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);
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 2010-12-28
        • 2010-12-03
        • 2011-04-09
        • 2013-06-17
        • 1970-01-01
        相关资源
        最近更新 更多