【问题标题】:text field attributes/methods dynamics crm 2011文本字段属性/方法动态 crm 2011
【发布时间】:2013-03-25 13:30:20
【问题描述】:

我正在寻找一种方法或方式来检查 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 其中第二个是文本字段的名称

【问题讨论】:

  • 评论这似乎打算做什么,以便其他人就实现这一目标的最佳代码提出建议:

标签: dynamics-crm-2011 dynamics-crm crm microsoft-dynamics dynamics-crm-online


【解决方案1】:

试试

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

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

show==true

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

tab.setVisible(true);

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

看起来使用第三个“show”参数的构造是允许您使用该函数将选项卡状态设置为显示或不显示的特定状态,而无需查找文本字段值。您需要将参数传递为例如 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);
          }
       }
   } 

【讨论】:

    【解决方案2】:

    我看不出你的 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

    How to debug jScript for Dynamics CRM?

    【讨论】:

    • 是的,这是一个问题)我也没有在 IE 控制台中遇到错误我不确定,我对返回该方法的内容感兴趣:Xrm.Page.data.entity.attributes。 get(TextFieldName).getValue() 在 apidocs 它说它必须是一个字符串
    • @Leo,在 IE 调试器的那一行设置一个断点,看看会发生什么。您无需出错即可调试。
    【解决方案3】:

    我认为代码中有错字:

    显示 == 真;

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

    【讨论】:

    • 我测试了您的代码(删除了有错字的行)并且代码正在运行:如果 TextFieldName 字段具有值,则选项卡将显示或隐藏,如果值为 null(空字段),则代码将没做什么。也许如果您完全解释您想要实现的行为,我们可以修复您的代码
    【解决方案4】:

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

    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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多