2013-04-22 3 views
15

일부 열에 병합 된 행이있는 표보기로 데이터를 표시해야합니다. enter image description here병합 된 셀이있는 GridView

을 그리고 원래 데이터는 데이터베이스에서 제공되는 형식으로 아래 : 아래에 정의 된 형식의 그리드 뷰를 준비 도와주세요 enter image description here

동적으로이 작업을 수행하기위한 최선의 방법을 찾아 도와주세요 및 효율적으로

+0

당신의 코드 .. 도와 –

답변

18

RowSpan을 사용해야합니다.

것은 그것을 위해 다음 코드를 참조하십시오

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에 :

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

질문에 화보 예를 들어 :

http://marss.co.ua/MergingCellsInGridView.aspx

+0

감사를 표시 위에 기록 된 외부 forloop 내에서 또 다른 "forloop"를 사용할 수 있습니다,이 코드는 정확히 작동 내 요구 사항에 따라. – himanshu

+0

언제나 환영합니다. – Freelancer

+0

한 가지 더 질문해야 할 것은이 셀을 격자보기의 모든 열이 아닌 수정 열에 병합하도록 제한하는 방법이 있는지 여부입니다. 예를 들어 필자가 제공 한 샘플 테이블 에서처럼 셀 병합이 설명 필드 열에 적용되지 않도록 제한을 구현해야합니다. – 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로 첫 번째 열에 병합 –

관련 문제