65.9K
CodeProject 正在变化。 阅读更多。
Home

SharePoint 快速入门 FAQ - 第四部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.97/5 (40投票s)

2009 年 2 月 9 日

CPOL

15分钟阅读

viewsIcon

117017

downloadIcon

707

SharePoint 快速入门 FAQ - 第四部分

目录

如果您是 SharePoint 新手,请从以下视频开始学习:8 小时学会 SharePoint:-

引言

这是我的第四篇 SharePoint 快速入门 FAQ 系列。在本系列中,主题是 WebPart、WebPart 和 WebPart。

什么是 WebParts,在 SharePoint 环境中它们有哪些不同之处?

它有助于构建可根据业务用户进行定制和个性化的可重用组件。我们可以创建自己的 WebPart,也可以重用 SharePoint 中已有的 WebPart。

WSS 提供了以下 WebParts

  • DataView Web Part:通过 Microsoft SharePoint Designer 显示具有丰富设计支持的数据。
  • ListView Web Part:帮助我们显示 SharePoint 站点中任何列表的内容。
  • Image Web Part:帮助我们显示图像文件。
  • Content Editor Web Part:使用此项通过所见即所得编辑器显示静态 HTML 内容或链接到文本文件。
  • Members Web Part:帮助我们显示站点的成员。
  • PageViewer Web Part:在 iFrame 中显示网页。

WebPart 本质上是一个继承自 System.Web.UI.WebControls.WebParts 的简单类。换句话说,你可以说 WebPart 是一种 WebControl,可以部署在 WebPartZoneControl 中。

WebPart 管理器控件就像一个控制器,负责维护 WebPart 的实例。在 ASP.NET 页面初始化时,它会将 WebPart 添加到 WebPartZone。

现在让我们看看 WebParts 在 SharePoint 环境中是如何工作的。WebPartManager 使用 SPWebPartManagerWebPartZoneWebPartManager 交互,WebPartManager 随后将 WebPart 的序列化实例存储在内容数据库中。换句话说,代码存储在内容数据库中以供自定义。

最大的区别在于,“WebPart” 代码存储在内容数据库中。因此,与普通 ASP.NET 相比,一些区别在于,代码被部署在内容数据库中,并使用“安全模式解析器”进行解析。

WebPart 会经历哪些不同的生命周期事件?

“WebPart” 控件会经历各种事件,并具有典型的生命周期。

  • OnInit:这是初始化事件,也是发生的第一个事件。
  • OnLoad:加载事件。
  • CreateChildControls:当子控件被添加到复合控件时,会触发此事件。
  • EnsureChildControls:此事件确保 CreateChildControls 被触发。
  • OnPreRender:在渲染事件之前触发。
  • Page.PreRenderComplete:当所有控件都执行完毕后,会触发 OnPreRender 事件。
  • Render:渲染整个控件。
  • RenderContents:仅渲染控件的内容。

WSS 2.0 和 3.0 中的 WebPart 有何区别?

首先,我们来谈谈一些历史。当 WSS 2.0 首次推出时,“WebParts” 就诞生了。在 ASP.NET 2.0 框架中,构建了一个新版本的“WebPart”,可以在没有 WSS 的情况下运行。WSS 3.0 使用 ASP.NET 2.0 的“WebPart” 框架。

以下是一些要点

  • 如果您正在使用 WSS 3.0 进行新开发,则应使用 ASP.NET 2.0 的“WebPart” 框架。
  • 如果您需要向后兼容,可以使用 Microsoft.SharePoint.WebPartPages.WebPart 类。

因此,决定将更多地取决于您需要的向后兼容程度。

此处的表格显示了与 SharePoint 向后兼容类相比的新 WebPart 类

ASP.NET Web Parts 类 SharePoint 向后兼容类
WebBrowsableAttribute BrowsableAttribute
WebDisplayName FriendlyName
WebDescription 描述
Personalizable WebPartStorage
PersonalizationScope 存储
EditorPart ToolPart
EditorPartCollection ToolPart[]
CreateEditorParts() GetToolParts()
RenderContents() RenderWebPart()
SetPersonalizationDirty() SaveProperties

你能解释一下我们在 SharePoint 中创建 WebPart 所需的六个步骤吗?

