2014-04-17 2 views
1

RESTful 웹 서비스를 사용하고 있으며 gridview에 추가하려는 모든 개체의 목록이 있습니다. DataTable의 각 행에 추가 할 때 결과는 각 행마다 동일합니다. 내가 뭘 잘못하고 있는지 확실하지 않니?각 행에 대해 gridview에 동일한 값이 추가되었습니다.

protected void ButtonSearch_Click(object sender, EventArgs e) 
    { 
     Results trackResults = (Results)Session["Result"]; 
     foreach (Tracks t in trackResults.results) 
     { 

      //create datatable and columns, 
      DataTable table = new DataTable(); 

      table.Columns.Add("Artist Name"); 
      table.Columns.Add("Collection Name"); 
      table.Columns.Add("Track Name"); 
      table.Columns.Add("Artwork"); 
      table.Columns.Add("Track Price"); 
      table.Columns.Add("Release Date"); 
      table.Columns.Add("Genre"); 



      for (int i = 0; i < trackResults.results.Count; i++) 
      { 
       DataRow dr1 = table.NewRow(); 
       dr1["Artist Name"] = t.artistName; 
       dr1["Collection Name"] = t.collectionName; 
       dr1["Track Name"] = t.trackName; 
       dr1["Artwork"] = t.artworkUrl30; 
       dr1["Track Price"] = t.trackPrice; 
       dr1["Release Date"] = t.releaseDate; 
       dr1["Genre"] = t.primaryGenreName; 
       table.Rows.Add(dr1); 

      } 
      GridView1.DataSource = table; 
      GridView1.DataBind(); 
+0

어디 foreach 루프 끝입니까? 넣기 전에 "GridView1.DataSource = table;" –

답변

0

초기화하는 방법을 변경해야하는 것처럼 보입니다. 지금은 trackResults.results에 각 레코드에 대한 새 테이블 개체를 만든 다음 각 반복에서 바인드 그리드에서 만듭니다.

protected void ButtonSearch_Click(object sender, EventArgs e) 
{ 
    Results trackResults = (Results)Session["Result"]; 

    //create datatable and columns, 
    DataTable table = new DataTable(); 
    table.Columns.Add("Artist Name"); 
    table.Columns.Add("Collection Name"); 
    table.Columns.Add("Track Name"); 
    table.Columns.Add("Artwork"); 
    table.Columns.Add("Track Price"); 
    table.Columns.Add("Release Date"); 
    table.Columns.Add("Genre"); 

    foreach (Tracks t in trackResults.results) 
    { 
     DataRow dr1 = table.NewRow(); 
     dr1["Artist Name"] = t.artistName; 
     dr1["Collection Name"] = t.collectionName; 
     dr1["Track Name"] = t.trackName; 
     dr1["Artwork"] = t.artworkUrl30; 
     dr1["Track Price"] = t.trackPrice; 
     dr1["Release Date"] = t.releaseDate; 
     dr1["Genre"] = t.primaryGenreName; 
     table.Rows.Add(dr1); 
    } 

    GridView1.DataSource = table; 
    GridView1.DataBind(); 
+0

고마워요! 그랬어! – user3487108

+0

@ user3487108-하지만 다른 답변을 수락했습니다. – afzalulh

1

1- foreach 루프에서 datatable을 만들 필요가 없으며 for 루프를 작성할 필요가 없습니다. foreach 루프가 종료 된 DataGridView에

넌 열을 생성하고 테이블에 행을 추가 한 후 외부 루프 데이터 테이블과 열을 생성한다 2-

-3- 할당 테이블.

아래 코드를 편집했지만 컴파일되지 않았습니다. 사용해보기

protected void ButtonSearch_Click(object sender, EventArgs e) 
{ 
    Results trackResults = (Results)Session["Result"]; 

    //create datatable and columns, 
     DataTable table = new DataTable(); 

     table.Columns.Add("Artist Name"); 
     table.Columns.Add("Collection Name"); 
     table.Columns.Add("Track Name"); 
     table.Columns.Add("Artwork"); 
     table.Columns.Add("Track Price"); 
     table.Columns.Add("Release Date"); 
     table.Columns.Add("Genre"); 

    foreach (Tracks t in trackResults.results) 
    { 

      DataRow dr1 = table.NewRow(); 
      dr1["Artist Name"] = t.artistName; 
      dr1["Collection Name"] = t.collectionName; 
      dr1["Track Name"] = t.trackName; 
      dr1["Artwork"] = t.artworkUrl30; 
      dr1["Track Price"] = t.trackPrice; 
      dr1["Release Date"] = t.releaseDate; 
      dr1["Genre"] = t.primaryGenreName; 
      table.Rows.Add(dr1); 

     } 
     GridView1.DataSource = table; 
     GridView1.DataBind(); 
} 
관련 문제