如何将软编码元素传递给 crm 网络资源脚本

how to pass softcoded element to crm web resource script

我在将元素名称传递到 Dyanamics CRM Web 资源 javacript 时遇到问题。

此代码有效:

function OnFormLoad()
    {
        var subGrid = window.parent.document.getElementById("Claims")
        // do work 
    }

此代码不会:

function OnFormLoad(GridName)
    {
        var subGrid = window.parent.document.getElementById(GridName)
        // do work 
    }

如何传入要使用的元素的名称?

请避免在 Dynamics 中使用 document.getElementById,因为它不受支持。

我相信您正在尝试获取 GridContext 并从该网格获取数据。

例如,在客户实体中,我们将联系人作为网格,然后您希望从该网格获取数据。

我在帐户实体 (OnLoad) 上复制了相同的内容,并尝试从联系人网格中获取数据。

添加 OnLoad 事件时,我已将网格名称作为参数传递,如下所示。

我在帐户实体的下方添加了 onLoad Js,并且能够从网格中检索数据。

注意:我添加了超时,因为直接触发 onload 无法加载完整页面,然后网格名称不可用。

function onLoad(executionContext,gridName){

setTimeout(function(){ getGridDatat(executionContext,gridName); }, 3000);


}

function getGridDatat(executionContext,gridName){
    debugger
var formContext = executionContext.getFormContext();

    var gridContext = formContext.getControl("Contacts"); // get the grid context
    var myRows = gridContext.getGrid().getRows();
/*var myRow = myRows.get(arg);
var gridRowData = myRow.getData();*/
var firstRow =myRows.get(0).getData();
    var firstRowAllAttributes = firstrow.entity.attributes.getAll()

    var firstRowfirstAttributeValue = firstrow.entity.attributes.get(0).getValue()

}

如果你想对数据形式的改变执行一些操作,那么还有一种方法可以实现。将您的网格设置为可编辑,然后您可以找到该网格的事件,如下所示,并可以执行您的操作。