我已經創建了一個自定義的Visualforce頁面。 在控制器類中,我希望獲得下拉列表中的所有工作區的列表,以便用戶可以在發佈數據的位置中進行選擇。以編程方式獲取VisualForce頁面中所有工作區的列表(共享+個人)頁面
有人可以爲我提供一些關於如何實現此目的的指導。
任何幫助表示讚賞。 :)
我已經創建了一個自定義的Visualforce頁面。 在控制器類中,我希望獲得下拉列表中的所有工作區的列表,以便用戶可以在發佈數據的位置中進行選擇。以編程方式獲取VisualForce頁面中所有工作區的列表(共享+個人)頁面
有人可以爲我提供一些關於如何實現此目的的指導。
任何幫助表示讚賞。 :)
您需要查詢內容工作區,然後將它們放入選擇選項列表中,然後可以在Visualforce頁面中引用它們。
的Apex控制器:
public Id selectedWorkspaceId { get; set; }
private List<SelectOption> workspaceOptions;
public List<SelectOption> getWorkspaceOptions() {
if(workspaceOptions == null) {
for(ContentWorkSpace workspace : [select id, name from ContentWorkspace]) {
workspaceOptions.addNewSelectOption(
new SelectOption(workspace.id, workspace.name);
}
}
}
return workspaceOptions;
}
Visualforce頁:
<apex:selectList value="{!selectedWorkspaceId}" size="1">
<apex:selectOptions value="{!workspaceOptions}"/>
</apex:selectList>
文檔:
下面是Java代碼(從代碼reciepe)到查詢Salesforce CRM Content中的工作區列表。將代碼轉換爲頂點,它應該可以工作。
package com.sforce;
import org.apache.axis.client.Stub;
import com.sforce.soap.enterprise.*;
import com.sforce.soap.enterprise.sobject.*;
public class QueryWorkspace {
/**
* @param args
*/
public static void main(String[] args) {
QueryWorkspace queryWorkspace = new QueryWorkspace();
try {
queryWorkspace.queryAvailableWorkspaces();
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
private void queryAvailableWorkspaces() throws Exception {
SforceServiceLocator sforceServiceLocator
= new SforceServiceLocator();
SoapBindingStub binding
= (SoapBindingStub) sforceServiceLocator.getSoap();
// Login
LoginResult lr = binding.login("[email protected]",
"password");
binding._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,
lr.getServerUrl());
// Create a session header for subsequent calls
_SessionHeader sessionHeader = new _SessionHeader();
sessionHeader.setSessionId(lr.getSessionId());
binding.setHeader(sforceServiceLocator.getServiceName()
.getNamespaceURI(), "SessionHeader",
sessionHeader);
QueryResult query
= binding.query("select Id, Name from"
+ " ContentWorkspace");
SObject[] records = query.getRecords();
if (records != null) {
for (int i = 0; i < records.length; i++) {
ContentWorkspace contentWorkspace =
(ContentWorkspace)records[i];
System.out.println("Workspace Id:"
+ contentWorkspace.getId() + " Name:"
+ contentWorkspace.getName());
}
}
}
}
我看到這一點,並試圖將其轉化爲按我的要求,但不能done.hope有人做過這APEX。 – Swati
你可以請你分享一個你試過的Apex代碼,也許你錯過了一些非常小的東西.. –
忽略上面的評論(我剛剛注意到答案評論) –
拉爾夫我得到了這個工作,但我無法得到所選工作區的價值屬性命名= selectedWorkspaceId在我的控制器類它總是顯示null.Any建議我怎麼能得到這個.. – Swati
拉爾夫與這我可以得到所有共享的工作區,但個人workspace.cant得到任何有關它的信息 – Swati
文檔(請參閱鏈接對於ContentWorkspace文檔的答案)似乎暗示無法查詢個人工作區。 「這個對象不適用於個人圖書館。」您可能希望記錄支持案例,看看他們是否有其他見解。爲了僅獲取正在運行的用戶可見的共享工作區,我相信您可以在類定義中使用「with sharing」關鍵字(未經測試)。 –