2017-10-27 6 views
0

SQL 데이터베이스에서 일부 열을 가져 와서 바운드 열이있는 Gridview를 채우는 데 사용하고 있습니다. 일부 열에는 날짜 항목이 있습니다.모든 행을 변경하지 않고 바운드 열의 셀에서 텍스트의 서식을 지정할 수있는 방법

저는 열의 각 셀을 살펴보고 오늘 날짜에 대해 입력 된 날짜를 테스트하려고합니다. 날짜가 일치하면 셀 텍스트에 "완료"가 표시되고, 그렇지 않으면 "완료되지 않음"으로 읽혀 야합니다.

내가 겪고있는 걸림돌은 일치하는지 테스트 할 때 else의 문장을 변경할 때 모든 셀이 변경된다는 것입니다. 나는 명백하게 if를 시도했다. else if는 물론 테스트의 순서를 뒤집었다. 나의 초기 생각은 셀이 원하는대로 변경되었다는 것이지만 두 번째 테스트에서 각 행은 다시 반복되지만 모든 것이 foreach 루프 내에 있습니다.

위의 결과는 두 번째 열의 모든 셀 == 심지어 오늘 날짜로, "완료되지 않음"하지만 다른 문이 제거 될 때, 오늘날의 항목의 쇼 "완료한다는 것입니다

protected void equipmentGV_RowDataBound(object sender, GridViewRowEventArgs e) 
 
    { 
 
    
 
     foreach (GridViewRow row in equipmentGV.Rows) 
 
     { 
 

 
      if (row.Cells[1].Text == DateTime.Today.ToString()) 
 
      { 
 
       row.Cells[1].Text = "Complete"; 
 
      } 
 
      else { row.Cells[1].Text = "Not Complete"; } 
 
     }
" 바라는대로.

+1

매번 모든 행을 반복 할 필요는 없습니다. e.row는 방금 바인딩 된 행을 포함합니다. 따라서 "for"부분을 제거 할 수 있습니다. 나는 그것을 고칠 수 있는지 모르겠지만 코드가 더 빨리 실행됩니다. – theGleep

+0

'for'가 행마다 실행되기 때문에 첫 번째 행에서 오늘의 행을 모두 ""Complete "'로 설정 한 다음 두 번째 행은 더 이상 오늘과 일치하지 않으므로 모든 행을''완료되지 않음 ''으로 설정합니다. 'for'를 제거하십시오. – NetMage

답변

0

theGleep에서 아래의 대답은 참으로

는 "당신은 할 때마다 모든 행을 반복 할 필요가 없습니다. e.row 그냥 바인딩 된 행을 포함합니다. 당신이를 제거 할 수 있도록"내 문제가 해결 되었습니까 "부분을 수정하면 문제가 해결 될지 모르겠지만 코드가 더 빨리 실행됩니다 :)"