XsltListViewWebPart 和自定义列表视图

上次修改时间: 2015年3月9日

适用范围: SharePoint Foundation 2010

Microsoft SharePoint Foundation 2010 中的新 XsltListViewWebPart 类派生自基于 XSL 的 DataFormWebPart 类。它替代 ListViewWebPart 类成为列表视图中的默认视图类型,但它可为相同的视图设置生成等效的 HTML。类似地,XsltListFormWebPart 类替代 ListFormWebPart 类成为列表项表单中的默认视图类型。与 ListViewWebPart 类不同,XsltListViewWebPart 类使用 XSLT 转换定义 HTML 呈现,而不使用协作应用程序标记语言 (CAML)视图架构的 HTML 呈现元素。通过 XsltListViewWebPart 类应用的 XSLT 文件在每台前端 Web 服务器上进行缓存,这些文件支持所有语言,而不是每个 XSLT 文件只支持一种语言。由于每个 XSLT 文件都进行编译并且使用极少的服务器资源,因此可在 SharePoint Foundation 中提供更大的可伸缩性。此外,XsltListViewWebPart 类使用 ASP.NET AJAX(而不是 CAML 中使用的 IFrame 方法)来执行特殊筛选,通过 XsltListViewWebPart 类应用的 XSLT 转换的输出是 XHTML。无论是在列表视图中还是在项目表单中,XsltListViewWebPart 类和 XSLT 模板均可提供最佳方法来满足 SharePoint Foundation 视图的 ASP.NET AJAX、XHTML 和外部数据要求,并聚合为一种可自定义的视图技术。

在 Microsoft SharePoint Designer 2010 或 Microsoft Visual Studio 2010 中,可通过 SharePoint Foundation 用户界面在浏览器中自定义视图。可在 XsltListViewWebPart 类中实现自定义 XSLT,以定义自定义列表视图。自定义 XSLT 可以只替代默认 XSLT 文件中的某些模板,也可以完全替换这些模板。可将自定义 XSLT 文件部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES 文件夹或 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS 文件夹。使用视图定义中的 XslLink 元素,您可以在 Schema.xml 文件的 <Views> 部分为列表定义指定基于 XSLT 的列表视图。有关 SharePoint Foundation 如何使用 XSLT 模板以及已安装的默认 XSLT 文件的信息,请参阅 XSLT 列表视图呈现系统概述

XsltListViewWebPart 可根据 XML 数据生成列表的 HTML 视图,通过运行在 Web 部件的 XmlDefinition 属性的 Query 元素中定义的查询可获取该 XML 数据。除查询外,XmlDefinition 属性还包含各个视图属性的说明,其中包括要使用哪种基础视图样式(例如,Basic Table 或 Boxed)、要在视图中显示哪些字段、要在单页中显示的数据行数以及在列表的 Schema.xml 文件中指定的其他设置。Schema.xml 文件中的列表定义用作 XSLT 处理器的源节点树,该处理器对架构进行分析以创建 XmlDefinition 属性中包含的结果树。

XmlDefinition 属性的语法基于 ListViewWebPart 类的 SharePoint FoundationListViewXml 属性。XsltListViewWebPart 类使用 XmlDefinition 属性中的查询说明创建一个 SPDataSource 控件并将数据作为 XML 进行检索。然后,该 Web 部件使用列表架构和 XmlDefinition 视图说明等参数对 XML 数据运行 XSLT 转换。XSLT 独立于架构,这表示它可以适应引用列表的架构。您可以添加或移除字段,也可以更改其类型,XSLT 仍会正确呈现视图。XSLT 将会适应 XmlDefinition 属性中指定的视图设置,如视图样式的设置。它使用 <xsl:apply-templates> 按照视图样式和列表架构定义的方式迭代每行数据和每个视图字段。匹配的 XSLT 模板可生成 HTML 输出,该输出随后将被发送至浏览器。有关如何在 XSLT 列表视图中使用 dsQueryResponse XML 来呈现 XML 数据的信息,请参阅 XSLT 转换中的输入和结果节点树示例

