3

假设您有一个 GridView,其中包含几列,例如:

| 福 | 酒吧 | 总计 |

并且您使用样式表使交替的行具有不同的颜色,例如浅蓝色和白色。

有没有一种好方法可以让特定的列以不同的颜色交替出现?例如,我可能希望 Total 列以中红色和浅红色交替显示,以在大网格中引起注意。

顺便说一句,我知道您可以以编程方式更改单元格的颜色。但是,如果可能的话,我想坚持使用 CSS,所以我所有的样式都在一个地方。当我在事件处理程序中时,我也看不到一种简单的方法来判断我是否处于交替行中。

4

4 回答 4

4

如果你使用 jQuery,你可以很容易地做到这一点。

$("table#myTable col:odd").css("background-color:#ffe");

选择:odd器在大多数当前浏览器中不可用,但 jQuery 今天为我们提供了它。

对于行,您可以使用内置的 AlternatingRowStyle 元素来完成。

编辑:为一些不同的方法找到了一个很好的资源:http ://css-discuss.incutio.com/?page=StylingColumns

于 2008-11-24T19:14:34.513 回答
0

我在搜索有关 WPF 的相同问题时发现了这ListView一点GridView。在那里,答案是使用Bea Costa 描述的StyleSelector这样一个:

public class ListViewItemStyleSelector : StyleSelector
{
    private int i = 0;
    public override Style SelectStyle(object item, DependencyObject container)
    {
        // makes sure the first item always gets the first style, even when restyling
        ItemsControl ic = ItemsControl.ItemsControlFromItemContainer(container);
        if (item == ic.Items[0])
        {
            i = 0;
        }
        string styleKey;
        if (i % 2 == 0)
        {
            styleKey = “ListViewItemStyle1″;
        }
        else
        {
            styleKey = “ListViewItemStyle2″;
        }
        i++;
        return (Style)(ic.FindResource(styleKey));
    }
}

有一些 nits 可以让这个工作非常好,所有这些都在她的博客文章中进行了描述。

无法帮助的一件事是,这仅适用于行。列似乎总是必须使用CellTemplate/ Style

于 2008-12-10T09:03:18.517 回答
0

除了Ben 的建议之外,Matt Berseth 也有一个很好的演示,演示如何使用 GridViewControlExtender 对列进行翻转突出显示,这非常好:

http://mattberseth2.com/demo/Default.aspx?Name=GridViewControlExtender+II+-+Header+Cell+MouseOver+Styles+and+a+Few+More+Live+Examples&Filter=All

还有很多其他关于如何在他的网站上增强 GridView 的内容:

http://mattberseth.com/blog/gridview/

相当多的示例使用 ASP.NET Ajax 和 Ajax Control Toolkit 位,但它们并不难移植到轻量级 jQuery 等效项。

于 2008-11-24T19:33:58.857 回答
0

在这里走两条切线...

PS“当我在事件处理程序中时,也没有一种简单的方法来判断我是否处于交替行中。”

Row.RowState == RowState.Alternating

此外,您始终可以在 ASP.NET 中的适当单元格上设置 CssClass,然后在您的 css 中定义该类。

于 2008-11-24T19:39:38.487 回答