以SharePoint列表形式生成动态列表列字段

问题描述 投票:0回答:2

我们已经使用SharePoint Designer创建了一个自定义列表表单,现在需求如下:

用户将使用此表单请求创建服务器,现在服务器可以是用户可以从下拉菜单中选择的任何类型,例如生产,阶段,测试或需要多个生产服务器。对于每种服务器类型,用户都需要填写20-25个字段,以获取该服务器的详细信息。因此,我想知道实现此目标的最佳方法,因为我们无法在此列表中创建200-250个列表列,并且在用户提交请求时滚动也是一项艰巨的任务。那么达到此要求的最佳方法是什么?

enter image description here

list sharepoint sharepoint-2013 sharepoint-online sharepoint-designer
2个回答
1
投票

您可以创建一个包含所有服务器类型的列表,这些列表将用于创建服务器类型查找。然后,您可以使用“服务器类型”列和“服务器要求”(多行文本)列创建一个列表。您可以将特定服务器的所有要求存储为JSON对象,例如:]

{"RAM":"8GB", "CPU":"4"}

或者您可以为每种服务器类型创建一个嵌套的JSON对象,例如

{"ServerType": "Staging", "Requirements": {"RAM":"8GB", "CPU":"4"}}

无论您想显示/发送/填充数据的地方,只需要检索此json并进行解析即可。希望这可以帮助。


0
投票

首先,我认为推荐的方法是尝试OOTB SharePoint解决方案,在您的情况下,我认为您可以尝试使用ContentTypes和OOTB列表表单。

假设您为每种服务器类型创建一个内容类型。对于每种类型,仅添加与该服务器类型相对应的20-25个字段。然后在高级设置的列表设置中,打开内容类型管理,然后将内容类型添加到列表中(还隐藏默认的Element内容类型)。之后,当用户要向列表中添加新项目时,他将可以在内容类型(在您的情况下为服务器类型)之间进行选择,然后,表单将仅具有添加到该内容类型的字段。同样,以编辑形式,用户将能够在内容类型之间进行选择,并且只会看到相应的字段。请查看附件的屏幕,以了解我在一个非常简单的情况下的意思:

列表

  • ContentType1(ColumnA)
  • ContentType2(ColumnB,ColumnC)

enter image description here


enter image description here


enter image description here


如果此OOTB功能还不够,并且您已经使用SharePoint Designer创建了自定义表单,enter image description here然后,您应该能够将自定义javascript文件附加到它和jQuery库。您可以将JavaScript存储在服务器上的_layouts路径下。表单中的每个字段都有自己的tr(行),您可以在每一行上附加一些自定义的CSS类,例如-

class="forServerProd allFields"
,然后在js中,您可以侦听列表的onChange事件并显示或隐藏字段与
$(".allFields").css('dispaly','none'); // first hide all
$(".forServerProd ").css('dispaly','table-row'); // then show only relevant 
© www.soinside.com 2019 - 2024. All rights reserved.