2013-04-22 8 views
15

グリッドビューでデータを表示する必要があります。 enter image description hereGridView with merged cells

、元のデータは、データベースから来たフォーマットを下回っている:以下に定義された形式でグリッドビューを準備するために私を助けてください enter image description here

動的にこの作業を行うための最善の方法を見つけるために私を助けてくださいと効率的に

+0

の上に書かれた外forloop内の別の「forloop」を使用することができますが、あなたのコードを表示します。..あなたの助けのため –

答えて

18

RowSpanを使用する必要があります。

:当該

https://sites.google.com/site/learning6329/asp-net/gridview-merge-cells

画報例として:

protected void GridView1_DataBound1(object sender, EventArgs e) 
{ 
    for (int rowIndex = GridView1.Rows.Count - 2; 
            rowIndex >= 0; rowIndex--) 
    { 
    GridViewRow gvRow = GridView1.Rows[rowIndex]; 
    GridViewRow gvPreviousRow = GridView1.Rows[rowIndex + 1]; 
    for (int cellCount = 0; cellCount < gvRow.Cells.Count; 
                cellCount++) 
    { 
    if (gvRow.Cells[cellCount].Text == 
          gvPreviousRow.Cells[cellCount].Text) 
    { 
     if (gvPreviousRow.Cells[cellCount].RowSpan < 2) 
     { 
     gvRow.Cells[cellCount].RowSpan = 2; 
     } 
     else 
     { 
     gvRow.Cells[cellCount].RowSpan = 
      gvPreviousRow.Cells[cellCount].RowSpan + 1; 
     } 
     gvPreviousRow.Cells[cellCount].Visible = false; 
    } 
    } 
} 

Referance:

はそれのために以下のコードを参照してください

+0

おかげで、このコードは正確に動作します私の要求に従って – himanshu

+0

いつでもようこそ。 – Freelancer

+0

私が尋ねる必要があるもう1つは、グリッドビューのすべての列ではなく、修正列のこのセルマージを制限する方法があるかどうかです。例えば私が問題にしてくれたサンプルテーブルのように、セルマージがRemarksフィールドの列に適用されないように制限を実装します。 – himanshu

1

最初の列の行セルをマージする最も簡単な方法は次のとおりです。 Forループは常に逆順に反復されることに注意してください。

protected void GridView1_DataBound(object sender, EventArgs e) 
    { 
     int RowSpan = 2; 
     for (int i = GridView1.Rows.Count-2; i >=0 ;i--) 
     { 
      GridViewRow currRow = GridView1.Rows[i]; 
      GridViewRow prevRow = GridView1.Rows[i+1]; 
      if (currRow.Cells[0].Text == prevRow.Cells[0].Text) 
      { 
       currRow.Cells[0].RowSpan = RowSpan; 
       prevRow.Cells[0].Visible = false; 
       RowSpan += 1; 
      } 
      else 
       RowSpan = 2; 
     } 
    } 

あなたが同様にすべての列の行のセルをマージしたい場合は、あなたが

+0

このソリューションはそのまま私にとって完璧に機能し、3行を1列目に1にマージします –

関連する問題