1

我想突出显示具有'Total'此价值的 DisplayTag 行,我正在尝试通过 javascript,但我可以这样做。下面是我正在使用的代码段。请指导。

参考:如何使用 displaytag 装饰表格中的一行

当第二列中有总计但未突出显示时,我会收到警报。

如何突出显示Total在第二列中具有值的特定行?

<script type="text/javascript">
        function onLoad(){
            var table = document.getElementById("data");    
            var tbody = table.getElementsByTagName("tbody")[0];
            var rows = tbody.getElementsByTagName("tr");

            for (i=0; i < rows.length; i++) {
                var value = rows[i].getElementsByTagName("td")[1].firstChild.nodeValue;

                if (value == 'Total') {
                    alert('true');
                    rows[i].style.backgroundColor = "red";

                            }
            }
        }

        </script>
    <body onload="onLoad();">
    <%AppUtil oAppUtil=new AppUtil();%>
    <jsp:useBean id="realTimeIssuance" scope="session" class="com.mindcraft.mis.tpd.actionform.afRealTimeIssuance"></jsp:useBean>

    <display:table name="realtimereportcol" export="true" pagesize="30" sort="list" id="data" requestURI="" class="tablelist" decorator="org.displaytag.decorator.TotalTableDecorator">


            <display:column title="SUB_CHANNEL" sortable="true" property="sub_channel"></display:column>
            <display:column title="AGENT_NAMES" sortable="true" property="agent_names"></display:column>
            <display:column title="FTD" sortable="true" property="ftd"  ></display:column>
            <display:column title="MTD" sortable="true" property="mtd"  ></display:column>
            <display:column title="QTD" sortable="true" property="qtd"  ></display:column>

    </display:table>
    </body>
    </html>
4

3 回答 3

3

使用 TableDecorator 并实现 addRowClass() 方法,如下所示...

return ((ListObject)getCurrentRowObject()).getTotal() > 400 ? "highlight" : null;

然后,您可以在 CSS 文件中为突出显示定义 css。

请参阅他们的演示以获取更多信息http://demo.displaytag.org/displaytag-examples-1.1/example-rowclass.jsp

于 2013-01-07T13:28:20.050 回答
1

您必须使用 DisplayTag 装饰器来操作呈现表的数据和 html 结构。

在您的项目包中创建一个简单的 Java 类,它扩展TableDecorator并覆盖addRowClass方法。

在类对象的集合上,为集合中的每个对象调用装饰器类方法addRowClass 。

public class TestTableDecorator extends TableDecorator {

    @Override
    public String addRowClass() {
        return ((AnObject) getCurrentRowObject()).getTotal() > your_threshold ? "css-class-1" : "css-class-2";
    }   

}

现在,在您的 .jsp 文件中,使用以下属性在 display:table 中声明您的装饰器:

decorator="path.to.decorator.TestTableDecorator"

希望有帮助。

于 2016-05-21T17:18:12.503 回答
0

AFAIK,您不能在<tr>. 相反,您必须将其设置在每个封闭的<td>.

我会定义一个 CSS 类

tr.highlighted td {
    background-color: red;
}

并将类添加highlighted到适当的<tr>.

于 2012-09-26T11:18:56.000 回答