1

我有一个产品列表,我正在尝试在每种产品之间交替颜色(灰色、白色、灰色、白色等)。我了解如何根据以下链接之类的条件使用颜色格式:示例跟随。但是我不知道如何让它查看报告上的前一行并检查它是否具有相同的产品名称。如果是这样,则为该行着色相同的颜色,否则为替代颜色。
我在应用程序中设置了一个示例报告:Application 67666 - Color Row by Product example。我在报告中有两种产品,所以我试图得到 3 条灰线,然后是 3 条白线,如果我有更多产品,它会变回灰色等等。

链接:apex.oracle.com

工作区:apps2

用户:用户

密码:DynamicAction2

请让我朝着正确的方向前进,JavaScript 和动态操作在示例链接中向我大喊大叫,但是它查看前一行让我陷入了困境。

4

1 回答 1

0

我真的想不出除了 javascript 之外的其他解决方案。sql中可能使用了滞后,但仅用于确定行颜色应更改的位置。您可以在列的 html 表达式中使用列的值并将其放入一个类中,但您仍然需要使用 javascript 对其进行迭代。因此,仅使用 javascript 似乎不那么繁琐。

内联 CSS:

table.report-standard tr.normalRow td{
background-color: green;
}
table.report-standard tr.altRow td{
background-color: red;
}

这将覆盖默认样式,但您需要根据需要对其进行调整。例如,行的 :hover 上的颜色变化。我更喜欢通过分配类来控制样式,然后在 css 中定义规则,而不是通过 javascript 直接分配 css(这会将它放在样式标签中,呃)。

  • 动态操作:更改行颜色
  • 刷新后,地区,产品报告
  • 真正的行动:执行 javascript 代码,检查页面加载时触发

    $('td[headers="PRODUCT"]', this.triggeringElement).each(function(){
    var lCurrRow = $(this).closest('tr'),
        lPrevRow = lCurrRow.prev(), 
        lPrevVal = lPrevRow.find('td[headers="PRODUCT"]').text();
    console.log(lPrevVal + ' - ' + $(this).text());
    //if value on previous row differs from the that on the current row
    //then change the class
    //if the value didnt change, then use the same class as the previous row
    if ( lPrevVal != $(this).text() ){
      if ( lPrevRow.hasClass('normalRow') ){
        lCurrRow.addClass('altRow');
      } else {
        lCurrRow.addClass('normalRow');
      };
    } else {
      if ( lPrevRow.hasClass('normalRow') ){
        lCurrRow.addClass('normalRow');
      } else {
        lCurrRow.addClass('altRow');
      };
    };
    })
    

在 apex.oracle.com 上检查您的解决方案,我在那里实现了它。

于 2013-04-28T17:27:25.803 回答