2008-11-24 37 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