我正在使用CRM,并且为Win创建了两个新的Qualify状态。第一个状态为“已完成约会”,第二个状态为“硬件报价”。当您选择其中一项并限定销售线索时,销售线索的状态将更改为您选择的选项。
在“商机”表单中,我有一个带有部分和字段的选项卡,其中包括如果选择了“进行约会”和“引用的硬件”相同的字段。
我需要帮助的是JavaScript代码,我希望可以将其插入到表单/字段属性中的事件中,以在最初选择一个选项卡时隐藏另一个选项卡。
这是我一直在处理的粗略代码:
function showHideTabAndSection() {
var statuscode = $("#statuscode").val();
var showTab = false;
var showSection = false;
if (statuscode = 100000004) {
showTab = true;
showSection = true;
}
Xrm.Page.ui.tabs.get("TestTab1").setVisible(showTab);
Xrm.Page.ui.tabs.get("TestTab1").sections.get("TestSection1").setVisible(showSection);
}
有人可以帮忙吗?谢谢。
答案 0 :(得分:0)
确保“状态代码”与“ TestTab1”具有相同的格式或另一种形式。如果它们的格式不同,则必须检索它的值。
答案 1 :(得分:0)
在机会表单加载中,从当前机会记录中获取originatingleadid
字段值,并使用它来检索statuscode
以控制标签/部分的可见性。
建议您使用CRM REST Builder,然后从此处生成以下代码。如果您使用的是V9,则可以use web api进行同样的操作。
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/leads(<<originatingleadid of opportunity>>)?$select=statecode,statuscode", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var result = JSON.parse(this.response);
var statecode = result["statecode"];
var statecode_formatted = result["statecode@OData.Community.Display.V1.FormattedValue"];
var statuscode = result["statuscode"];
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
答案 2 :(得分:0)
让我们说,进行约会的值为1,引用的硬件的值为2。
function showHideTabAndSection() {
var statuscode = Xrm.Page.getAttribute("statuscode").getValue();
switch (statuscode) {
case 1:
Xrm.Page.ui.tabs.get("appointMadeTab").setVisible(true);
Xrm.Page.ui.tabs.get("hardwareQuotedTab").setVisible(false);
break;
case 2:
Xrm.Page.ui.tabs.get("appointMadeTab").setVisible(false);
Xrm.Page.ui.tabs.get("hardwareQuotedTab").setVisible(true);
break;
}
}
希望有帮助。
答案 3 :(得分:0)
抱歉,很抱歉,您刚刚输入了一个简单的错字
if (statuscode = 100000004) {
如您所见,运算符应为'=='而不是'='
我想,这就是您的代码不起作用的原因。
要在运行时查找此类问题,请始终将此行添加到代码中 调试器;
如果您打开了Chrome的检查元素窗口,这将停止代码执行并调试代码。