Sharepoint 基于行的动态列

Sharepoint 基于行的动态列,sharepoint,list,dynamic,Sharepoint,List,Dynamic,我所做的可能真的很愚蠢,如果是,请纠正我,但我正在尝试做以下事情: 我想要一个包含(例如)以下项目的列表: List Addresses -Name -Address -City -Country 但是,基于他们的国家,我想在列表中显示我想记录的不同列。例如: CountryColumns (United States - SSN - Yes) (United States - State - Yes) (United States - Province - No) (United Kin

我所做的可能真的很愚蠢,如果是,请纠正我,但我正在尝试做以下事情:

我想要一个包含(例如)以下项目的列表:

List Addresses

-Name
-Address
-City
-Country
但是,基于他们的国家,我想在列表中显示我想记录的不同列。例如:

CountryColumns

(United States - SSN - Yes)
(United States - State - Yes)
(United States - Province - No)
(United Kingdom - SSN - No)
(United Kingdom - State - No)
(United Kingdom - Province - Yes)
然后,当用户在国家列表中选择美国时,下次用户编辑其信息时,将显示某些列。(也有可能显示所有列,并且下次不显示的列将被隐藏)

我已经研究了实现这一点的方法,但我只发现Infopath能够做到这一点。但是,这意味着我必须为每个国家创建不同的视图,并显示/隐藏某些列。这似乎有点过分了

有人知道怎么做吗

您好


Mats

您不能开箱即用。

您可以通过四种方式修改SharePoint来实现这一点

  • 有一个列表地址内容类型,然后为每个需要额外字段的国家/地区提供一个单独的内容类型。使用Web部件使用正确的国家/地区内容类型将数据输入列表

  • 与上面相同,但您可以使用“基址”内容类型将数据添加到列表中,而不是通过web部件输入数据。使用项目添加事件接收器来决定将数据添加到哪个内容类型

  • 使用一种超级内容类型,该类型包括所有字段,但具有自定义列表视图页面,以根据county值筛选字段

  • 如果未选择所需的国家/地区,请将infopath与每个国家/地区的单独视图或每个特殊字段的一个部分一起使用,并附带一个隐藏该字段的条件


  • 就我个人而言,我推荐4种。这是最简单、最快的实现方式。

    这里有三个选项:

  • 自定义内容类型。这可能是最简单的方法。您可以为每个国家/地区创建内容类型,然后控制该内容类型中包含哪些字段。这样做的明显缺点是,最终可能会创建大量内容类型,而且选择内容类型(尤其是在创建新项目时)与从下拉列表中选择不同
  • Javascript/jQuery。通过更改母版页或在编辑表单中添加内容编辑器Web部件,可以使用javascript根据选定的国家/地区值隐藏某些字段
  • 自定义字段。这是最复杂的,但您可以创建一个自定义字段,该字段继承自并基于选定的国家/地区值管理其渲染可见性,而不是让SSN字段成为常规的单行文本字段

  • 那么,我该如何通过一些可编程的解决方案来实现这一点呢?我真的不介意开发网页部件或自定义列表,不管它值多少钱。如果我能在某种程度上完成这件事,那真的会很有帮助。当然,有两种选择。最简单的方法是创建一个自定义Web部件来输入/更新listitems。这样,您就可以完全控制渲染的方式。你也可以替换新的/编辑的列表,谷歌搜索可以帮助你开始。第一个似乎是要走的路。从那时起,我就可以保持相同的UI和相同的列表,甚至可以重用它们。我甚至不知道在一个列表中添加两种不同的内容类型是可能的,但这太棒了!我将尝试一下,并将结果发布在这里。!要在每个内容类型中保存复制列,请确定哪些列是“核心”。我的意思是,无论哪个国家都需要列。构建内容类型以包含这些内容。当您进一步创建特定于国家/地区的内容类型时,请告诉他们从您的“核心”内容类型继承。这就意味着他们会马上把你所有的基本专栏都写下来。这有很多好处。特别是如果您以后需要添加额外的地址列,您可以这样做到“核心”内容类型,然后所有子国家/地区内容类型也可以自动获得新的列。好的。我现在有了一个不同的想法。它基于您的ID。但是,我正在添加一个自定义列表,其中包含两个值:国家(这是一个查找字段)和要求。需求将添加到文本字段或选择菜单中,背景代码根据列表中的行添加内容类型。看起来真的很方便。我喜欢Sharepoint 2010。