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ここで、seconはテキストフィールドの名前です

4

4 に答える 4

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を参照してください。

また

Dynamics CRMのjScriptをデバッグする方法は?

于 2013-03-25T14:09:27.133 に答える
3

試す

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

最初は空白のフィールドがnullであるのに対し、コンテンツを削除したがフォームをまだ保存していないフィールドは単に空の文字列である場合があります。確かに一撃の価値があります。

show==true

他の人が指摘しているように(show = trueである必要があります)正しくありませんが、同じIFステートメント内に記述されているように単純に冗長であり、次の行を次のように置き換えます。

tab.setVisible(true);

テキストフィールドが空でない場合に使用するデフォルトのタブ状態を「show」にすることを意図した可能性があります。その場合、この行を変更するのではなく、IFの外に移動します(以下を参照)。

3番目の「show」パラメーターを使用した構成では、関数を使用して、テキストフィールドの値をまったく検索せずに、タブの状態を表示されているかどうかの特定の状態に設定できるようになっているようです。たとえば、tabname ,, trueとしてパラメータを渡す必要があります。TextFieldNameパラメータとShowパラメータを交換することを検討してください。そうすれば、ダブルコンマを覚えるよりも、3番目のパラメータを削除する方が簡単です。

修正している間に、その変数「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 に答える
2

コードにタイプミスがあると思います:

show == true;

実際には、 TextFieldNameが空でない場合、コード("=="ではなく"="を想定)は常にタブを表示します。その行を削除すると、 showパラメーター値に従ってタブが表示/非表示になります。

于 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 に答える