现在我们已经了解了 WebPart 的基本知识,让我们实际部署一个 WebPart。部署 WebPart 有三个步骤:

第 1 步:创建 WebPart

第一步是创建 WebPart。下面是一个 WebPart 的代码片段。我们需要引用 WebParts,自定义 WebPart 类应继承自 WebPart 类,最后我们需要用自定义实现重写 CreateChildControls 方法。

第 2 步:将编译后的 DLL 复制到 Bin 文件夹中的虚拟目录

第二步是将编译后的 DLL 复制到 SharePoint 站点的虚拟目录。

您可以在 IIS 的主目录选项卡中获取虚拟目录。例如,当前网站托管在 SharePoint 80 虚拟站点上,该站点实际上位于“C:\Inetpub\wwwroot\wss\VirtualDirectories\80”。

现在让我们浏览到“C:\Inetpub\wwwroot\wss\VirtualDirectories\80\bin”目录,并将 DLL 复制到 bin 文件夹中。

第 3 步:在 web.config 文件中为 WebPart 创建条目

现在我们已经将 DLL 复制到了“bin”文件夹,我们需要在虚拟目录的“Web.Config”文件中创建一个“SafeControl”条目。

让我们浏览到“C:\Inetpub\wwwroot\wss\VirtualDirectories\80”,打开 web.config 文件,并在 web.config 文件的“SafeControls”部分添加类库名称。下面的代码片段以可视化的方式显示了这一点。

第 4 步:将其添加到 WebPart 库

现在我们已经在“web.config”文件中添加了 WebPart,是时候将其添加到 Web Part 库中了。单击“站点设置”->单击“Webparts”->单击“新建”按钮,您应该会看到下图所示。

您也可以在库中看到最近添加的 WebPart。要使其可用,请选中复选框并单击“填充库”。

现在您应该能在 WebPart 库中看到您的 WebPart(在此上下文中,它是 SimpleLabelWebPart)。

第 5 步:将 WebPart 添加到站点页面

现在我们的 WebPart 已在库中可用,是时候将其添加到 SharePoint 页面了。转到要添加此 WebPart 的页面,单击站点操作菜单,然后单击“编辑页面”,如下图所示。

在页面上,您应该会看到一个“添加 WebPart”按钮。单击它,它将填充现有的 Web Parts。浏览到您的 WebPart 并单击“添加”。

完成后,您的 WebPart 已添加到站点页面。您可以通过单击“修改共享 WebPart”来编辑默认的 WebPart 属性。为了简单起见,我们更改了标题。

第 6 步:查看 WebPart

在正常查看页面时,您可以看到更改后的标题显示。只需几行代码,您就可以看到我们是如何实现巨大的自定义的。

我们如何实现 WebPart 的自定义和个性化?

个性化和自定义都是关于根据个人选择改善用户体验。每个人都是不同的,每个人都希望世界按照自己的意愿发展。网站也是如此。例如,您的网站可以具有天气预报、商业新闻和体育新闻等功能。作为管理员,您有能力更改网站的外观和感觉,这些更改将显示给所有用户。一些个人用户只想看新闻而不是天气预报。因此,网站应提供某种功能,用户可以在其中进行个性化选择,以便网站按照他们的选择运行。

管理员可以更改外观和感觉的能力称为自定义。此更改将反映在访问站点的每个访问者身上。个人用户选择查看带有天气预报的新闻或不查看新闻的能力称为个性化。

简而言之,当对站点所做的更改被所有用户共享时,称为自定义。当我们对仅由单个用户看到的某个功能进行更改时,称为个性化。

让我们用一个小样本来理解 SharePoint 中的个性化和自定义。让我们创建一个标签,每个用户都可以对其文本/数据进行个性化,但字体大小只能由管理员自定义。字体大小的自定义活动仅限于管理员,不能由最终用户进行个性化。

让我们创建上面讨论的标签 WebPart。我们将创建一个 WebPart,其标签数据可以被个性化,字体大小只能由管理员自定义。

我们需要做的第一件事是创建一个 WebPart 类。下面是 WebPart 类的代码片段。我们创建了两个私有属性来存储字体大小和标签数据。

public class SimpleLabelCustomization : WebPart
{
    private int _intFontSize;
    private string _strLblData = "";
}

我们需要做的第二件事是为这两个属性定义个性化范围。

