Dynamic CRM  - Xrm.Navigation.navigateTo
I would be using navigateTo here in this blog to launch
a webresource. 
JavaScript which is used to launch
webresource and pass parameters.
function launchContactWebResource()
{
debugger;
var selectedRow = Xrm.Page.getControl("contactgrid").getGrid().getSelectedRows();
var selectedRecordId =
selectedRow.getAll()[0].getData().getEntity().getId().replace('{', "").replace('}', "");
var selectedRecordName =
selectedRow.getAll()[0].getData().getEntity().getPrimaryAttributeValue();
var selectedContact =
{
    ContactName: selectedRecordName,
    ContactId:
selectedRecordId
};
var pageInput = {
    pageType: "webresource",
    webresourceName: "hel_/html/contact/ShowContacts",  // Web-Resource Schema name 
    data:
JSON.stringify(selectedContact)   
};
var navigationOptions = {
    target: 2,
width: 400,
height: 400,
    position: 1    
};
window.parent.Xrm.Navigation.navigateTo(pageInput,
navigationOptions).then(
    function success() {
        // Run code on success         
    },
    function error(error) {
       
window.parent.Xrm.Utility.alertDialog(error.message);
    }
);
}
Web-Resource Code to
fetch and Display Parameters.
<html>
<head>
<script type="text/javascript">
          
    function onload()
    {
       
GetSelectedRecord();               
    }
           
    function GetSelectedRecord()
    {
        debugger;
        var id = "";
        var name = "";
        if (location.search != null) {
            if (location.search.split("=")[1] != null) {
                id =
JSON.parse(decodeURIComponent(location.search.split("=")[1]))["ContactId"];
                name =
JSON.parse(decodeURIComponent(location.search.split("=")[1]))["ContactName"];
            }
        }
        var table = document.getElementById("tblOrgActivity");
        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);
       
row.insertCell(0).innerHTML = id;
       
row.insertCell(0).innerHTML = name;
    }       
    </script>
</head>
<body onload="baseContacts.onload()">
    <div id="mydata">
        <div>
            <table id="tblOrgActivity" border="1">                
                <tr>
                    <td>Name</td>
                    <td>ID</td>
                </tr>
            </table>
        </div>
    </div>
</body>
</html>
Launch Web-Resource
in Adjacent TAB
var navigationOptions = {
    target: 2,
width: { value: 50, unit: "%" },
    position: 2    
};
Generic Method to retrieve parameters
var entityId =
getUrlVars()["entityId"];
var entityName =
getUrlVars()["entitytypename"];
// Read a page's GET URL variables and
return them as an associative array.
function getUrlVars()
{
    var vars
= [], hash;
    var hashes
= unescape(window.location.search.replace('?', ''));
    hashes =
hashes.replace('Data=', '').replace('data=', '').split(',');
    for (var i =
0; i < hashes.length; i++)
    {
        hash
= hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]]
= hash[1];
    }
    return vars;
}

1 comment:
It works well :)
Post a Comment