2017-01-20 26 views
1

如何在Dynamics 365在线使用JavaScript访问表单域值?这是我试过的:Dynamics 365使用Javascript访问表单域值

一个脚本web资源,在窗体“load”上调用一个“onload”事件。这不起作用。我得到[Object object],但我期望一个字符串。调试它显示的字段的值没有属性

function loadForm() 
{ 
    var value1 = Xrm.Page.data.entity.attributes.get("new_dealercode").getValue(); 
    alert(value1); 
} 

一个HTML的网络资源,包括我在表格上,这并没有什么,但我知道它被称为,因为如果我把警报就可以了,它是警报。

<html> 
<head> 
<script type="text/javascript"> 
    var value1 = window.parent.Xrm.Page.getAttribute("new_dealercoder").getValue(); 
    alert(value1); 
</script><meta charset="utf-8"> 
</head><body><br></body> 
</html> 

我想要实现: 一个iframe与动态的“SRC”基于窗体上的字段值。

回答

1

您可以缩短你的代码来访问表单字段值

Xrm.Page.getAttribute("new_dealercode").getValue(); 

然而,如果你正在处理一个OptionSet场(下拉选择),你需要使用

Xrm.Page.getAttribute("new_dealercode").getSelectedOption(); 

它返回一个Option对象与textvalue财产(见MSDN)。
您会发现查找和日期时间字段的获取和设置更加复杂。

如果需要检索查找属性的属性,你正在处理EntityReferences特色属性idnamelogicalname的数组。

为了获得id,阵列中访问所述第一元件:

var dealerobj = Xrm.Page.getAttribute("new_dealercode").getValue(); 
var dealerid = dealerobj[0].id; 

小心!您可能希望通过检查空值来加强您的代码!


关于你的第二个问题,你可以使用

Xrm.Page.getControl("your_control_name_here").setSrc("$webresources\new_your.html") 

开始在MSDN Client-side programming reference找到完整的参考访问iframe表单控件来源。

+0

缩短的代码没有工作:-(。我仍然得到[对象对象]的警报,我期待一个文本值。我想Javascript被调用得太快无论如何,因为警报发生在页面完全加载之前(在我点击“ok”后继续渲染)。这让我认为javascript应该在表单的html web资源中,而不是“Form Onload”,唯一的问题是如果我把它放在在HTML资源上,什么也没有发生 –

+0

如果你为CRM Form OnLoad事件注册你的函数,它保证所有的表单字段/属性值都是可访问的如果你试图从Web资源访问父CRM表单,不是这种情况,很难说出你的情况有什么问题,但是这是很基本的东西,很难相信它不应该起作用 – Filburt

+0

我发现了什么是错的,这是一个查找。问题是如何从查找中获得价值。我可以得到“名字”,但我需要身份证。你知道我能怎么做到吗? –