3

次のようないくつかの列を持つGridViewがあるとします。

| フー| バー| 合計|

スタイルシートを使用して、交互の行を水色と白などの異なる色にします。

特定の列を別の色で交互にする良い方法はありますか?たとえば、大きなグリッドで注目を集めるために、[合計]列を中程度の赤と明るい赤で交互に表示したい場合があります。

ところで、私はあなたがプログラムでセルの色を変えることができることを知っています。可能であればCSSに固執したいのですが、私のスタイルはすべて1か所にまとめられています。また、イベントハンドラー内にいるときに、交互に並んでいるかどうかを簡単に判断する方法もわかりません。

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 に関する同じ質問を検索しているときに、これを見つけましListViewGridView。そこで、答えは、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));
    }
}

これをうまく機能させるには、いくつかのポイントを選択する必要があります。これらはすべて、彼女のブログ投稿で説明されています。

助けにならないことの 1 つは、これが行に対してのみ機能することです。列は常に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

ここで 2 つの接線に出ます...

PS 「また、イベント ハンドラー内にいるときに交互に並んでいるかどうかを簡単に判断する方法がわかりません。」

Row.RowState == RowState.Alternating

また、いつでも ASP.NET の適切なセルに CssClass を設定し、css でそのクラスを定義できます。

于 2008-11-24T19:39:38.487 に答える