我编写了javascript代码,并将其添加为实体(联系人)加载事件的表单。在这段代码中,我想从开始的表单导航到另一个表单。
对于以前的开发,我试图获得我需要的打开表单的id,以便导航。代码如下所示。
var id = Xrm.Page.ui.formSelector.getCurrentItem().getId();
if (itemid != null)
Xrm.Page.ui.formSelector.items.get(id).navigate();
Xrm.Page.ui.formSelector.getCurrentItem()
函数返回空值。它没有得到项目,所以我不能得到值。代码有什么问题,我错过了什么?
感谢您的提前回复
您正在将值分配给id
变量,但在IF
条件下检查itemid
。在if条件下,将if (itemid != null)
替换为if (id != null)
测试你的JavaScript。可以运行如下函数:
var formItem = Xrm.Page.ui.formSelector.getCurrentItem();
if (formItem != null)
{
var itemId = formItem.getId();
var itemLabel = formItem.getLabel();
alert(itemId + " | " itemLabel);
}
else
{
alert("Unable to get current form");
}
最后,要在表单之间切换,下面是一个非常有用的函数,它以表单名称作为参数。如果您愿意,可以更改使用表单Id。
function redirectToForm(formName) {
var currentForm = Xrm.Page.ui.formSelector.getCurrentItem();
if (currentForm != null) {
if (currentForm.getLabel().toLowerCase() != formName.toLowerCase()) { //make sure it's not already this form
var availableForms = Xrm.Page.ui.formSelector.items.get();
for (var i in availableForms) {
var form = availableForms[i];
if (form.getLabel().toLowerCase() == formName.toLowerCase()) {
form.navigate();
}
}
}
}
}
在我的情况下,我更喜欢发送表单名称作为参数的类型函数,如通过加载表单函数的构造器。
var Formname = "Default";
function Initialize(formname)
{
Formname = formname;
}
在Form的自定义中,在onload函数中设置这个变量,这样就可以从for选择器组件中移除依赖。
我把它提升了一个档次,写了下面的帖子。你可能会觉得很有趣。http://totbcrm.blogspot.co.il/2014/08/working-with-multiple-forms.html