# Editing Records with List Controllers

You can edit a set of records using list controllers, too. For example, if you create a page with the following markup:

```markup
<apex:page standardController="Opportunity" recordSetVar="opportunities" tabStyle="Opportunity" sidebar="false">
    <apex:form >
        <apex:pageBlock >
            <apex:pageMessages />
            <apex:pageBlockButtons >
                <apex:commandButton value="Save" action="{!save}"/>
            </apex:pageBlockButtons>
            <apex:pageBlockTable value="{!opportunities}" var="opp">
                <apex:column value="{!opp.name}"/>
                <apex:column headerValue="Stage">
                    <apex:inputField value="{!opp.stageName}"/>
                </apex:column>
                <apex:column headerValue="Close Date">
                    <apex:inputField value="{!opp.closeDate}"/>
                </apex:column>
            </apex:pageBlockTable>      
        </apex:pageBlock>
    </apex:form>
</apex:page>
```

you see a page that allows you to update and save the `Stage` and `Close Date` on your opportunities, like the following:For more information, see [Mass Updating Records with a Custom List Controller](/docs/platform/salesforce-pages-developers-guide/guide/pages-quick-start-massupdate.md#mass-updating-records-with-a-custom-list-controller).

![An Apex page containing a list of opportunities and edit fields for the stage and close date of those opportunities](https://a.sfdcstatic.com/developer-website/sfdocs/platform/media/salesforce-pages-developers-guide/custom_sosc_edit_page2.jpg)

:::note
Command buttons and links that are associated with `save`, `quicksave`, or `edit` actions in a list controller are not rendered if the user does not have the appropriate permissions. Likewise if no particular record is associated with a page, command buttons and links associated with the `edit` actions are not rendered.
:::
