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); 
    } 
} 
相關問題