在Xpage中,它將顯示軍官姓名,軍官類型和部門(我使用sessionScope變量來做到這一點)。有一個combobox
允許用戶選擇用戶想要比較的軍官類型 。然後一個按鈕用於導出數據。Xpages:如何在導出數據時使用viewEnt.getColumnValues()來檢索所有相關的值?
導出數據將顯示所選人員類型需要閱讀的文檔與當前人員已閱讀的文檔之間的比較。 如果官員已經閱讀文件,所選擇的官員類型匹配需要讀取,它會顯示「文件已被閱讀」,否則會 秀「文件並沒有讀」
由於這個職位export data from panel讓我知道如何從面板導出數據,我開始關注帖子中的代碼並修改一些代碼以滿足用戶需求。
我有兩個觀點做了比較:
每個軍官類型需要讀取各種文件,所以存儲的值來看,第一列是官型,而第二列是文件 官員類型應該閱讀。第二列是多值字段,我可以將多值分隔符設置爲新行。
另一種觀點的包括官員的姓名,相關人員類型和文件由官員讀。(多值沒有列)
我用@DbLookup
和for
循環做比較,這裏是部分代碼:
var officer = sessionScope.Officer;
var officerType = sessionScope.OfficerType;
var showSelectedTypeDoc = @DbLookup(@DbName(),"view1", officerType, 2);
var showUserHasReadDoc= @DbLookup(@DbName(),"view2", officer, 3);
var result = "";
while (viewEnt != null)
{
if(viewEnt.getColumnValues()[1] == officer) //get the value related to the officer in the session
{
writer.write("<tr>");
for(var s = 0; s < showSelectedTypeDoc.length;s++) //loop in view1 first
{
for(var r = 0; r < showUserHasReadDoc.length;r++)//then loop the view2
{
if(showSelectedTypeDoc[s] == showUserHasReadDoc[r])//if value matches between 2 views
{
result = "Document has been read";
}
else
{
result = "Document has not read";
}
}
}
//display the list of the document category related to specific officer type
writer.write("<td>" + viewEnt.getColumnValues()[2] + "</td>"); //Problem occurs here, it only shows the first value, the appearance depends on the loop
writer.write("<td>" + result+ "</td>"); // only display the else part
writer.write("</tr>");
}
}
其實我想
viewEnt.getColumnValues()[2]
將顯示所有相關值,但是當我導出該值時,它僅顯示第一個值,例如[第一個值]。 代碼
writer.write("<td>" + result+ "</td>");
我檢討,如果條件下,它應該是很好,但它只能說明其他部分
我試過的
viewEnt.getColumnValues()[2]
showSelectedTypeDoc[s]
代替它顯示未定義,外觀取決於循環。
但如果我嘗試
showSelectedTypeDoc[0] //or showSelectedTypeDoc[1], etc
它可以顯示正確的價值和外觀取決於循環。
不過,我不會知道存儲着的變量有多少價值,所以我更喜歡
showSelectedTypeDoc[s]
找到所有相關的值,但沒有成功。
我開始思考它爲什麼只顯示第一個值。我修改代碼和視圖,我想可能是多值列導致問題。這是因爲在Louts Client中,在視圖中我只點擊一次以獲得特定值,如果該值具有多個值,則會向相關數據顯示「打勾」符號。
所以我想知道如何使用
viewEnt.getColumnValues()[2]
檢索所有與特定值的數據。感謝您的建議。謝謝。
在'writer.write( 「」+ viewEnt.getColumnValues()[2] +「 」);',我試圖'writer.write(「」+ showSelectedTypeDoc.length +「」); '。它可以在視圖中顯示正確的長度。 – beginner
但是,如果我嘗試'writer.write(「」+ showSelectedTypeDoc +「」);',當我導出數據時,它顯示奇怪的結果。它顯示'<<<<<'',並且該位置與相關列不匹配。 – beginner
我讀過這篇文章[小心getColumnValue返回什麼](http://linqed.eu/2010/08/16/beware-of-what-getcolumnvalue-is-returning/)。我在應用程序中應用了代碼,當我導出數據時,結果爲空。 – beginner