我们希望用户对标签数据更改进行个性化。因此,我们需要将 personalizable 属性设置为 personalizationscope.user。为了显示描述和显示名称,我们指定了 WebDisplayNameWebDescription

[Personalizable(PersonalizationScope.User),
WebBrowsable(true),
WebDisplayName("Personalize your Label data"),
WebDescription("This label is a personalized webpart")]
public string LabelData
{
    get { return _strLblData; }
    set {_strLblData = value; }
}

我们希望所有用户都能看到字体大小的更改,因此我们需要将 personalizable 值属性设置为 personalizationscope.Shared

[Personalizable(PersonalizationScope.Shared),
WebBrowsable(true),
WebDisplayName("Customize font size for every one"),
WebDescription("This label is a customized webpart")]
public int FontSizeValue
{
    get{ return _intFontSize; }
    set{_intFontSize = value; }
}

下面是带有解释的完整代码片段。

现在我们已经完成了 WebPart 的工作,我们需要部署它。您可以参考上一节来了解如何部署 WebPart。

现在让我们看看个性化的乐趣。要个性化页面,您需要单击右上角,然后单击“个性化页面”。现在,如果您编辑 WebPart,您会发现只能更改标签数据。

这是因为我们将标签数据设置为用户个性化,而将字体大小设置为共享个性化。

要自定义 WebPart,我们需要单击“站点操作”并单击“编辑页面”。现在您可以看到这两个属性。站点操作菜单可以限制为管理员,以便更好地控制自定义和个性化。

要查看实际效果,请创建两个不同的登录用户,并使用每个登录用户更改数据。您将看到,根据您登录的用户名,您将看到适合用户个性化的标签数据。

我们如何为 WebPart 创建自定义编辑器?

在某些情况下,您可能希望使用自己的自定义 WebPart 编辑器,而不是使用默认的 WebPart 编辑器。

注意:如果您不知道如何部署 WebPart,我们建议您阅读“你能解释一下我们在 SharePoint 中创建 WebPart 所需的六个步骤吗?”这个问题的答案。

创建自己的自定义 WebPart 编辑器是一个四步过程。

第 1 步:首先要做的是创建 WebPart。我们需要进行一个小改动,即“WebBrowsable (false)”,这样它就不会使用默认的“WebPart”编辑器。下面是相同的字体大小“WebPart”的代码片段,其中“WebBrowsable”值为 false

第 2 步:我们在 WebPart 中需要做的另一件事是重写“CreateEditorParts”方法并添加我们的自定义 WebPart 编辑器。我们将在下一步中介绍如何创建 WebPart 编辑器。在这个例子中,我们创建了“SimpleWebPartEditor”。

第 3 步:为了创建您的自定义 WebPart 编辑器,我们需要做的第一步是继承自 EditorPart 类。目前,我们已经创建了一个名为 SimpleLabelWebPart 的自定义 WebPart 编辑器类。在这个自定义类中,我们创建了两个标签和两个文本框。这两个文本框将用于输入字体大小和标签值,而标签将显示这些文本框的描述。换句话说,我们定义了我们的 UI,它接受可以自定义我们 WebPart 的输入。

第 4 步:通常会进行两项活动,一项是当用户提供自定义值来定制 WebPart 时,另一项是当我们向 WebPart 同步自定义值时。

WebPart 的自定义值根据登录的用户存储在内容数据库中。因此,当通过我们的自定义 WebPart 编辑器为 WebPart 提供自定义数据时,我们需要重写 ApplyChanges 方法并将自定义数据推送到 WebPart 对象。换句话说,数据是逐用户从 WebPart 编辑器推送到内容数据库的。

现在来到第二个方面,我们需要将 WebPart 数据从内容数据库同步到 WebPart 本身。为此,我们需要重写 syncchanges 方法并将数据从 WebPart 对象推送到 WebPart 编辑器用户界面。

现在,如果您编辑 WebPart,您可以看到自定义编辑器的外观。

SharePoint 中的列表和内容类型是什么?

SharePoint 的本质是数据以及不同类型用户之间的数据协作。当我们谈论数据时,它因用户而异,并且涉及不同类型元数据。例如,下面我们有四种用户:项目经理、会计、安保人员和人力资源。

