使用 Xrm.Navigation.openWebResource() 后如何从 Web 资源中取回表单数据

How to get back form data from Web resource after using Xrm.Navigation.openWebResource()

我有一个 Web 资源,单击按钮即可打开,如下所示:

var windowOptions = { height: 400, width: 50 };
Xrm.Navigation.openWebResource("DCWIMS_/html/datepicker.html", windowOptions);

我在 html 网络资源中有一个小输入字段(您可以猜到,它是一个日期时间字段)。我的问题是,表单关闭后如何获取字段数据?我从函数

中调用了上面的代码

function Cancel() {

   
    var contract_id = Xrm.Page.data.entity.getId();
    var contract_guid = contract_id.replace(/[{}]/g, "");
    
    var windowOptions = { height: 400, width: 50 };
    Xrm.Navigation.openWebResource("DCWIMS_/html/datepicker.html", windowOptions);

    //need field data to be returned so I can set a field in the form to its value
    var datefield = ??

    formContext.getAttribute("new_cancellationdate").setValue(datefield);


    //Set the stage to send enquiry letter
    XrmSvcToolkit.setState({
        id: Xrm.Page.data.entity.getId(),
        entityName: "new_contract",
        stateCode: 1,
        statusCode: 100000002, //Cancelled
        async: false
    });
    
    }

这是 html 网络资源:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
    <title>Set Cancellation Date</title>

    <script>

        

        

        window.onload = function () {
            document.getElementById('party-time').onsubmit = function () {

                var date = document.getElementById('party-time').value;
                webResourceData.windowCallback(date);

                // You must return false to prevent the default form behavior
                return false;
            };
        };

        function Quit() {
            window.close();
        }

        


    </script>
</head>

<body>

    
 
  <fieldset>
    <legend>Cancellation Date</legend>

    <div>
        <label for="party-time">Date/time:</label>
        <input type="datetime-local" id="party-time"
               name="party-time" value=""
               min="" max="" />
        <button type="submit" onclick="Quit()">Submit </button>
    </div>


</fieldset>
 
 
</body>
</html>

试试这个。不要将值从 webresource 返回给父 window,而是从 HTML 本身分配它。

    function Quit() {
            window.opener.Xrm.Page.getAttribute("new_cancellationdate").setValue(document.getElementById('party-time').value);

            window.close();
    }