假設您的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
。