2015-02-09 29 views
0

我想了解如何在dataTable上執行計算可見屬性以隱藏某個字段/行(如果狀態爲啓用或禁用狀態)。XPages dataTable控件,計算可見

下面的代碼是什麼我已經使用,但一直得到錯誤

var userName=rowData.getColumnValue("userName") 
var status:NotesView = database.getView("(UserProfile)"); 
var doc:NotesDocument = status.getDocumentByKey(userName); 
var active = doc.getItemValueString("Status") 
if(active == "Enabled") { 
    return true 
}else{ 
return false 
} 
+0

什麼錯誤?以及XPages日誌文件說什麼? – 2015-02-09 18:49:54

+0

我打印(用戶名)檢查名稱是否在視圖「(UserProfile)」中的第一個排序列中,並保持geting行= 4,col = 18:'doc'爲空 – 2015-02-09 18:52:16

+1

。它必須是相同的拼寫... – 2015-02-09 18:54:16

回答

1

把你的代碼放到一個try-catch塊,只要你想,如果用戶是鑑於部分纔可以看到「(用戶配置)」並有一定的狀態:

try { 
    var userName=rowData.getColumnValue("userName") 
    var status:NotesView = database.getView("(UserProfile)"); 
    var doc:NotesDocument = status.getDocumentByKey(userName); 
    var active = doc.getItemValueString("Status") 
    if(active == "Enabled") { 
     return true; 
    } else { 
     return false; 
    } 
} catch (e) { 
    return false; 
} 
1

這是頁面加載或部分刷新期間失敗?如果是後者,你可能會遇到我在這裏提到的問題http://www.intec.co.uk/dataviews-and-nested-repeats/。部分刷新是許多服務器端階段,在此階段中檢索頁面的服務器端映射,應用瀏覽器的值以及重新計算數據表的內容。在早期階段,變量rowData將爲空,這意味着doc也將爲空。

使用像XPages OpenLog Logger一個日誌機制將捕捉到的堆棧跟蹤,其中將包括它的失敗的階段。

使用view.isRenderingPhase()只能運行在Render Response階段(該階段寫入HTML返回給瀏覽器的代碼)。它將避免階段性問題並優化性能。如果它被渲染的屬性,這是你需要計算值的唯一階段;-)

+0

是的錯誤在部分刷新過程中,是新的XPage,所以我不知道在哪裏插入或使用'view.isRenderingPhase()'你可以請更多的燈光,謝謝 – 2015-02-09 19:51:13

+0

if(view。 isRenderingPhase()){ //運行代碼 } else { return false; } 這仍然會允許使用try/catch進行錯誤處理 – 2015-02-09 21:13:32