我正在寻找一种方法或方法来检查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 其中secon是文本字段的名称
答案 0 :(得分:3)
我没有看到你的Javascript有什么问题(除了Guido指出的,基本上只会将标签设置为可见,如果你为show传入true)。通过按F12在IE中使用调试工具,并在函数顶部设置一个断点,以查看逻辑失败的位置。
如果您之前从未调试过javascript,请参阅http://social.technet.microsoft.com/wiki/contents/articles/3256.how-to-debug-jscript-in-microsoft-dynamics-crm-2011.aspx
或
答案 1 :(得分:3)
尝试
if (section != null && section !="")...
您可能会发现最初为空的字段为空,而您已删除内容但尚未保存表单的字段只是一个空字符串。 当然值得一试。
show==true
是不正确的,正如其他人指出的那样(需要show = true),但只是在同一个IF语句中写的冗余,只需将下一行替换为:
tab.setVisible(true);
如果文本字段不为空,您可能希望“show”成为默认的选项卡状态,在这种情况下,只需将此行移到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 :(得分:2)
我认为代码中存在拼写错误:
show == true;
实际上代码(假设“=”而不是“==”)将始终显示选项卡,如果 TextFieldName 不为空,删除该行将根据 show 参数值
答案 3 :(得分: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);
}
}