我有三个SharePoint 2016列表:
组按部门排序,部门按组织排序。
每个列表中的标题字段用于组,org或dept的名称,每个列表中都有一个下拉列表,用于选择相应项目的父项。
在我的一个表单中,用户应该选择拥有特定软件标题的组织,部门和组。我正在尝试使用SPServices.SPCascadeDropdowns来仅显示所选组织的部门,但它根本没有做任何事情。
表单中的相关字段为:
<td valign="top" class="ms-formlabel">
<H3 class="ms-standardheader">
<nobr>Organization<span class="ms-formvalidation"> *</span></nobr>
</H3>
</td>
<td valign="top" class="ms-formbody">
<SharePoint:FormField runat="server" id="ff9{$Pos}" ControlMode="New"
FieldName="Organization"
__designer:bind="{ddwrt:DataBind('i',concat('ff9',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Organization')}"/>
<SharePoint:FieldDescription runat="server" id="ff9description{$Pos}" FieldName="Organization" ControlMode="New"/>
</td>
<td valign="top" class="ms-formlabel">
<H3 class="ms-standardheader">
<nobr>Department<span class="ms-formvalidation"> *</span></nobr>
</H3>
</td>
<td valign="top" class="ms-formbody">
<SharePoint:FormField runat="server" id="ff10{$Pos}" ControlMode="New"
FieldName="Department"
__designer:bind="{ddwrt:DataBind('i',concat('ff10',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Department')}"/>
<SharePoint:FieldDescription runat="server" id="ff10description{$Pos}" FieldName="Department" ControlMode="New"/>
</td>
我正在使用的Javascript是:
$(document).ready(function(){
$().SPServices.SPCascadeDropdowns({
relationshipList: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
relationshipListParentColumn: "Organization",
relationshipListChildColumn: "Title",
parentColumn: "Organization",
childColumn: "Department",
debug: true
});
});
我已经加载了jQuery 3.2.1和jQuery.SPServices-2014.02.min.js。我在Chrome控制台中没有出现任何错误,它根本就没有做任何事情。如果我在$()。SPServices上休息一下,它确实打了,所以我知道它被调用了。知道我做错了吗?
答案 0 :(得分:1)
考虑到你没有提供你的数据结构,我带来了我的;)
使用此PowerShell脚本在特定网站集中创建结构:
$web = get-spweb <YOUR URL>
$template = $web.ListTemplates | where name -eq 'Custom List'
$organizationsListId = $web.Lists.Add("Organizations", "", $template)
$departmentsListId = $web.Lists.Add("Departments", "", $template)
$groupsListId = $web.Lists.Add("Groups", "", $template)
$organizationsLookup = $web.Fields.AddLookup("OrganizationsLookup", $organizationsListId, $false)
$departmentsLookup = $web.Fields.AddLookup("DepartmentsLookup", $departmentsListId, $false)
$organizations = $web.Lists[$organizationsListId]
$departments = $web.Lists[$departmentsListId]
$groups = $web.Lists[$groupsListId]
$departments.Fields.Add($web.Fields.GetFieldByInternalName("OrganizationsLookup"))
$groups.Fields.Add($web.Fields.GetFieldByInternalName("DepartmentsLookup"))
$groups.Fields.Add($web.Fields.GetFieldByInternalName("OrganizationsLookup"))
$organizationsLookupInList = $departments.Fields.GetFieldByInternalName("OrganizationsLookup");
$organizationsLookupInList.LookupField = "Title"
$organizationsLookupInList.Update()
$departmentsLookupInList = $groups.Fields.GetFieldByInternalName("DepartmentsLookup");
$departmentsLookupInList.LookupField = "Title"
$departmentsLookupInList.Update()
$organizationsLookupInList1 = $groups.Fields.GetFieldByInternalName("OrganizationsLookup");
$organizationsLookupInList1.LookupField = "Title"
$organizationsLookupInList1.Update()
function AddListItem($list, $title)
{
$itm = $list.AddItem()
$itm["Title"] = $title
$itm.Update()
return $itm
}
function AddListItemDepartments($list, $title, $lookupIdOrg)
{
$itm = AddListItem $list $title
$itm["OrganizationsLookup"] = $lookupIdOrg
$itm.Update();
return $itm
}
function AddListItemGroups($list, $title, $lookupIdOrg, $lookupIdDep)
{
$itm = AddListItemDepartments $list $title $lookupIdOrg
$itm["DepartmentsLookup"] = $lookupIdDep
$itm.Update();
return $itm
}
$org1Id = (AddListItem $organizations "AAA NET").ID
$org2Id = (AddListItem $organizations "BBB NET").ID
$org3Id = (AddListItem $organizations "CCC NET").ID
$org4Id = (AddListItem $organizations "DDD NET").ID
$dep1Id = (AddListItemDepartments $departments "Finance" $org1Id).ID
$dep2Id = (AddListItemDepartments $departments "IT" $org1Id).ID
$dep3Id = (AddListItemDepartments $departments "Finance" $org2Id).ID
$dep4Id = (AddListItemDepartments $departments "Social" $org2Id).ID
$dep5Id = (AddListItemDepartments $departments "Fun" $org2Id).ID
$dep6Id = (AddListItemDepartments $departments "Sport" $org2Id).ID
$dep7Id = (AddListItemDepartments $departments "Knowledge" $org3Id).ID
$dep8Id = (AddListItemDepartments $departments "Sport" $org3Id).ID
下一步:
编辑xsltlistviewformwebpart,将jquery和spservices附加到JSLink
属性
即:
~site/siteassets/jquery-3.2.1.min.js | ~site/siteassets/jquery.SPServices-2014.02.min.js
将CEWP添加到页面,将其移动到webpart下面并插入您的js级联下拉列表代码:
代码(见评论)
$(document).ready(function(){
$().SPServices.SPCascadeDropdowns({
relationshipList: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", // Your departments list id
relationshipListParentColumn: "OrganizationsLookup",
relationshipListChildColumn: "Title",
parentColumn: "OrganizationsLookup",
childColumn: "DepartmentsLookup",
debug: true
});
});
这应该有效(也可以使用jquery 3.2.1)
答案 1 :(得分:0)
看起来问题是因为您使用的是jQuery 3.2.1
。
根据文档,建议您使用jQuery 1.10 or greater
。
建议您删除3.2.1
版本,然后使用1.12
版本,然后检查。
参考 -
SPServices General documentation
下载jQuery的链接 - jQuery.min.js