c#中动态表的备用行颜色

时间:2015-03-03 11:28:10

标签: c#

我想为提供动态创建的替代颜色。以下是 aspx.cs 页面中的表格结构,我正在使用

         StringBuilder html = new StringBuilder();

         foreach (DataRow row in dsDashboardDetails.Tables[0].Rows)
            {

                html.Append("<tr style='color: Black'>");

                foreach (DataColumn column in dsDashboardDetails.Tables[0].Columns)
                {
                    html.Append("<td>");
                    html.Append(row[column.ColumnName]);
                    html.Append("</td>");
                }
                html.Append("</tr>");

            }
            //Table end.
            html.Append("</table>");

5 个答案:

答案 0 :(得分:1)

为什么不使用css:

<style type="text/css">
    tr:nth-child(odd) { background-color:#eee; }
</style>

答案 1 :(得分:0)

您是否尝试过设置计数器并在循环时递增计数器?

然后,每次输出一行并且计数器为奇数时,您可以有条件地为该行输出不同的样式。

最好在输出时将样式分隔为CSS和备用类名,这样,当您想要更改网站的样式时,您不必修改代码。

答案 2 :(得分:0)

这是一种适用于旧浏览器的安全方式。

StringBuilder html = new StringBuilder();
var rowCount = 0;
foreach (DataRow row in dsDashboardDetails.Tables[0].Rows)
{
    var className = rowCount++ % 2 == 0 ? "even" : "odd"; //check if it is an odd or even rowCount
    html.Append("<tr style='color: Black' class='"+className+"'>");

    foreach (DataColumn column in dsDashboardDetails.Tables[0].Columns)
    {
        html.Append("<td>");
        html.Append(row[column.ColumnName]);
        html.Append("</td>");
    }
    html.Append("</tr>");
}

//Table end.
html.Append("</table>");

为行添加此CSS

tr.odd{
    background-color: #999;
}
tr.even{
    background-color: #ccc;
}

答案 3 :(得分:0)

将布局(html)与后端代码混合起来真的很糟糕。我建议你使用DataRepeater(或Razor取决于你的项目)和CSS一起解决你的问题; - 首先在StringBuilder btw中添加<table>;

CSS:

table tbody tr:nth-child(odd) {
    background-color: #eee;
}

但是如果你想坚持这个概念,你可以使用&#34;切换&#34;布尔值,如下:

bool background=false;
foreach (DataColumn column in dsDashboardDetails.Tables[0].Columns)
                {
                    html.Append("<td>");
if (background) { // add color }
background = !background;
                    html.Append(row[column.ColumnName]);
                    html.Append("</td>");
                }

答案 4 :(得分:0)

您可以使用css,但如果您正在寻找纯C#,请使用计数器:

StringBuilder html = new StringBuilder();
var rowIndex = 0;
foreach (DataRow row in dsDashboardDetails.Tables[0].Rows) {
    html.AppendFormat("<tr style='color: {0}'>", 
        rowIndex % 2 == 0 ? "Black" : "Red"); // Red or anything you want
    foreach (DataColumn column in dsDashboardDetails.Tables[0].Columns) {
        html.Append("<td>");
        html.Append(row[column.ColumnName]);
        html.Append("</td>");
    }
    html.Append("</tr>");
}
//Table end.
html.Append("</table>");