CRM Xrm.Page.ui.formSelector.items.get() Returning Null

CRM Xrm.Page.ui.formSelector.items.get() Returning Null

本文关键字:Returning Null get items Xrm Page ui formSelector CRM      更新时间:2023-09-26

我编写了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