SharePoint 级联下拉列表到 multi-select 字段,过滤器更改时保留选择
SharePoint cascading dropdown to multi-select field, retaining selections when filter changes
我按照此处列出的 jquery 的级联下拉列表进行操作:https://www.c-sharpcorner.com/blogs/cascading-dropdownlist-in-sharepoint,它工作正常。 child 条目是一个 multi-select 字段。当您更改 parent 字段时,它会将 child 列表重置为适用的 children.
Parent: 标题中有品牌的制造商
Child:每个品牌的产品列表。产品列为带有 BrandLookUp 字段的标题。
更新: 一些 Child 提要被多次列出,因为它们与多年相关联。即使每个 child 的 ID 不同,我只需要为列表的这一部分保留 child 标题字段(项目)。 IE。
-ID - 品牌 - 商品 - 年份
-1 - XYZ - A - 21
-2 - XYZ - A - 22
-3 - ABC - B
-4 - WXY - C
我想弄清楚如何修改代码以在填充 child 列表时仅显示唯一的项目名称。
更新 2: 我意识到虽然有代码解决方案,但我也可以通过重构数据来修复它。我将年份字段更改为 multi-value 并添加了多个年份,然后删除了重复的条目。过滤器字段有效并提取正确年份的项目。
检查了链接代码。我没有测试的环境,但这是我的建议。
仅将新产品附加到子项。永远不要调用 $(child).empty();
。添加 option
到子select或select其中的选项并调用$(childOptions).hide();
将它们全部隐藏。
var childOptions = $("................. option");
childOptions.hide();
更换品牌时,首先检查其产品是否已在列表中。更好的是,保留一系列已添加到子项中的品牌产品,无论是否可见。如果它们在列表中,请不要再次添加它们。当您要将新产品添加到 select 时,请将 data-brand
属性添加到选项,以便稍后过滤它们。
for (index in data.d.results) {
options += "<option value='" + data.d.results[index].Id + "' data-brand='" + brandName + "'>" +
data.d.results[index][params.childLookupField] + "</option>";
}
$(child).append(options);
Select当前品牌的产品选项并显示出来,类似$("option[data-brand='ACME']").show()
;
我按照此处列出的 jquery 的级联下拉列表进行操作:https://www.c-sharpcorner.com/blogs/cascading-dropdownlist-in-sharepoint,它工作正常。 child 条目是一个 multi-select 字段。当您更改 parent 字段时,它会将 child 列表重置为适用的 children.
Parent: 标题中有品牌的制造商
Child:每个品牌的产品列表。产品列为带有 BrandLookUp 字段的标题。
更新: 一些 Child 提要被多次列出,因为它们与多年相关联。即使每个 child 的 ID 不同,我只需要为列表的这一部分保留 child 标题字段(项目)。 IE。
-ID - 品牌 - 商品 - 年份
-1 - XYZ - A - 21
-2 - XYZ - A - 22
-3 - ABC - B
-4 - WXY - C
我想弄清楚如何修改代码以在填充 child 列表时仅显示唯一的项目名称。
更新 2: 我意识到虽然有代码解决方案,但我也可以通过重构数据来修复它。我将年份字段更改为 multi-value 并添加了多个年份,然后删除了重复的条目。过滤器字段有效并提取正确年份的项目。
检查了链接代码。我没有测试的环境,但这是我的建议。
仅将新产品附加到子项。永远不要调用
$(child).empty();
。添加option
到子select或select其中的选项并调用$(childOptions).hide();
将它们全部隐藏。var childOptions = $("................. option"); childOptions.hide();
更换品牌时,首先检查其产品是否已在列表中。更好的是,保留一系列已添加到子项中的品牌产品,无论是否可见。如果它们在列表中,请不要再次添加它们。当您要将新产品添加到 select 时,请将
data-brand
属性添加到选项,以便稍后过滤它们。for (index in data.d.results) { options += "<option value='" + data.d.results[index].Id + "' data-brand='" + brandName + "'>" + data.d.results[index][params.childLookupField] + "</option>"; } $(child).append(options);
Select当前品牌的产品选项并显示出来,类似
$("option[data-brand='ACME']").show()
;