2011-12-04 42 views
1

我试图找到一种干净的方式来构建我的页面,以便可以使用相同的页面来读取记录的内容并对其进行编辑。例如:在APEX中创建读/写页面

  1. 您查看记录的页面。它的内容显示为文本/任何。
  2. 您单击编辑按钮和值在文字区域,文本框的LOV等

我想做到这一点,而无需创建一个单独的编辑页面,查看页面为每个记录呈现。我有一个想法是创建两个区域 - ViewRecord和EditRecord - 并根据是否传递了URL参数显示一个或另一个(但我不确定这是否简单/可能 - 我猜测它可以完成在区域条件下,但是我不确定如何访问请求参数)。

这种活动是否有共同/最佳实践?人们通常如何处理这个问题?

+0

只是一个想法 - 你想同一页面既查看和编辑记录,但要从一种模式到另一种模式,你想改变网址?如果用户不得不提交URL来编辑记录,那么只有两页是不是更简单? –

+0

另外,我不明白你为什么说“为每条记录创建一个单独的编辑页面和查看页面”。你的意思是,“为每个表格创建一个单独的编辑页面和查看页面”? –

回答

1

我创建了一个小例子,用请求的值和条件显示做,试试吧here。 的设置是这样的:

treeview

编辑模式按钮:注意条件:我不希望看到这个按钮,当“编辑模式”已启用 - >“告诉我的请求时,从写”不同。另外,当你第一次进入页面时,请求将是NULL。将显示编辑按钮,因为NULL与WRITE不同。

Edit button code

Readmode按钮:大同小异。在条件中特别测试写入请求:当请求为空时,不显示该按钮。

Read button code

表格形式上的条件:

tabular form condition

对于读形式,条件是如下。同样,请求与WRITE不同,因此报告将在请求为NULL时显示!

report condition

你怎么能以另一种方式解决这个问题?如果你想要更多的动态行为,你可以使用JavaScript。我有时候做的是将输入属性readonly设置为true,并将背景颜色更改为灰色。这将允许用户标记项目,但不会让他们编辑它。我将它们灰色显示出该字段不可编辑。不要将disable设置为true:它会破坏顶点功能,因为禁用的字段不会发布它们的值,而apex期望它们。 例如:

$("input").attr("readonly", "true"); 
$("input[readonly='true']").css("background-color":"grey"); 

这将设置每个输入字段在页面上为只读,和灰色出来。您可以使用按钮,链接,动态操作......来调用此代码。您的页面无需提交或重新加载。

我经常使用它,因为我特别不想使用'显示项目',甚至'只读条件':它们将字段呈现为平面文本,并且难以区分标签和值。即使在一个表格(不是表格)我喜欢使用这个技巧,我觉得它更友好。

而最佳实践:我不知道:)我自己通常采用“报告形式”的方式,但主要是因为客户也需要它。对他们来说,这是后来更容易理解和维护的方式。这取决于你和你的客户来决定我的想法:两种方法都不完全硬,是纯粹的顶点!