2008-11-24 59 views
3

假设您的GridView有几列:在GridView中交错行/列颜色

| Foo |酒吧|总计|

并且您使用样式表使不同颜色的交替行变为浅蓝色和白色。

有没有一种很好的方法使一个特定的列交替使用不同的颜色?例如,我可能希望“总计”列在中等和浅红色之间交替,以便在大型网格中引起注意。

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

回答

4

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

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

:odd选择是不是在最新的浏览器可用,但jQuery的今天把它交给我们。

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

编辑:发现这样的一些不同的方式一个很好的资源:http://css-discuss.incutio.com/?page=StylingColumns

0

除了Ben's suggestion,马特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控件工具包,但它们并不太难转换为轻量级的jQuery等价物。

0

在这里的2个切线处关闭...

P.S. “当我进入事件处理程序时,也看不到一个简单的方法来判断我是否处于交替行。”

Row.RowState == RowState.Alternating 

而且,你总是可以设置在ASP.NET相应的单元格中的CssClass,然后在你的CSS定义类。

0

我在搜索关于WPF ListViewGridView的相同问题时发现此问题。在那里,答案是使用由BEA科斯塔描述的StyleSelector like this one

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)); 
    } 
} 

有一些尼特挑来得到这个工作真的很好,这是在她的博客中描述的所有。

有一件事没有帮助,是这只适用于行。列似乎总是必须使用CellTemplate/Style