2011-01-13 9 views

答えて

5

このようなものは動作するはずです。

分離コード:

private int RowCount { get; set; } 

protected void myGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    switch(e.Row.RowType) 
    { 
     case DataControLRowType.Header: 
      { 
       RowCount = 0; 
      } 
      break; 
     case DataControlRowType.DataRow: 
      { 
       RowCount += 1; 
       if (RowCount == 3) 
       { 
        e.Row.CssClass = "BorderRow"; 
        RowCount = 0; 
       } 
      } 
      break; 
    } 
} 

のCss:

tr.BorderRow td { border-bottom: 3px solid #000000; } 
+0

CSSまたはjQueryでこれを行う方法はありませんか?私は本当に私のアプリケーションのすべてのグリッドを変更する必要がありますか? –

+0

javascriptを使用してその可能性がありますが、ヘッダー、フッターまたはページング行を使って何かを行っていると、ジェネリックなjavascriptソリューションが難しくなります。任意のJSライブラリ(jQuery、プロトタイプなど)を使用していますか? – chprpipr

+0

これを簡単に達成できるCSSセレクタがありますが、広くサポートされていないhttp://css-tricks.com/how-nth-child-works/ – chprpipr

1

ここでjQueryの例だ:

$(document).ready(function() { 
    $("table.MarkRows tr:nth-child(3)").addClass("BorderRow"); 
}); 

は各<table class="MarkRows">または<asp:GridView CssClass="MarkRows" />が動作するはずですが、あなたは私がで概説したCSSルールを持っていると仮定すると、私の.NETソリューション。ここchprpiprの答えに基づいて

+0

これはあなたのために働いたかどうかの任意の単語? – chprpipr

2

は、モジュロとe.Row.RowIndexを使用して、よりコンパクトなソリューションです。

if (e.Row.RowType = DataControlRowType.DataRow) 
{ 
    if ((e.Row.RowIndex + 1) % 3 == 0) 
    { 
     e.Row.CssClass = "BorderRow"; 
    } 
} 

例えば「%5」で「%を3」置き換えることによって、あなたは、追加しますBorderRow CSSクラスは3行ではなく5行ごとに表示されます。

関連する問題