2

我正在寻找一种方法或方式如何检查在CRM表单中的文本字段为“null”文本字段属性/方法Dynamics CRM中2011

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

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

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”,假 其中塞康一个文本字段的名称

+0

评论实现: – AdamV 2013-03-25 23:50:02

回答

3

尝试

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

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

show==true 

是不正确的,其他人指出(必须显示=真),但作为写里面的相同IF语句,只需更换下一行简单地重复:

tab.setVisible(true); 

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

它看起来像使用第三个“显示”参数是允许您使用该功能将标签状态设置为显示或不显示的特定状态,而根本不查找文本字段值。你需要传递参数,例如tabname,true - 你可能会考虑交换TextFieldName和Show参数,所以放弃第三个参数比记住双逗号更容易。

虽然我们固定的东西,让更换的东西,变“节”有一个更有意义的名字:什么这似乎是打算这样做,为他人提供建议最好的代码

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

解决,非常感谢 – Leo 2013-03-26 06:44:47

3

我看不出有什么毛病你的Javascript (除了Guido指出的,如果你真的通过展示,基本上只会将选项卡设置为可见)。按下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?

+0

是的,这是一个问题)我没有在IE控制台也遇到错误 我不知道,我感兴趣什么返回该方法: Xrm.Page.data.entity.attributes.get (TextFieldName).getValue() apidocs它说它必须是一个字符串 – Leo 2013-03-25 14:17:00

+0

@Leo,在IE调试器的该行上设置一个断点,看看会发生什么。你不需要有错误来调试。 – Daryl 2013-03-25 14:20:18

+0

为链接+1。 – 2013-03-25 19:30:35

2

我认为这是代码中的一个错字:

显示==真;

实际上(假设“=”,而不是“==”)的代码将始终显示如果TextFieldName不为空的标签,去除线将示出根据/隐藏标签显示参数值

+0

是的,这是一个错误,但是没有帮助。 – Leo 2013-03-25 14:31:34

+0

我测试了你的代码(删除了输入行),代码正常工作:如果TextFieldName字段有值,该选项卡将显示或隐藏,如果值为空(空字段),代码将不执行任何操作。 也许如果你完全解释你想实现的行为,我们可以修复你的代码 – 2013-03-25 14:51:26

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