2

我正在寻找一种方法或方式来检查 crm 表单中的文本字段是否为“null”

我有一个标签,里面有部分和文本字段;

此外,我正在使用该功能来隐藏/显示选项卡。

function setVisibleTabSection(tabname, TextFieldName, show) {
  var tab = Xrm.Page.ui.tabs.get(tabname);
  if (tab != null) {
    if (TextFieldName == null)
       tab.setVisible(show);
    else {
      var section =  Xrm.Page.data.entity.attributes.get(TextFieldName).getValue();
      if (section != null) {
        show == true; 
        tab.setVisible(show);
      }
    }
  }
} 

但是,它不起作用。文本框内没有任何内容,并且选项卡仍然展开。

顺便说一句,我给函数的参数:“tab_8”,“new_conf_report”,false 其中第二个是文本字段的名称

4

4 回答 4

3

尝试

if (section != null && section !="")...

您可能会发现最初为空白的字段为空,而您已从中删除内容但尚未保存表单的字段只是一个空字符串。当然值得一试。

show==true

正如其他人所指出的那样是不正确的(需要显示=真),但在同一个 IF 语句中写的只是多余的,只需将下一行替换为:

tab.setVisible(true);

如果文本字段不为空,您可能希望“显示”成为默认选项卡状态,在这种情况下,只需将此行移到 IF 之外而不是更改它(如下所示)

看起来使用第三个“显示”参数的构造是允许您使用该功能将选项卡状态设置为显示或不显示的特定状态,而根本不需要查找文本字段值。您需要将参数传递为例如 tabname,,true - 您可能会考虑交换 TextFieldName 和 Show 参数,这样更容易删除第三个而不是记住双逗号。

在我们修复内容时​​,让我们用更有意义的名称替换变量“section”:

function setVisibleTabSection(tabname, show, TextFieldName) //usage: show is state Tab will have if no TextFieldName is specified, or if text field is empty
  {
      var tab = Xrm.Page.ui.tabs.get(tabname);
      if (tab != null) 
       {
        if (show==null){show=true;}
        if (TextFieldName == null)
          {
          tab.setVisible(show);
          }
        else
          {
          var strFieldValue = Xrm.Page.data.entity.attributes.get(TextFieldName).getValue();
          if (strFieldValue != null && strFieldValue !="") 
              {show=true;}
          tab.setVisible(show);
          }
       }
   } 
于 2013-03-25T23:49:17.840 回答
3

我看不出你的 Javascript 有什么问题(除了 Guido 指出的,它基本上只会在你传入 true 进行显示时将选项卡设置为可见)。通过按 F12 使用 IE 中的调试工具,并在函数顶部设置断点以查看逻辑失败的位置。

如果您以前从未调试过 javascript,请参阅http://social.technet.microsoft.com/wiki/contents/articles/3256.how-to-debug-jscript-in-microsoft-dynamics-crm-2011.aspx

或者

如何为 Dynamics CRM 调试 jScript?

于 2013-03-25T14:09:27.133 回答
2

我认为代码中有一个错字:

显示 == 真;

实际上,如果TextFieldName不为空,代码(假设“=”而不是“==”)将始终显示选项卡,删除该行将根据显示参数值显示/隐藏选项卡

于 2013-03-25T14:22:24.447 回答
0

当我运行它时它似乎可以工作,但我不确定你期望它做什么,所以它可能无法按照你想要的方式工作。:)

function setVisibleTabSection(tabName, textFieldName, show) {
  var tab = Xrm.Page.ui.tabs.get(tabName);
  if(!tab) return;

  if (!TextFieldName)
    tab.setVisible(show);
  else {
    var section = Xrm.Page.data.entity.attributes.get(textFieldName).getValue();
    if (section)
      tab.setVisible(true);
  }
}
于 2013-03-25T19:29:44.403 回答