当您使用 SharePoint Foundation 用户界面在浏览器中修改视图时,会在其 Web 部件区域内更改 Web 部件的 XmlDefinition 属性的声明性设置。这将导致 Web 部件生成与 SharePoint FoundationListViewWebPart 类等效的 HTML。您可以在 SharePoint Designer 中进一步自定义 Web 部件,无需执行转换步骤,并且不会影响您在浏览器中进行其他更改。Web 部件的 XSLT 将保持不变,并在前端 Web 服务器上的只读位置进行缓存,并可供所有 XsltListViewWebPart 控件重用。您在 SharePoint Designer 中进行的更改会替代缓存的 XSLT,并会写入 Web 部件的 Xsl 属性中。SharePoint Foundation 利用 XSLT 中的导入优先规则和模板匹配行为仅替代指定的模板。这样,您即可对生成的 HTML 进行细致更改,而不影响前端 XSLT 文件,也不必将更改复制到 Web 部件。只有被替代的模板会保存到 Web 部件的 Xsl 属性中。

XsltListViewWebPart 的派生

根据以下层次结构,XsltListViewWebPart 类继承自 DataFormWebPart 类:

Object

  Control

    WebControl

      Panel

        Part

          WebPart

            WebPart

              BaseXsltDataWebPart

                DataFormWebPart

                  BaseXsltListWebPart

                    XsltListViewWebPart

继承的属性

XsltListViewWebPart 类从 DataFormWebPart 类继承许多成员,包括下表中列出的成员。该表指示每个属性的 XML 等效项作为元素还是属性持久存在。

属性名称

XML 持久性

说明

DataSources

元素

可选。指定一个表示 IDataSource 接口的 DataSourceCollection 对象。通常,在呈现视图时,改用 XmlDefinition 属性来合成数据源控件 (SPDataSource)。如果 XsltListViewWebPart 中出现此属性,将引发异常。

ListDisplayName

属性

包含使用本地化的显示名称(如 Announcements)的列表引用。

ListName

属性

包含采用 {GUID} 格式,且语法与等效的 ListViewWebPart 属性相同的列表引用。

ListUrl

属性

包含与网站相关的 URL 格式的列表引用,如 Lists/Announcements。

XmlDefinition

元素

包含一个有效的 View 元素,该元素的语法与 SharePoint FoundationListViewWebPart 类支持的语法相同,但不包括 CAML 呈现标记(请参阅 XMLDefinition 和 CAML 视图架构)。

XmlDefinitionLink

属性

指定对定义 XmlDefinition 属性内容的 XML 文件的 URL 引用。

Xsl

元素

可选。包含一个级联样式表。

XslLink

元素

可选。包含一个 URL,它指定要用于转换的 XSLT 文件。

必须存在一个 List* 属性(ListNameListUrlListDisplayName),并且必须指定对有效列表的引用。如果存在多个属性,则评估顺序依次为 ListName、ListUrl 和 ListDisplayName。

如果存在一个 XmlDefinition* 属性(XmlDefinitionXmlDefinitionLink),该属性必须生成有效的 View 元素。否则,将改用默认列表视图中的视图定义(即,Schema.xml 中的视图定义)。如果存在多个属性,则先评估 XmlDefinitionLink,然后评估 XmlDefinition。

对于 DataFormWebPart 类的 Xsl 属性和 XslLink 属性,评估顺序是先评估 XslLink,再评估 XSL。如果未指定 XSL 和 XslLink,将使用 Schema.xmlView 元素引用的 XSLT 文件进行转换。如果存在 XSL 或 XslLink 属性,则表示已在 SharePoint Designer 中自定义了视图,以替代未自定义的、缓存的默认 XSLT。绝不要通过 SharePoint Foundation 用户界面修改 XSL 属性,而只能在执行明确的格式设置操作时通过 SharePoint Designer 修改该属性(与查询修改相反)。例如,SharePoint Designer 中的条件格式要求更新 XSL 的内容,但添加或移除列时则无此要求。

XsltListViewWebPart 类的 GetDataSource() 方法替代 DataFormWebPart 类的 GetDataSource() 方法。XsltListViewWebPart 类先解析列表引用,然后根据 XmlDefinition 属性的内容创建数据源控件 (SPDataSource)。

请参阅

概念

XSLT 列表视图呈现系统概述

XSLT 转换中的输入和结果节点树示例

XMLDefinition 和 CAML 视图架构

如何:自定义列表视图中字段的呈现方式

如何:在自定义列表视图中实现资源