gpt4 book ai didi

javascript - 禁用 View 选择器 DIV 在 MS CRM 中不可访问

转载 作者:行者123 更新时间:2023-12-03 07:05:55 24 4
gpt4 key购买 nike

我正在尝试在 2016 年的帐户查找中禁用 View 选择器。

代码工作正常,我的意思是我没有收到任何错误,但代码无法找到“parentaccountid”的特定 DIV。

我在 Elements 中可以看到它: enter image description here

但是当代码尝试获取 DIV 的元素时,它会返回 {null} - document.getElementByid("parentaccountid");

enter image description here

我的代码在机会页面加载时运行。

enter image description here即使在这一步,我也可以看到特定的 DIV 元素 - id:parentaccountid enter image description here

我仍然得到 {null} 值:

enter image description here enter image description here

就像 2013 年一样,我发现它运行得很好。抱歉,我没有数据可以在这里分享,但它工作正常。

下面是代码:

function DisablePick()
{
VULoader();

//call this function from OnLoad handler
function VULoader(){
var myLookup1;
alert("Hello..I am Here");
var fetch = "<fetch mapping='logical'>"
+"<entity name='account'>"
+"<attribute name='name'/>"
+"<filter type='and'>"
+"<condition attribute='name' operator='eq' value='Blue Yonder Airlines (sample)' />"
+"</filter>"
+"</link-entity>"
+"</entity>"
+"</fetch>";

myLookup1 = new XrmLookupField("parentaccountid");
myLookup1.AddLockedView(
//sViewId
myLookup1.NewGuid() ,
//sEntityName
"account",
//sViewDisplayName
"My Locked Custom View",
//sFilterXml
fetch,
//sFilterLayout
layout(1, "name", "accountid")
.column("name", 200)
.toString()
);
}

function XrmLookupField(sId) {
var xlf = this;
//control instance
xlf.Ctl = Xrm.Page.getControl(sId);
//dom instance
xlf.Dom = document.getElementById(sId);
//jquery instance
xlf.$ = $(xlf.Dom);

/* 2013 addition --- Inline Control instance --- */
xlf.$i = $("#" + sId + "_i");

//use that to disable the view picker
xlf.DisableViewPicker = function () {
/* 2013 addition --- The attribute capitalization changed */
xlf.SetParameter("disableviewpicker", "1");
}
//use that to enable the view picker
xlf.EnableViewPicker = function () {
/* 2013 addition --- The attribute capitalization changed */
xlf.SetParameter("disableviewpicker", "0");
}

//set undocumented attributes
xlf.SetParameter = function (sName, vValue) {
xlf.$.attr(sName, vValue);

/* 2013 addition --- Also change the inline contorl value */
xlf.$i.attr(sName, vValue);
}

//add locked view
xlf.AddLockedView = function (sViewId, sEntityName, sViewDisplayName, sFilterXml, sFilterLayout) {
//first enable the view picker
xlf.EnableViewPicker();
//add the custom view (last parameter set the view as default)
xlf.Ctl.addCustomView(sViewId, sEntityName, sViewDisplayName, sFilterXml, sFilterLayout, true);
//lock the view picker
xlf.DisableViewPicker();
}
//create new guid
xlf.NewGuid = function () {
var d = new Date().getTime();
var guid = '{xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx}'.replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
});
return guid;
}
}
}

需要提及的几点:

我在加载机会页面时调用DisablePicker方法。是的,我已经检查过是否有重复的 id,但没有找到。

我也尝试在“帐户”字段的加载上运行此方法,但没有任何响应。

如果我在页面加载并打开查找后从浏览器手动将 DIV 本身的属性 disableviewpicker 值从 0 更改为 1,那么它将采用更改后的值的效果。

真的,我不知道为什么会出现这种情况,我只需要知道我到底哪里出了问题,或者这是一个产品错误,但我不认为是这样。因为这是一个非常基本的行为。

PS:对于我的非 MS CRM friend ,我无法更改 DIV 或除 JavaScript 代码之外的任何内容。

最佳答案

您的表单代码在与实际 CRM 表单分离的框架中执行;它在 ClientApiWrapper.aspx 页面中运行。因此,要从表单脚本访问要修改的表单元素,表单代码应该执行 parent.document.getElementById 而不是 document.getElementById

当您使用浏览器的开发工具时,控制台执行的默认框架也不是具有表单元素的框架,也不是具有表单代码的框架。针对正确帧执行的最简单方法是使用开发工具中的函数来切换帧。在 Firefox 中,该按钮如下所示:

enter image description here

将框架设置为 ClientApiWrapper.aspx 框架是最简单的,因为它提供对表单上加载的库以及 CRM 客户端 API 的访问。

关于javascript - 禁用 View 选择器 DIV 在 MS CRM 中不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36827563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com