有人可以告诉我如何使用ajax在页面加载时通过ajax加载apex pageBlockTable吗?我已经看到了如何使用apex actionFunction的示例,但样本通常很简单(例如 - 从控制器返回一个字符串并将其放在页面上。我的控制器返回一个sObjects列表,我只是不太确定怎么做的。
页:
<apex:pageBlockTable value="{!TopContent}" var="item">
<apex:column headerValue="Title">
<apex:outputLink value="/sfc/#version?selectedDocumentId={!item.Id}">
{!item.Title}
</apex:outputLink>
</apex:column>
</apex:pageBlockTable>
控制器:
List<ContentDocument> topContent;
public List<ContentDocument> getTopContent()
{
if (topContent == null)
{
topContent = [select Id,Title from ContentDocument limit 10];
}
return topContent;
}
答案 0 :(得分:1)
我想出来了。诀窍是使用actionFunction,然后直接从javascript调用它。
所以VF页面如下所示:
<apex:page controller="VfTestController">
<apex:form>
<apex:actionFunction action="{!loadDocuments}" name="loadDocuments" rerender="pageBlock" status="myStatus" />
</apex:form>
<apex:pageBlock id="pageBlock">
<apex:pageBlockTable value="{!TopContent}" rendered="{!!ISBLANK(TopContent)}" var="item">
<apex:column headerValue="Title">
<apex:outputLink value="/sfc/#version?selectedDocumentId={!item.Id}">
{!item.Title}
</apex:outputLink>
</apex:column>
</apex:pageBlockTable>
<apex:actionStatus startText="Loading content..." id="myStatus" />
</apex:pageBlock>
<script type="text/javascript">
window.setTimeout(loadDocuments, 100);
</script>
</apex:page>
和控制器是这样的:
public class VfTestController
{
List<ContentDocument> topContent;
public List<ContentDocument> getTopContent()
{
return topContent;
}
public PageReference loadDocuments()
{
if (topContent == null)
{
topContent = [select Id,Title from ContentDocument limit 10];
}
return null;
}
}