2013-07-02 2 views
0

여분의 행으로 인해 그리드 뷰 행 수가 잘못되었지만 GridView가 추가 헤더 행을 갖도록 수정했습니다.gridview에 헤더 행을 추가하면 마지막 항목 행을 저장할 수 없습니다.

기본적으로 Gridview를 저장하려고 할 때 마지막 항목 행을 인식하지 못합니다. 현재 테스트에는 5 개의 아이템 라인이 있지만 그 중 4 개만 저장됩니다.

추가 헤더 라인 작성에 대한 나의 코드 : 내가 저장거야 때 행을, 그럼 루프를

 public void GetMultiRowHeader(GridViewRowEventArgs e, SortedList GetCels) 
    { 
     GridViewRow row; 
     IDictionaryEnumerator enumCels = GetCels.GetEnumerator(); 

     row = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal); 
     while (enumCels.MoveNext()) 
     { 
     string[] count = enumCels.Value.ToString().Split(Convert.ToChar(",")); 
     TableCell cell = new TableCell(); 
     cell.RowSpan = Convert.ToInt16(count[2].ToString()); 
     cell.ColumnSpan = Convert.ToInt16(count[1].ToString()); 
     cell.Controls.Add(new LiteralControl(count[0].ToString())); 
     cell.HorizontalAlign = HorizontalAlign.Center; 
     row.Cells.Add(cell); 
     } 

     e.Row.Parent.Controls.AddAt(0, row); 
    } 

:

protected void gvStatusReport_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     // This grid has multiple rows, fake the top row. 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
     SortedList FormatCells = new SortedList(); 
     FormatCells.Add("1", ",6,1"); 
     FormatCells.Add("2", "Time Spent,7,1"); 
     FormatCells.Add("3", "Total,2,1"); 
     FormatCells.Add("4", ",6,1"); 

     GetMultiRowHeader(e, FormatCells); 
     } 
    } 

기능은 새 행을 만들 수를 :

int totalRows = gvStatusReport.Rows.Count; 

     for (int rowNumber = 0; rowNumber < totalRows; rowNumber++) 
     { 

그러나 첫 번째 줄에는 항목 행에있는 열이 하나도없는 것처럼 보입니다. 마지막 줄이 나타나지 않습니다.

제 문제는 추가 헤더 줄이 필요하지만이를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

나는 다음과 같은 코드를 사용하여이 문제를 해결하기 위해 관리했습니다 : 나는 그러나 대신 마지막 레코드를 저장하지 않는이를 시도했습니다

protected void gvStatusReport_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
     GridView HeaderGrid = (GridView)sender; 
     GridViewRow HeaderGridRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); 
     TableCell HeaderCell = new TableCell(); 
     HeaderCell.ColumnSpan = 6; 
     HeaderGridRow.Cells.Add(HeaderCell); 

     HeaderCell = new TableCell(); 
     HeaderCell.Text = "Time Spent"; 
     HeaderCell.ColumnSpan = 7; 
     HeaderGridRow.Cells.Add(HeaderCell); 

     HeaderCell = new TableCell(); 
     HeaderCell.Text = "Total"; 
     HeaderCell.ColumnSpan = 2; 
     HeaderGridRow.Cells.Add(HeaderCell); 

     HeaderCell = new TableCell(); 
     HeaderCell.ColumnSpan = 6; 
     HeaderGridRow.Cells.Add(HeaderCell); 

     gvStatusReport.Controls[0].Controls.AddAt(0, HeaderGridRow); 
     } 
    } 
0

내가이 작업 기억 그리고 난 당신이 GridView.Controls[0] as Table를 얻을 수있는이

처럼 GridView.Controls에 추가 할 수 있다고 생각합니다 (전용 데이터 바인딩 후 작동하지만 귀하의 경우 확인을해야) 다음 표에 추가 행 컬렉션 Table.Rows.Add(myrow)

+0

을, 지금까지의 모든 결과를 하나의 이동 행을 완성한 다음 데이터를 엉망으로 만든다. – Lex

관련 문제