这四种用户的数据格式都不同。例如,会计需要使用不同的数据类型和字段来保存数据,如凭证号(20 个字符的字符串)、凭证日期(MM/DD/YYYY)、借方(布尔值 true)、贷方(布尔值 false)和金额(双精度)。安全人员需要入场时间、出场时间、携带物品和生物识别数据。

为了提供一个灵活的、可进一步扩展的协作数据模型,SharePoint 引入了列表和内容类型。数据以列表数据的形式可视化,如下图所示。通过这种方法,您可以根据需要添加更多字段和内容类型。

将数据组织到列表中的最佳部分是我们能带来的灵活性和可扩展性。列表类型方法带来的一些灵活性如下所示:

列表的不同视图

例如,员工列表可以按员工或按日期查看。

从外部列表存储创建内容

您可以导入 Excel 并指示 SharePoint 创建该类型的列表。

SharePoint 目前提供哪些现成的列表类型?

大约有十三种不同的现成列表类型,以下列出了一些最常用的。

文档库

用于文档协作,支持版本控制、签入/签出和工作流。支持与 Microsoft Office 深度集成。

表单库

用于存储 XML 文档和表单,供 Microsoft Office InfoPath 使用。

Wiki 页面库

用于基于 Wiki 页面的协作网页,这些网页是动态生成并可协同编辑的网页。

图片库

一种专门的文档库,针对图片使用进行了增强。支持幻灯片放映、缩略图,并通过 Microsoft Office Picture Manager 进行简单编辑。

公告

用于简便地共享及时新闻,支持过期设置。

联系人

用于跟踪人员和联系人信息的列表,支持与 Microsoft Office Outlook 和其他 WSS 兼容的联系人应用程序集成。

讨论

一个简单的列表,用于进行线程讨论,支持审批和管理讨论线程。

链接

用于管理超链接的列表。

日历

用于跟踪即将发生的事件和截止日期的列表。支持与 Office Outlook 的集成和同步。

Tasks(任务)

一项活动项列表,可以与工作流集成。

项目任务

增强的任务列表,支持甘特图渲染和与 Microsoft Office Project 集成。

问题跟踪

用于跟踪问题和解决方案的列表,支持优先级设置。

自定义列表

一个空的列表定义,可用于添加自定义列,或使用 Microsoft Office Excel 电子表格创建。

源代码

本文的顶部附有源代码,其中包含简单的 WebPart、自定义 WebPart 和自定义 WebPart 编辑器。请随意修改并理解这些概念。

上一篇 SharePoint 快速入门 FAQ

  • 快速入门 FAQ 第 1 部分:11 个基本 FAQ 问题,是每个新手必看的。这是基本快速入门 FAQ 教程,介绍了 SharePoint、WSS、MOSS、站点/站点集合、虚拟路径提供程序是什么,然后解释了站点页面和应用程序页面,SharePoint 快速入门 FAQ - 第 1 部分
  • 快速入门 FAQ 第 2 部分:这是本系列的第二部分,解释了现成的功能、自定义页面、部署/激活/停用功能,SharePoint 快速入门 FAQ - 第 2 部分
  • 快速入门 FAQ 第 3 部分:这是本系列的第三部分,我们解释了页面模板、页面实例、WSS 模型,理解安全模式处理,以及部署自定义控件,SharePoint 快速入门 FAQ - 第 3 部分
  • 快速入门 FAQ 第 5 部分:这是 SharePoint 快速入门 FAQ 的第五个系列。在本系列中,主题主要集中在自定义列、内容类型和文档列表库。我相信阅读完这篇文章后,您对 SharePoint 如何组织文档集中化的看法将有所改变,SharePoint 快速入门 FAQ - 第 5 部分
  • 快速入门 FAQ 第 6 部分:这是 SharePoint 快速入门 FAQ 的第六个系列。在本系列中,主题主要集中在 SharePoint 工作流。SharePoint 工作流建立在 Windows 工作流之上,并增加了以内容为中心的工作流功能。因此,我们将首先介绍 Windows 工作流的一些基础知识,然后转向 SharePoint 工作流。最后,我们将了解如何使用 SharePoint Designer 和 Visual Studio 2005 和 2008 创建工作流,SharePoint 快速入门 FAQ - 第 6 部分
© . All rights reserved.