继上一篇如何在自定义Controller和VF Page之间利用URL传输和获取数据,现在每一个account是一个链接,链接后显示该account下的所有contacts。
要接收参数,因此需要一个自定义controllr,并且要涉及到查询数据库,因此需要定义一个方法去查询当前account下的所有contacts
Controller:MyGetAllContacts
public class MyGetAllContacts {
public List<Contact> getAllContacts(){
//获取参数
String accountId = ApexPages.currentPage().getParameters().get('accountId');
//查找所有当前accountid下面的所有contacts
List<Contact> contacts = [SELECT Name,AccountId,Title,Email,Description,Id FROM Contact WHERE AccountId=:accountId];
return contacts;
}
}
显示所有contacts的页面,与accountList差不多
ContactList
<!--设置属性controller便可使用自定义的controller-->
<apex:page controller="MyGetAllContacts">
<apex:form >
<apex:pageBlock title="Contacts Lists" id="contacts_list">
<!--{! AllAccounts}该表达式实际上调用了MyGetAllContacts的getAllContacts()方法,在page上省略了get前缀-->
<apex:pageBlockTable value="{! AllContacts}" var="contact">
<!--自定义列名-->
<apex:column headerValue="Action">
<apex:outputLink value="./EditContact?core.apexpages.request.devconsole=1&AcccountId={!contact.AccountId}&Id={! contact.Id}">
Edit
</apex:outputLink>
|
<apex:outputLink value="{! URLFOR($Action.Contact.Delete, contact.Id)}" onclick="return confirm('Are you sure you want to delete this contact?')">
Del
</apex:outputLink>
<!--这两个链接是为第三个练习作准备,两个链接,一个是对contact进行编辑修改,一个是对该contact进行删除-->
</apex:column>
<apex:column value="{!contact.Name}"/>
<apex:column value="{!contact.Title}"/>
<apex:column value="{!contact.Email}"/>
<apex:column value="{!contact.Description}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>