2013-07-08 2 views
0

이 것은 작동하지 않습니다 : 그것은 무엇하고있어하면 데이터 테이블의 첫 번째 열에 텍스트 "System.Web.UI.WebControls.GridViewRow"을두고있다DataTable에 gridView 행을 추가하려면 어떻게해야합니까?

var originalFinalShowsTable = Session["finalShowsTable"] as DataTable; 

DataTable finalShowsTable = new DataTable(); 

finalShowsTable = originalFinalShowsTable.Clone(); 

foreach (GridViewRow gvr in gvShows.Rows) 
{ 
    if (gvr.RowType == DataControlRowType.DataRow) 
    { 
     if (((CheckBox) gvr.FindControl("cbSelect")).Checked) 
     { 
       finalShowsTable.Rows.Add(gvr); 
     } 
    } 
} 

.

답변

2

이 시도 :

DataTable finalShowsTable = new DataTable(); 

    finalShowsTable = originalFinalShowsTable.Clone(); 

    foreach (GridViewRow gvr in gvShows.Rows) 
    { 
     if (gvr.RowType == DataControlRowType.DataRow) 
     { 
      if (((CheckBox) gvr.FindControl("cbSelect")).Checked) 
      { 
        DataRow dr= finalShowsTable.NewRow(); 
        for (int i = 0; i < gvr.Cells.Count - 1; i++) 
        { 
         dr[i] = row.Cells[i].Text; 
        } 

        finalShowsTable.Rows.Add(dr); 
      } 
     } 
    } 
+0

색인 범위의 문제를 밖으로와 FOR 루프. gvr.Cells.Count를 할 수 없습니다. 왜냐하면 gridView에서 모든 것을 가져 오지 않기 때문입니다. 나는 선택된 것을 잡는 중이다. –

+0

gvr 셀 개수는 현재 행의 셀을 참조합니다. gridview.ry에서 추가 열 (체크 박스)이 있으므로 범위 예외를 벗어난 인덱스를 얻고 있다고 생각합니다. dr [i] = row.Cells [i + 1] .본문; 데이터 테이블과 그리드의 열 수를 비교하십시오. – Karthik

+0

실제로 트릭을 수행 한 gvr.Cells.Count - 1을 수행해야했습니다. 감사! –

관련 문제