Salesforce Visualforce使用表格输入数据
Visualforce表单简介
创建和编辑数据是任何应用程序的基本方面。Visualforce提供了轻松创建可创建新记录或检索记录,编辑其值并将更改保存回数据库的页面所需的一切。
在这里,我们将标准控制器与 <apex:form> 组件和一些易于理解的表单元素来创建相当复杂的记录编辑页面。
创建一个基本表格
采用 <apex:form> 和 <apex:inputField>创建一个页面来编辑数据。结合<apex:commandButton> 与 救 标准控制器中内置的操作来创建新记录,或将更改保存到现有记录中。
一个允许某人编辑和更新记录的页面需要执行以下所有操作。
- 查找记录以进行编辑并从数据库中检索它。
- 将相关记录数据以编辑形式放在页面上。
- 接收具有更改数据的表单提交。
- 验证新值。
- 将有效的更改保存回数据库。
- 无论新数据是否成功保存还是有错误,请向提交更改的人员提供适当的消息。
使用标准控制器和标准控制器时,Visualforce会自动为您执行大多数操作 <apex:form> 零件。
- 打开开发者控制台,然后单击 File|New|Visualforce Page以创建新的Visualforce页面输入。AccountEdit页面名称。
- 在编辑器中,将所有标记替换为以下标记。
<apex:page standardController="Account">
<h1>Edit Account</h1>
<apex:form>
<apex:inputField value="{! Account.Name }"/>
<apex:commandButton action="{! save }" value="Save" />
</apex:form>
</apex:page>
- 单击Preview (预览) 以打开页面的预览,您可以在进行更改时查看。
应该会打开一个新窗口,显示一个窗体,该窗体的主体中有一个空字段。 - 在预览窗口中,将帐户的ID添加到URL,然后按Enter。
该URL应该是这样的: https:// SalesforceInstance /apex/AccountEdit?core.apexpages.request.devconsole=1&id = 001D000000JRBes
现在,您应该在表单字段中看到该帐户的名称。
该表格要理解的:
- 该页面使用帐户的标准控制器,在 <apex:page> 零件。
- <apex:form> 是一个Visualforce组件,将其中的所有内容打包为可以作为页面操作的一部分发送回服务器的内容。如果您需要将数据发送回Salesforce,大多数情况下,您将在<apex:form>。
- <apex:inputField> 为与其关联的记录数据字段创建一个屏幕上的表单字段。为此,您可以提供一个引用了 值属性。这里的表达是{!用户名 },您应该可以毫无疑问地猜到该客户的“名称”字段。
- 最后, <apex:commandButton> 在页面的用户界面中添加一个按钮。单击该按钮会触发一个 action 动作。在这种情况下,动作是 救()标准控制器中的动作方法。喜欢与<apex:inputField>,您将<apex:commandButton> 通过在提供给 <apex:commandButton> 行动 属性。
添加字段标签和平台样式
将表单元素放在 <apex:pageBlock> 和 <apex:pageBlockSection> 标签进行组织和分组,并使表格采用平台的视觉风格。
在 – 的里面 <apex:form> 组件,将两个表单元素包装在 <apex:pageBlock> 和 <apex:pageBlockSection> 标签,以便您的标记看起来像这样。
<apex:page standardController="Account">
<apex:form>
<apex:pageBlock title="Edit Account">
<apex:pageBlockSection>
<apex:inputField value="{! Account.Name }"/>
</apex:pageBlockSection>
<apex:pageBlockButtons>
<apex:commandButton action="{! save }" value="Save" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
此版本表格的样式完全不同!与输出组件一样,当您在<apex:pageBlock> 和 <apex:pageBlockSection> 标签采用平台的视觉样式。
2. 在 客户名 字段下方,再添加三个字段,以使您的标记看起来像这样。
<apex:page standardController="Account">
<apex:form>
<apex:pageBlock title="Edit Account">
<apex:pageBlockSection>
<apex:inputField value="{! Account.Name }"/>
</apex:pageBlockSection>
<apex:pageBlockButtons>
<apex:commandButton action="{! save }" value="Save" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
<apex:inputField> 组件根据标准或自定义对象字段的类型呈现适当的输入窗口小部件。例如,如果您使用<apex:inputField>标签以显示日期字段,日历小部件将显示在表单上。如果您使用<apex:inputField> 标签以显示一个选择列表字段,就像我们在此处针对行业字段所做的那样,而是显示一个下拉列表。
<apex:inputField> 可以用于捕获任何标准或自定义对象字段的用户输入,并尊重在字段定义上设置的任何元数据,例如该字段是必填字段还是唯一字段,或者当前用户是否有权查看或编辑它。
显示表单错误和消息
采用 <apex:pageMessages> 显示任何表单处理错误或消息。
发生错误时,例如缺少必填字段或字段值验证失败时,页面应提供有用的反馈。标准控制器实际上可以为您处理所有这些。您需要做的就是告诉它在页面上放置消息的位置。
- 在下面 <apex:pageBlock> 标签,添加以下行。
<apex:pageMessages/>
如你看到的, <apex:inputField> 会在其自己的字段中显示错误,但较长的格式可以很好地将所有页面的错误列出在页面顶部的某个位置。
处理表单时,标准控制器已经收集了页面的所有消息。的<apex:pageMessages> 组件使您可以在合适的地方显示这些消息。
编辑相关记录
通过提供相关记录的链接,使用户轻松编辑相关信息。
到目前为止,我们的表单一次只编辑一个记录。更具体地说,由于他们将标准控制器用于帐户对象,因此该表单只能更改帐户记录。
对于用户而言,这并不总是最有效的工作流程。虽然您无法使用标准控制器在一个请求中保存对多种对象类型的更改,但是通过提供执行诸如对这些记录进行编辑或删除之类的操作的链接,您可以更轻松地导航到相关记录。
- 低于现有收盘价 </ apex:pageBlock> 标签,添加以下标记。
<apex:pageBlock title="Contacts">
<apex:pageBlockTable value="{!Account.contacts}" var="contact">
<apex:column>
<apex:outputLink
value="{! URLFOR($Action.Contact.Edit, contact.Id) }">
Edit
</apex:outputLink>
<apex:outputLink
value="{! URLFOR($Action.Contact.Delete, contact.Id) }">
Del
</apex:outputLink>
</apex:column>
<apex:column value="{!contact.Name}"/>
<apex:column value="{!contact.Title}"/>
<apex:column value="{!contact.Phone}"/>
</apex:pageBlockTable>
</apex:pageBlock>
帐户联系人列表显示在帐户编辑表单下方。
2. 尝试单击联系人的“ 编辑”链接。
链接将您带往何处?保存更改或单击该页面上的取消时会发生什么?
<apex:pageBlockTable> 组件会创建一个包含客户联系人列表的表格。这里的新内容是<apex:outputLink>组件。它们使用引用全局变量的表达式,$Action,并将其与 URLFOR()功能。结果是到联系人的编辑或删除页面的链接,具体取决于引用的操作。对于这种形式的用户,这可能是非常有用的快捷方式。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97659.html