过滤的子网格 - createCallbackFunctionObject抛出indescript错误

时间:2018-01-09 19:32:34

标签: dynamics-crm filtering subgrid dynamics-crm-365

我正在尝试使用here中的代码创建过滤的N:N子网格:

如果有帮助,这是一个Dynamics 365 Online实例。我面临的问题很奇怪,因为查找窗口出现,过滤完美,并允许我选择项目。但是当我点击"添加"我收到一般错误消息。

据我所知,代码中的所有内容都很好,但我不清楚我应该如何进行调试。我最初的想法是我可以在crmWindow.Mscrm.Utilities.createCallbackFunctionObject函数中开始调试,但我不清楚如何在在线环境中调用global.ashx文件中的该函数。我的想法是,在那里我可能会得到一个我可以使用的错误。

有什么想法吗?

//filters an add existing lookup view (N:N)
function addExistingFromSubGridCustom(gridTypeCode, gridControl, crmWindow, fetch, layout, viewName) {
    var viewId = {DB2C6D94-48F2-E711-A2B6-00155D045E00}; // a dummy view ID
    var relName = gridControl.GetParameter(relName);
    var roleOrd = gridControl.GetParameter(roleOrd);

    //creates the custom view object
    var customView = {
        fetchXml: fetch,
        id: viewId,
        layoutXml: layout,
        name: viewName,
        recordType: gridTypeCode,
        Type: 0
    };

    var parentObj = crmWindow.GetParentObject(null, 0);
    var parameters = [gridTypeCode, , relName, roleOrd, parentObj];
    var callbackRef = crmWindow.Mscrm.Utilities.createCallbackFunctionObject(locAssocObjAction, crmWindow, parameters, false);


    crmWindow.LookupObjectsWithCallback(callbackRef, null, multi, gridTypeCode, 0, null, , null, null, null, null, null, null, viewId, [customView]);
}


function filterAddExistingContact(gridTypeCode, gridControl, primaryEntity) {
    debugger;

    var crmWindow = Xrm.Internal.isTurboForm() ? parent.window : window;

    var lookup = new Array();
    lookup = Xrm.Page.getAttribute(new_channel).getValue();
    if (lookup != null) {
        var name = lookup[0].name;
        var id = lookup[0].id;
        var entityType = lookup[0].entityType;
    }
    else
    {
        crmWindow.Mscrm.GridRibbonActions.addExistingFromSubGridAssociated(gridTypeCode, gridControl); //default button click function
        return;
    }


    if (primaryEntity != nxt_callreport) {
        crmWindow.Mscrm.GridRibbonActions.addExistingFromSubGridAssociated(gridTypeCode, gridControl); //default button click function
        return;
        //Mscrm.GridRibbonActions.addExistingFromSubGridAssociated(gridTypeCode, gridControl); //default button click function
        //return;
    }

    //fetch to retrieve filtered data
    var fetch = <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> +
  <entity name="new_market"> +
    <attribute name="new_marketid" /> +
    <attribute name="new_name" /> +
    <attribute name="createdon" /> +
    <order attribute="new_name" descending="false" /> +
    <filter type="and"> +
              <condition attribute="new_channel" operator="eq" uiname=" + name + " uitype=" + entityType + " value=" + id + " /> +
    </filter> +
  </entity> +
</fetch>;

    //columns to display in the custom view (make sure to include these in the fetch query)
    var layout = <grid name="resultset" object="1" jump="new_name" select="1" icon="1" preview="1"> +
          <row name="result" id="new_name"> +
            <cell name="new_name" width="300" /> +
          </row> +
        </grid>;

    addExistingFromSubGridCustom(gridTypeCode, gridControl, crmWindow, fetch, layout, Filtered Markets);
}

1 个答案:

答案 0 :(得分:-1)

更新此行:

var crmWindow = Xrm.Internal.isTurboForm() ? parent.window : window;

var crmWindow = Xrm.Internal.isTurboForm() ? top.parent.window : top.window;

并更新:

crmWindow.Mscrm.Utilities.createCallbackFunctionObject(