代码之家  ›  专栏  ›  技术社区  ›  Janis Veinbergs

管理内容类型的视图(或将视图添加到多个列表)

  •  3
  • Janis Veinbergs  · 技术社区  · 14 年前

    我很惊讶在网上找不到一个可以管理内容类型视图的解决方案。我真的需要用浏览器访问每个任务列表来添加/修改视图吗?

    是否有任何可用的解决方案允许我为内容类型定义一个视图,从而使该视图在内容类型所在的所有列表上都可用?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Grace Note    14 年前

    直接说来, 无法将视图分配给内容类型。列表是保存实际视图集合的内容,以及使用它创建的相应ASPX页。视图与其列表也存在依赖关系:不能有与列表没有关联的视图。也没有将内容类型添加到列表中的“事件处理程序”,因此当您将内容类型添加到列表中时,您将无法进行自动处理(无论如何,这会很麻烦,因为您首先必须将事件处理程序附加到列表中!).

    不过,这并不是说你必须在用户界面中手动处理以完成任务。 在自定义代码工作流中使用对象模型,可以在整个SPWeb中进行扫描,并在具有指定内容类型的每个列表上创建一个新视图。您所需要的只是一个具有单个代码活动的工作流,该活动在spweb.lists中的所有splist中迭代,并检查该splist是否具有与目标内容类型同名的内容类型。如果是这样,请使用所需的参数创建一个新的SPVIEW。因为您不能简单地创建一个spview并克隆它,因为spview必须与一个列表相关联,而克隆一个spview只需将它克隆到同一个列表中,所以您必须在每个循环中运行整个spview创建过程。但是你只需要写一次,系统必须运行多次。天哪,这肯定会比你在用户界面上跳舞几个小时更有成效。

    只要在需要重新声明该SPView存在的任何时候运行工作流即可。