Visio Services ECMAScript API 中的对象

上次修改时间: 2013年12月3日

适用范围: SharePoint Server 2010

本文内容
VwaControl 对象
页面对象
ShapeCollection 对象
形状对象

Visio ServicesJavaScript API 仅包含四个对象及其各自的成员:

此外,Visio ServicesJavaScript API 还包含四个枚举:

VwaControl 对象

VwaControl 对象表示 Visio Web Access Web 部件的实例。通过使用 VwaControl 对象的方法,您可访问与 Web 部件以及 Web 部件中呈现的 Visio 绘图有关的信息。另外,通过使用这些方法,您可执行多种操作,例如,在 Web 部件中打开 Visio 文档,获取和设置所显示的活动页,添加或删除事件处理程序,以及显示或隐藏自定义消息。

在 JavaScript 代码中,您可通过向 ASP.NET AJAXSys.Application 类的 load 事件中添加一个处理程序,获取对 VwaControl 对象的引用。在实现该处理程序的函数中,您可通过将要承载该对象的 Visio Web Access Web 部件的 HTML 标识符 (ID) 传入到该对象,从而对其进行初始化。您可通过检查承载 Web 部件的 HTML 页的源代码并搜索短语 class="VisioWebAccess",从而获取该 ID。该 ID 的格式为"WebPartWPQ#",其中 # 表示 Web 部件的标识号。以下代码示例演示如何实现此操作。假设您已确定 Web 部件的 ID 为 WebPartWPQ3,且您已打开一个在 Web 部件中作为 .vdw 文件发布的 Visio 绘图。以下代码中对此进行了演示。

Sys.Application.add_load(onApplicationLoad)

var webPartElementID = "WebPartWPQ3";
var vwaControl;

function onApplicationLoad() {
        try{
                vwaControl= new Vwa.VwaControl(webPartElementID)
                vwaControl.addHandler("diagramcomplete", onDiagramComplete);
        }
        catch(err){
        }
}

当您获取对 VwaControl 对象的实例的引用后,可使用其 openDiagram 方法,基于已发布的 Visio .vdw 文件在 Visio Web Access Web 部件中打开一个新的图表。然而,在您调用 openDiagram 方法之后,您将无法对 VwaControl 的相同实例或 Vwa 命名空间中的任何其他对象的进行寻址。这是因为,openDiagram 方法是一个异步操作,它将在服务器上打开图表然后立即返回。另外,该异步操作还能使当前的 VwaControl 对象无效。有关详细信息,请参阅 openDiagram

在调用 openDiagram 之后进行后续操作的最佳方法是为 diagramcomplete(其在 Visio Web Access Web 部件已完成加载 Visio 图表时出现)创建一个处理程序,并将您的代码放入该事件处理程序中。您可使用 addHandler 来为 diagramcomplete 事件添加一个事件处理程序。最佳做法是通过编写这些事件处理程序以对控件中的用户操作所引发的事件进行响应,从而对 VwaControl 对象进行编程。其他由 VwaControl 对象公开的事件包括 shapemouseentershapemouseleaveshapeselectionchanged,您可以利用这些事件来响应用户鼠标操作;此外,还包括使您能够响应 SharePoint Server 2010 所返回的错误的 diagramerror

在 diagramcomplete 事件的处理程序中,您可获取对由 API 公开的其他对象(包括 Page 对象和 Shape 对象以及 ShapeCollection 集合)的引用。在同一个处理程序中,您还可创建针对其他事件的处理程序,如以下代码示例中所示。

function onDiagramComplete() {
        try {
                vwaPage = vwaControl.getActivePage();
                vwaShapes = vwaPage.getShapes();
                vwaShape = vwaShapes.getItemAtIndex(0);
                vwaControl.addHandler("shapeselectionchanged", onShapeSelectionChanged);
        }
        catch(err) {
        }
}

本代码示例演示如何完成以下编程任务:

  • 如何使用 getActivePage 以获取对表示活动页的 Page 对象的示例的引用

  • 如何使用 Page 对象的 getShapes 以获取表示活动页上的形状集合的 ShapeCollection 集合的实例。

  • 如何使用该集合的 getItemAtIndex 以获取活动页上形状集合中的第一个形状的实例

  • 如何为 shapeselectionchanged 事件添加一个处理程序

若要获取有关在 Web 部件中显示的绘图的详细信息,您可使用 VwaControl 对象的几个方法。例如,可使用 getAllPageIds 来获取图表中所包含的所有页面的名称;使用 getDiagramUrl 来获取在 Web 部件中当前所显示的图表的 URL;以及使用 getDisplayMode 来通过光栅技术或 Microsoft Silverlight 技术来确定是否显示当前 Web 绘图页。还可使用 getVersion 来获取 Web 部件的版本。

可使用 removeHandler 来删除您所添加的某个事件处理程序,并使用 clearHandlers 来删除所有处理程序。若要显示并隐藏自定义 HTML 错误消息页,应使用 displayCustomMessagehideCustomMessage。您还可使用 setActivePage 来更改当前在 Web 部件中所显示的页面,以及使用 refreshDiagram 来利用服务器中的数据刷新当前的 Web 绘图页。

页面对象

Page 对象表示在 Visio Web Access Web 部件的显示区域中当前显示的活动 Web 绘图页。您可使用 Page 对象的方法来选择页面上的形状,并访问有关形状的信息,包括形状 ID、形状位置以及形状周围边界框的大小。您还可获取和设置页面在视图中的缩放级别和位置。

Page 对象的方法包括:

  • 除了前面的代码示例中所演示的 getShapes 方法,您还可以使用 getSelectedShapesetSelectedShapecenterViewOnShapeisShapeInView 来访问有关页面上的形状的信息,并与这些形状进行交互。

  • 可以使用 getZoom 来获取页面的缩放级别,并且可以使用 setZoom 来设置页面的缩放级别。

  • 可以使用 getPosition 来获取页面在视图中的位置,并且可以使用 setPosition 来设置页面在视图中的位置。

  • 可以使用 getId 来获取当前所显示页面的 ID,并且可以使用 getSize 来获取所呈现页面的高度和宽度。

ShapeCollection 对象

ShapeCollection 对象表示 Visio Web Access Web 部件的呈现区域中当前所显示的 Web 绘图中的活动页上的形状对象集合。

ShapeCollection 对象的方法包括:

  • getCount 方法,用于返回活动页上的形状数。

  • 使您能够获取集合中特定形状的四种方法:通过该形状的 Visio 形状名称 (getItemByName)、通过该形状的 Web 绘图形状 ID (getItemById)、通过该形状的 Visio 唯一 ID (getItemByGUID),以及通过该形状在集合中的索引位置 (getItemAtIndex)。

形状对象

Shape 对象表示活动 Web 绘图页上的单一形状。利用 Shape 对象的方法,您可获取有关活动页上某个特定形状的信息并与之交互:

  • 提供形状信息的方法包括:用于返回 Visio 中形状的名称的 getName;用于返回 Web 绘图中形状的 ID 的 getId;用于返回 Visio 中形状的 GUID 的 getGUID;用于返回与形状关联的任何超链接的数组的 getHyperlinks;用于返回形状的边界框的位置、高度和宽度的 getBounds;以及用于返回与形状关联的任何形状数据项的数组的 getShapeData

  • 允许您与形状交互的方法包括 addHighlightremoveHighlight(允许您添加和删除与形状关联的突出显示)以及 addOverlayaddPredefinedOverlayremoveOverlay(允许您添加和删除可视的形状覆盖)。