假设您的GridView有几列:在GridView中交错行/列颜色
| Foo |酒吧|总计|
并且您使用样式表使不同颜色的交替行变为浅蓝色和白色。
有没有一种很好的方法使一个特定的列交替使用不同的颜色?例如,我可能希望“总计”列在中等和浅红色之间交替,以便在大型网格中引起注意。
顺便说一句,我知道你可以以编程方式更改单元格的颜色。如果可能的话,我想坚持CSS,所以我所有的风格都在同一个地方。当我在事件处理程序中时,我也看不到一个简单的方法来判断我是否处于交替行。
假设您的GridView有几列:在GridView中交错行/列颜色
| Foo |酒吧|总计|
并且您使用样式表使不同颜色的交替行变为浅蓝色和白色。
有没有一种很好的方法使一个特定的列交替使用不同的颜色?例如,我可能希望“总计”列在中等和浅红色之间交替,以便在大型网格中引起注意。
顺便说一句,我知道你可以以编程方式更改单元格的颜色。如果可能的话,我想坚持CSS,所以我所有的风格都在同一个地方。当我在事件处理程序中时,我也看不到一个简单的方法来判断我是否处于交替行。
如果你使用jQuery,你可以很容易地做到这一点。
$("table#myTable col:odd").css("background-color:#ffe");
的:odd
选择是不是在最新的浏览器可用,但jQuery的今天把它交给我们。
对于行,可以使用内置的AlternatingRowStyle元素来完成。
编辑:发现这样的一些不同的方式一个很好的资源:http://css-discuss.incutio.com/?page=StylingColumns
除了Ben's suggestion,马特Berseth也有如何使用GridViewControlExtender以及做列侧翻高亮相当不错的演示其是相当不错的:
还有如何提高你在他的网站的GridView以及一吨的其他的东西:
http://mattberseth.com/blog/gridview/
不少例子使用ASP.NET Ajax和Ajax控件工具包,但它们并不太难转换为轻量级的jQuery等价物。
在这里的2个切线处关闭...
P.S. “当我进入事件处理程序时,也看不到一个简单的方法来判断我是否处于交替行。”
Row.RowState == RowState.Alternating
而且,你总是可以设置在ASP.NET相应的单元格中的CssClass,然后在你的CSS定义类。
我在搜索关于WPF ListView
的GridView
的相同问题时发现此问题。在那里,答案是使用由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
。