0

我使用 SPServices.SPCascadeDropdowns 将自定义 NewForm 中的两个查找字段链接到自定义列表。

我想要做的是提供一个选项来创建一个基于当前创建的项目的新项目,并且我拥有上一个项目的所有值,但是我很难设置正在使用的查找字段的值SPCascadeDropdowns 到给定值。

我发现我可以使用以下内容来更改字段的值:

$("select[title='ParentLookupField']").val(prevParentLookupFieldValue);
$("select[title='ChildLookupField']").val(prevChildLookupFieldValue);

这似乎适用于 SPCascadeDropdowns 的父列,但即使它更改了值,它似乎也不会触发 SPCascadeDropdowns 的更改,因为子列不会根据父项的更改进行更新。

例子:

$().SPServices.SPCascadeDropdowns({
        relationshipList: "ChildList",

        relationshipListParentColumn: "ParentValue",
        relationshipListChildColumn: "Title",

        parentColumn: "ParentLookupField",
        childColumn: "ChildLookupField",

        simpleChild: true,

        completefunc: function () {
                $("select").each(function (index, item) {
                    var title = item.title;
                    if (title === ""ParentLookupField"," || title === ""ChildLookupField",") {
                        $(item).find("option").each(function (index, item) {
                            var text = $(item).text();
                            if (text === "(None)") {
                                $(item).remove();
                            }
                        });
                    }
                });
            }
        });

$("select[title='ParentLookupField']").val(prevParentLookupFieldValue);
$("select[title='ChildLookupField']").val(prevChildLookupFieldValue);

那么,如何使用 SPCascadeDropdowns 设置查找字段的初始值并使 SPCascadeDropdowns 触发子字段的更改?

4

1 回答 1

0

这取决于如何将 on change 注册到下拉列表中。

如果您使用 $control.val(new value) 设置它的值,您可能需要手动调用更改事件。

我使用它在任何浏览器上安全地触发 onchange 事件:

//I have a utility class called KWizComCascadingLookup defined earlier
KWizComCascadingLookup.FireEvent = function (elm, event) {
    if ("createEvent" in document) {
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, false, true);
        elm.dispatchEvent(evt);
    }
    else
        elm.fireEvent("on" + event);
}

我这样称呼它:

KWizComCascadingLookup.FireEvent(elm, "change");

现在应该调用您的事件。奇怪的是 jQuery .val() 虽然没有调用它......

另外 - 不确定您是否感兴趣,我们正处于 O365 应用商店中功能齐全的级联查找字段的最后测试阶段,我们也有一个完全信任的产品。

如果您有兴趣,可以从我们在 kwizcom dot com 的销售中获得更多信息。

谢谢, Shai Petel SharePoint MVP 研发副总裁 KWizCom Corp. www.kwizcom.com

于 2013-09-10T14:17:21.583 回答