0

SPServices.SPCascadeDropdowns を使用して、カスタム リストのカスタム NewForm で 2 つのルックアップ フィールドをリンクします。

私がやりたいことは、現在作成されているアイテムに基づいて新しいアイテムを作成するオプションを提供することです.以前のアイテムのすべての値が利用可能ですが、使用しているルックアップフィールドの値を設定するのに苦労しています.特定の値への 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

それは、変更がドロップダウンにどのように登録されるかによって異なります。

$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 R&D VP KWizCom Corp. www.kwizcom.com

于 2013-09-10T14:17:21.583 に答える